> ## Documentation Index
> Fetch the complete documentation index at: https://typecast.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 캐릭터 목록 조회

> 향상된 메타데이터 및 필터링 기능을 갖춘 사용 가능한 모든 캐릭터를 조회합니다(V2).

이 엔드포인트는 모델별로 그룹화된 감정 지원과 성별, 연령대, 사용 사례를 포함한 추가 메타데이터가 있는 향상된 캐릭터 목록을 반환합니다. 각 캐릭터는 해당 감정 세트와 함께 여러 모델을 지원할 수 있습니다.

**주요 기능:**
- **모델 그룹화**: 각 캐릭터에는 지원되는 모든 TTS 모델과 사용 가능한 감정을 보여주는 `models` 배열이 포함됩니다
- **향상된 메타데이터**: 성별(남성/여성), 연령대(어린이/청소년/청년/중년/노년), 사용 사례 포함
- **고급 필터링**: 모델, 성별, 연령, 사용 사례로 필터링하여 특정 요구사항에 맞는 캐릭터 찾기

**사용 사례:**
- 다양한 필터가 있는 캐릭터 선택 UI
- 특정 콘텐츠 유형에 적합한 캐릭터 찾기(예: 광고, 오디오북, 교육)
- 각 모델 버전에서 사용 가능한 감정 탐색



## OpenAPI

````yaml /ko/api-reference/openapi.json get /v2/voices
openapi: 3.1.0
info:
  title: Typecast API
  version: 0.1.2
  x-logo:
    url: https://typecast.ai/_ipx/_/image/logo/tc_logo.webp
servers:
  - url: https://api.typecast.ai
    description: 프로덕션 서버
security:
  - ApiKeyAuth: []
paths:
  /v2/voices:
    get:
      tags:
        - Voices
      summary: 캐릭터 목록 조회
      description: >-
        향상된 메타데이터 및 필터링 기능을 갖춘 사용 가능한 모든 캐릭터를 조회합니다(V2).


        이 엔드포인트는 모델별로 그룹화된 감정 지원과 성별, 연령대, 사용 사례를 포함한 추가 메타데이터가 있는 향상된 캐릭터 목록을
        반환합니다. 각 캐릭터는 해당 감정 세트와 함께 여러 모델을 지원할 수 있습니다.


        **주요 기능:**

        - **모델 그룹화**: 각 캐릭터에는 지원되는 모든 TTS 모델과 사용 가능한 감정을 보여주는 `models` 배열이 포함됩니다

        - **향상된 메타데이터**: 성별(남성/여성), 연령대(어린이/청소년/청년/중년/노년), 사용 사례 포함

        - **고급 필터링**: 모델, 성별, 연령, 사용 사례로 필터링하여 특정 요구사항에 맞는 캐릭터 찾기


        **사용 사례:**

        - 다양한 필터가 있는 캐릭터 선택 UI

        - 특정 콘텐츠 유형에 적합한 캐릭터 찾기(예: 광고, 오디오북, 교육)

        - 각 모델 버전에서 사용 가능한 감정 탐색
      operationId: get_voices_v2_v2_voices_get
      parameters:
        - name: model
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/TTSModel'
          description: >-
            캐릭터 모델로 필터링(ssfm-v21 또는 ssfm-v30). 지정된 모델을 지원하는 캐릭터를 반환합니다. 선택 사항 -
            제공하지 않으면 모든 모델의 캐릭터를 반환합니다.
        - name: gender
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/GenderEnum'
          description: >-
            성별로 필터링(남성 또는 여성). 지정된 성별과 일치하는 캐릭터를 반환합니다. 선택 사항 - 제공하지 않으면 모든 성별의
            캐릭터를 반환합니다.
        - name: age
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/AgeEnum'
          description: >-
            연령대로 필터링(어린이, 청소년, 청년, 중년, 노년). 지정된 연령대와 일치하는 캐릭터를 반환합니다. 선택 사항 -
            제공하지 않으면 모든 연령의 캐릭터를 반환합니다.
        - name: use_cases
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/UseCasesEnum'
          description: >-
            사용 사례 카테고리로 필터링. 지정된 사용 사례로 태그된 캐릭터를 반환합니다(TikTok/Reels/Shorts,
            Game, Audiobook/Storytelling 등). 선택 사항 - 제공하지 않으면 사용 사례에 관계없이 모든
            캐릭터를 반환합니다.
        - name: voice_type
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/VoiceType'
          description: >-
            캐릭터 타입으로 필터링 (`original` 또는 `custom`). 선택 사항 - 제공하지 않으면 모든 타입의 캐릭터를
            반환합니다.
      responses:
        '200':
          description: Success - Returns list of voice models with enhanced metadata
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VoiceV2'
                title: Response Get Voices
              example:
                - voice_id: tc_60e5426de8b95f1d3000d7b5
                  voice_name: Olivia
                  models:
                    - version: ssfm-v30
                      emotions:
                        - normal
                        - happy
                        - sad
                        - angry
                        - whisper
                        - toneup
                        - tonedown
                    - version: ssfm-v21
                      emotions:
                        - normal
                        - happy
                        - sad
                        - angry
                  gender: female
                  age: young_adult
                  use_cases:
                    - Audiobook
                    - E-learning
                    - Ads
                  voice_type: original
        '401':
          description: Unauthorized - Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                detail: Invalid API key
        '422':
          description: Validation Error - Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                detail: Invalid request format
      x-codeSamples:
        - lang: cURL
          label: cURL
          source: |
            curl --request GET \
              --url 'https://api.typecast.ai/v2/voices?model=ssfm-v30&gender=female&age=young_adult' \
              --header 'X-API-KEY: <api-key>'
        - lang: C#
          label: C# (HttpClient)
          source: >
            using System;

            using System.Net.Http;

            using System.Threading.Tasks;


            var client = new HttpClient();

            client.DefaultRequestHeaders.Add("X-API-KEY", "<api-key>");


            var response = await
            client.GetAsync("https://api.typecast.ai/v2/voices?model=ssfm-v30&gender=female&age=young_adult");


            if (response.IsSuccessStatusCode)

            {
                var content = await response.Content.ReadAsStringAsync();
                Console.WriteLine(content);
            }
        - lang: Kotlin
          label: Kotlin (OkHttp)
          source: |
            import okhttp3.OkHttpClient
            import okhttp3.Request

            val client = OkHttpClient()

            val request = Request.Builder()
                .url("https://api.typecast.ai/v2/voices?model=ssfm-v30&gender=female&age=young_adult")
                .addHeader("X-API-KEY", "<api-key>")
                .get()
                .build()

            client.newCall(request).execute().use { response ->
                if (response.isSuccessful) {
                    println(response.body?.string())
                }
            }
        - lang: C++
          label: C++ (libcurl)
          source: >
            #include <curl/curl.h>

            #include <string>

            #include <iostream>


            size_t WriteCallback(void* contents, size_t size, size_t nmemb,
            void* userp) {
                ((std::string*)userp)->append((char*)contents, size * nmemb);
                return size * nmemb;
            }


            int main() {
                CURL* curl = curl_easy_init();
                if(curl) {
                    std::string readBuffer;
                    struct curl_slist* headers = NULL;

                    headers = curl_slist_append(headers, "X-API-KEY: <api-key>");

                    curl_easy_setopt(curl, CURLOPT_URL, "https://api.typecast.ai/v2/voices?model=ssfm-v30&gender=female&age=young_adult");
                    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
                    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
                    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

                    CURLcode res = curl_easy_perform(curl);
                    if(res == CURLE_OK) {
                        std::cout << readBuffer << std::endl;
                    }

                    curl_slist_free_all(headers);
                    curl_easy_cleanup(curl);
                }
                return 0;
            }
        - lang: C
          label: C (libcurl)
          source: >
            #include <stdio.h>

            #include <stdlib.h>

            #include <string.h>

            #include <curl/curl.h>


            typedef struct {
                char* data;
                size_t size;
            } MemoryStruct;


            size_t WriteMemoryCallback(void* contents, size_t size, size_t
            nmemb, void* userp) {
                size_t realsize = size * nmemb;
                MemoryStruct* mem = (MemoryStruct*)userp;

                char* ptr = realloc(mem->data, mem->size + realsize + 1);
                if(!ptr) return 0;

                mem->data = ptr;
                memcpy(&(mem->data[mem->size]), contents, realsize);
                mem->size += realsize;
                mem->data[mem->size] = 0;

                return realsize;
            }


            int main(void) {
                CURL* curl;
                CURLcode res;
                MemoryStruct chunk = {NULL, 0};

                curl_global_init(CURL_GLOBAL_ALL);
                curl = curl_easy_init();

                if(curl) {
                    struct curl_slist* headers = NULL;
                    headers = curl_slist_append(headers, "X-API-KEY: <api-key>");

                    curl_easy_setopt(curl, CURLOPT_URL, "https://api.typecast.ai/v2/voices?model=ssfm-v30&gender=female&age=young_adult");
                    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
                    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
                    curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&chunk);

                    res = curl_easy_perform(curl);

                    if(res == CURLE_OK) {
                        printf("%s\n", chunk.data);
                    }

                    curl_slist_free_all(headers);
                    curl_easy_cleanup(curl);
                    free(chunk.data);
                }

                curl_global_cleanup();
                return 0;
            }
        - lang: Swift
          label: Swift (URLSession)
          source: >
            import Foundation


            let url = URL(string:
            "https://api.typecast.ai/v2/voices?model=ssfm-v30&gender=female&age=young_adult")!

            var request = URLRequest(url: url)

            request.httpMethod = "GET"

            request.setValue("<api-key>", forHTTPHeaderField: "X-API-KEY")


            let task = URLSession.shared.dataTask(with: request) { data,
            response, error in
                if let data = data, let jsonString = String(data: data, encoding: .utf8) {
                    print(jsonString)
                }
            }

            task.resume()
        - lang: Rust
          label: Rust (reqwest)
          source: |
            use reqwest;

            #[tokio::main]
            async fn main() -> Result<(), Box<dyn std::error::Error>> {
                let client = reqwest::Client::new();

                let response = client
                    .get("https://api.typecast.ai/v2/voices?model=ssfm-v30&gender=female&age=young_adult")
                    .header("X-API-KEY", "<api-key>")
                    .send()
                    .await?;

                if response.status().is_success() {
                    let body = response.text().await?;
                    println!("{}", body);
                }

                Ok(())
            }
components:
  schemas:
    TTSModel:
      type: string
      enum:
        - ssfm-v30
        - ssfm-v21
      title: TTSModel
      description: |
        음성 합성에 사용할 TTS 모델 버전. 다양한 모델은 다양한 기능과 품질 수준을 제공합니다.

        사용 가능한 모델:
        - **ssfm-v30**: 향상된 플로우와 추가 감정 프리셋이 있는 최신 모델(권장)
        - **ssfm-v21**: 검증된 신뢰성과 일관된 품질을 갖춘 안정적인 모델
    GenderEnum:
      type: string
      enum:
        - male
        - female
      title: GenderEnum
      description: |
        성별 분류 열거형 - 데이터베이스 값(한국어)을 API 값(영어)으로 변환합니다.

        사용 가능한 값:
        - **male**: 남성 캐릭터
        - **female**: 여성 캐릭터
    AgeEnum:
      type: string
      enum:
        - child
        - teenager
        - young_adult
        - middle_age
        - elder
      title: AgeEnum
      description: |
        연령대 분류 열거형 - 데이터베이스 값(한국어)을 API 값(영어)으로 변환합니다.

        사용 가능한 값:
        - **child**: 어린이 캐릭터(12세 미만)
        - **teenager**: 청소년 캐릭터(13-19세)
        - **young_adult**: 청년 캐릭터(20-35세)
        - **middle_age**: 중년 캐릭터(36-60세)
        - **elder**: 노년 캐릭터(60세 이상)
    UseCasesEnum:
      type: string
      enum:
        - Announcer
        - Anime
        - Audiobook
        - Conversational
        - Documentary
        - E-learning
        - Rapper
        - Game
        - Tiktok/Reels
        - News
        - Podcast
        - Voicemail
        - Ads
      description: >
        콘텐츠 유형 필터링을 위한 캐릭터 사용 사례 카테고리. 각 캐릭터는 특정 콘텐츠 유형에 대한 적합성을 나타내는 하나 이상의 사용
        사례로 태그됩니다.


        **사용 가능한 사용 사례:**

        - **Announcer**: 공공 발표 및 프레젠테이션

        - **Anime**: 애니메이션 및 캐릭터 음성

        - **Audiobook**: 장문 내레이션 및 스토리텔링

        - **Conversational**: 챗봇 및 대화형 AI

        - **Documentary**: 다큐멘터리 내레이션 및 해설

        - **E-learning**: 교육 콘텐츠 및 튜토리얼

        - **Rapper**: 랩 및 음악 퍼포먼스

        - **Game**: 비디오 게임 캐릭터 및 내레이션

        - **Tiktok/Reels**: SNS 숏츠

        - **News**: 뉴스 방송

        - **Podcast**: 방송 및 팟캐스트 제작

        - **Voicemail**: IVR 시스템 및 음성 비서

        - **Ads**: 광고 및 홍보 콘텐츠
    VoiceType:
      type: string
      enum:
        - original
        - custom
      title: VoiceType
      description: |-
        캐릭터 타입 분류.

        - `original` — 타입캐스트가 기본 제공하는 스톡 캐릭터로, 모든 계정에서 사용 가능합니다.
        - `custom` — 사용자가 본인의 샘플을 업로드하거나 클로닝해서 만든 캐릭터입니다.
    VoiceV2:
      type: object
      properties:
        voice_id:
          type: string
          title: Voice Id
          description: >-
            고유한 캐릭터 식별자. 기본 제공 캐릭터는 `tc_` prefix (예:
            `tc_60e5426de8b95f1d3000d7b5`), `POST /v1/voices/clone` 으로 만든 커스텀
            보이스는 `uc_` prefix 를 사용합니다. 본인이 소유한 `uc_` 보이스도 `/v2/voices` 응답에
            포함됩니다.
        voice_name:
          type: string
          title: Voice Name
          description: 사람이 읽을 수 있는 캐릭터 이름
        models:
          type: array
          items:
            $ref: '#/components/schemas/ModelInfo'
          title: Models
          description: >-
            사용 가능한 감정이 있는 지원되는 TTS 모델 목록(예: [{'version': 'ssfm-v21', 'emotions':
            ['happy', 'sad']}])
        gender:
          description: 캐릭터 성별 분류(남성/여성)
          anyOf:
            - $ref: '#/components/schemas/GenderEnum'
            - type: 'null'
        age:
          description: 캐릭터 연령대 분류(어린이/청소년/청년/중년/노년)
          anyOf:
            - $ref: '#/components/schemas/AgeEnum'
            - type: 'null'
        use_cases:
          type: array
          items:
            type: string
          title: Use Cases
          description: |
            이 캐릭터가 적합한 사용 사례 카테고리 목록

            ## 캐릭터 이름 참고

            `voice_name` 필드는 영문으로만 반환됩니다. 아래 목록에서 한국어 표기를 확인하실 수 있습니다.

            <details>
            <summary><strong>캐릭터 이름 목록 펼치기 (542개)</strong></summary>

            | 영어 | 한국어 | 영어 | 한국어 | 영어 | 한국어 |
            | --- | --- | --- | --- | --- | --- |
            | Aaron | 에런 | Inhye | 인혜 | Piljae | 필재 |
            | Abigail | 아비게일 | Inseong | 인성 | Pyeonghwa | 평화 |
            | Ae-ran | 애란 | Instructor Han | 한유격 교관 | Rachel | 레이첼 |
            | Ael | 아엘 | Insun | 인선 | Ravi | 라비 |
            | Agatha | 아가사 | Jabbaba | 자바바 | Rayeon | 라연 |
            | Aiden | 에이든 | Jack | 잭 | Rebecca | 레베카 |
            | Alena | 알레나 | Jack-o’-Lantern | 잭오랜턴 | Reporter Bona | 다보나 기자 |
            | Alex | 알렉스 | Jackson | 잭슨 | Reporter Catalina | 카탈리나 기자 |
            | Amber | 엠버 | Jaeho | 재호 | Reporter Jinsub | 송진섭 기자 |
            | Anchor Hwa | 김경화 앵커 | Jaehun | 재훈 | Reporter Kang | 강수정 기자 |
            | Angela | 안젤라 | Jaejun | 재준 | Reporter Lee | 이승주 기자 |
            | Anja | 안냐 | Jaekyung | 재경 | Reporter Parkchan | 박찬 기자 |
            | Annabelle the Ghost | 귀신 애나벨 | Jaesun | 재선 | Rex | 렉스 |
            | Annie | 애니 | JaeYi | 재이 | Riley | 라일리 |
            | April | 에이프릴 | Jaeyoung | 재영 | Risan Ji | 지리산 |
            | Arang | 아랑 | Jain | 자인 | Rita | 리타 |
            | Ari | 아리 | Jake | 제이크 | River | 리버 |
            | Arin | 아린 | Janet | 재닛 | Robert | 로버트 |
            | Athena | 아테나 | Jangho | 장호 | Robo | 로보 |
            | Audrey | 오드리 | Jangwoon | 장운 | Romi | 로미 |
            | Avery | 에이버리 | Jechan | 제찬 | Ron | 론 |
            | Avong | 아봉 | Jeff | 제프 | Roro | 로로 |
            | Azzi | 아찌 | Jenna | 제나 | Rowoon | 로운 |
            | Babilon | 바빌론 | Jennifer | 제니퍼 | Royce | 로이스 |
            | Bell | 벨 | Jeong Choi | 최정 | Rudolph | 루돌프 |
            | Ben | 벤 | Jeongah | 정아 | Ruri | 루리 |
            | Benny | 베니 | JeongJin | 정진 | Rusty | 러스티 |
            | Beri | 베리 | Jeongseob | 정섭 | Ryan | 라이언 |
            | Billie | 빌리 | Jerome | 제롬 | Ryueun | 류은 |
            | Bomi | 이보미 | Jewby | 쥬비 | Sabrina the Witch | 마녀 사브리나 |
            | Bonggyu | 봉규 | Jian | 지안 | Saeron | 새론 |
            | Bongman Kim | 김봉만 | Jicheol | 지철 | Salty Chan-gu | 삐뚤어진 찬구 |
            | Bono | 보노 | Jihee | 지희 | Samantha | 사만다 |
            | Bora | 보라 | Jihoon | 지훈 | Sammy | 새미 |
            | Brad | 브래드 | Jihyun | 지현 | Sangdo | 상도 |
            | Bruce | 브루스 | Jimmy | 지미 | Sanghoon | 상훈 |
            | Buddy | 버디 | Jin | 진 | Sangwoo | 상우 |
            | Bumsoo | 범수 | Jinhan | 진한 | Santa | 산타 |
            | Buttaguy | 빠다가이 | Jinhang Kim | 김진행 | Santa Claus | 산타클로스 |
            | Caitlyn | 케이틀린 | Jinhee | 진희 | Santa Reporter | VJ 싼타 |
            | Callan | 칼란 | Jinhyuk | 진혁 | Sara | 세라 |
            | Camila | 카밀라 | Jinseo | 진서 | Sean | 션 |
            | Captain Bill | 캡틴 빌 | Jinung | 진웅 | SeHee | 세희 |
            | Carl | 칼 | Jinwoo | 진우 | Seheon | 세헌 |
            | Carlos | 카를로스 | Jiwoo | 지우 | Sejin | 세진 |
            | Carol | 캐롤 | Jiyoon | 지윤 | Sena | 세나 |
            | Catherine | 캐서린 | Jiyoung | 지영 | Seohee | 서희 |
            | Chad | 채드 | Jodie | 조디 | Seojin | 서진 |
            | Chaeah | 채아 | Jolly | 졸리 | Seojoon | 서준 |
            | Chan-gu | 찬구 | Jongdae | 종대 | Seok Choi | 최석 |
            | Changbae | 창배 | Jooeun | 주은 | SeokPil | 한석필 |
            | Changhee | 창희 | Joonghyun | 중현 | Seokpyo | 석표 |
            | Changmin | 창민 | Joongsik | 중식 | Seolhwa | 설화 |
            | Changsu | 박창수 | Joonkyu | 준규 | Seonha | 선하 |
            | Chanhyuk | 찬혁 | Joshua | 조슈아 | Seoyeon | 서연 |
            | Charlotte | 샬롯 | Juha | 주하 | Seoyoon | 서윤 |
            | Chase | 체이스 | Juho | 주호 | Seungah | 승아 |
            | Cheolhoon | 철훈 | Jungbong | 정봉 | Seungheon | 승헌 |
            | Cheolyong | 리철용 | Junghee | 정희 | Seungho | 승호 |
            | Cherry | 체리 | Jungjae | 정재 | Seunghwa | 승화 |
            | Chester | 체스터 | Jungmin | 정민 | Seungjae | 승재 |
            | Chiho | 치호 | Jungseok | 정석 | Seungmoon | 승문 |
            | Chloe | 클로이 | Jungsoon | 정순 | Seungwon | 승원 |
            | Choyeon | 강초연 교관 | Jungwon | 정원 | Seungyeon | 승연 |
            | Chungah | 청아 | Junhee | 준희 | Sewoo | 세우 |
            | Chunsik Kang | 강춘식 기자 | Junho | 준호 | Shana | 샤나 |
            | Claire | 클레어 | JunKi | 준기 | Sheriff Kim | 김반장 |
            | Classic Narrator | 미스타 변사 | Junsang | 준상 | Shinhe | 신혜 |
            | Cole | 콜 | Junseong | 준성 | Shinwook | 신욱 |
            | Cox | 콕스 | Justice Roh | 정의로 | Shotgun | 샷건 |
            | Cyrus | 사이러스 | Justin | 저스틴 | Simon | 사이먼 |
            | Dabin | 다빈 | Juwon | 주원 | Sindarin | 신다린 |
            | Daegil | 대길 | Juyoung | 주영 | Sio | 시오 |
            | Dahee | 다희 | K-Santa | 산타 할아버지 | Siwon | 시원 |
            | Dahyeon | 다현 | Kangil | 강일 | Siwoo | 시우 |
            | Damian | 데이미언 | Kanno | 칸노 | Siyeon | 시연 |
            | Dan | 댄 | Katie | 케이티 | Skylar | 스카일러 |
            | Dana | 다나 | Kelly | 켈리 | Slushy | 슬러시 |
            | Dasom | 다솜 | Kelsey | 켈시 | Smoke | 스모크 |
            | David | 데이비드 | Kevin | 케빈 | Sohye | 소혜 |
            | Dean | 딘 | Keybo | 키보 | Sojin | 소진 |
            | Deokhwan | 덕환 | Kijang Kim | 김기장 | Soobin | 수빈 |
            | Dohan | 도한 | Killian the Vampire | 뱀파이어 킬리언 | Sookhee | 숙희 |
            | Dohee | 도희 | Kiseob | 기섭 | Sooni | 순이 |
            | Dohyun | 도현 | Klip Kim | 클립 킴 | Sophia | 소피아 |
            | Dollar Jr. | 달러 주니어 | Koombo | 쿰보 | Sora | 소라 |
            | Doug | 더그 | Kristen | 크리스틴 | Soye | 소예 |
            | Doughnut | 도넛 | Kukhee | 국희 | Soyi | 소이 |
            | DU5T | 더스트 | Kwonil | 권일 | Soyoung | 소영 |
            | Duckchun | 덕춘 | Kyumin | 규민 | Soyul | 소율 |
            | Duke | 듀크 | Kyungho | 경호 | Spice | 스파이스 |
            | Dukgu | 덕구 | Kyungsoo | 경수 | Sportscaster Kang | 강수정 캐스터 |
            | Duman | 두만 | Kyungsook | 경숙 | Sportscaster Tony | 이영광 캐스터 |
            | Dupil | 곽두필 | Lady Cho | 단희빈 | Starling | 스탈링 |
            | DVZY | 데이지 | Lala | 라라 | Stephanie | 스테파니 |
            | Dylan | 딜런 | Lamie | 라미 | Storyteller Jinsub | 송진섭 스토리텔러 |
            | E-seller Sherri | 쇼린이 | Landon | 랜던 | Sua | 수아 |
            | Echo | 에코 | Larry | 래리 | Suho | 수호 |
            | Edward | 에드워드 | Leo | 레오 | Suji | 수지 |
            | Elias | 엘리아스 | Liam | 리암 | Sujin | 수진 |
            | Elise | 엘리스 | Lindsay | 린지 | Sullock Hong | 홍설록 |
            | Ella | 엘라 | Liz | 리즈 | Sumin | 수민 |
            | Eman | 이만 | Lloyd | 로이드 | Sungbae | 성배 |
            | Emma | 엠마 | Logan | 로건 | Sunggyu | 성규 |
            | Eunbin | 은빈 | Lucille | 루실 | Sungho | 성호 |
            | Eunchae | 은채 | Luna | 루나 | Sunghoon | 성훈 |
            | Eunha | 은하 | Lydia | 리디아 | Sunghyun | 성현 |
            | Eunsol | 은솔 | Maddie | 매디 | Sungjun | 홈쇼핑 성준 |
            | Frankenstein | 프랑켄슈타인 | Maisie | 메이시 | Sungkwon | 성권 |
            | Furnando | 터르난도 | Margaret | 마가렛 | Sungtae | 성태 |
            | Gaeul | 가을 | Margot | 마고 | Sungwook | 성욱 |
            | Gahee | 가희 | Matthew | 매튜 | Sunyoung | 선영 |
            | George | 조지 | MBTI EF (F) | MBTI EF 여 | Suyoon | 수윤 |
            | GeumHee | 금희 | MBTI EF (M) | MBTI EF 남 | Sylvia | 실비아 |
            | Geunhyeok | 근혁 | MBTI ET (F) | MBTI ET 여 | Taebaek | 장태백 |
            | Geunseok | 근석 | MBTI ET (M) | MBTI ET 남 | Taeji | 태지 |
            | Geunwoo | 근우 | MBTI IF (F) | MBTI IF 여 | Taejoong | 태중 |
            | Geunyeong | 근영 | MBTI IF (M) | MBTI IF 남 | Taemin | 태민 |
            | Ggami | 까미 | MBTI IT (F) | MBTI IT 여 | Taesub | 태섭 |
            | Ggomi | 꼬미 | MBTI IT (M) | MBTI IT 남 | Taewoo | 태우 |
            | Glenda | 글렌다 | MC Kong | MC콩 | Teal | 틸 |
            | Goat Kim | 김고트 | MC TypeCast | MC 타캐 | Tessa | 테사 |
            | Gongchul | 공철 | Mia | 미아 | Tian | 티안 |
            | Gowoon | 고운 | Michael | 마이클 | Tim | 팀 |
            | Grace | 그레이스 | Mija | 오미자 | Tina | 티나 |
            | Graham | 그레이엄 | Mijin | 미진 | Toby | 토비 |
            | Gunseok | 건석 | Mikyung | 미경 | Tommy | 토미 |
            | Gunwoo | 건우 | Millie | 밀리 | Tyson | 타이슨 |
            | Guri | 구리 | Minchae | 민채 | UiChan | 의찬이 |
            | Gus | 거스 | Minji | 민지 | Uncle Hank | 행크 |
            | Ha Eun | 하은 | Minjoon | 민준 | Valerie | 밸러리 |
            | Haejun | 해준 | Minju | 민주 | Valkyrie | 발키리 |
            | Haerang | 해랑 | Minjung | 민정 | Vanessa | 바네사 |
            | Hailey | 헤일리 | Minsang | 민상 | Verna | 베르나 |
            | Hajun | 하준 | Minsu | 민수 | Victoria | 빅토리아 |
            | Hakchul | 학철 | Mio | 미오 | Viktor | 빅토르 |
            | Hamchu | 햄쮸 | Miran Choi | 최미란 | Vincent | 빈센트 |
            | Han Taesung Caster | 한태성 캐스터 | Mirine | 미리내 | Vivien | 비비안 |
            | Hana | 하나 | Miseon | 미선 | Wade | 웨이드 |
            | Hangyeol | 한결 | Miso | 미소 | Walter | 월터 |
            | Hanjun | 한준 | Mister Gop | 미스터 갑 | Wangkwon | 왕권 |
            | Hanna | 한나 | Monggun | 몽군 | Weather Reporter Sky | 하늘 캐스터 |
            | Hans | 한스 | Moonjung | 문정 | West | 웨스트 |
            | Hansol | 한솔 | Mooyeol | 무열 | Wonho | 원호 |
            | Hanyoung | 한영 | Morgan | 모건 | Wonkyung | 원경 |
            | Harin | 하린 | Moru | 머루 | Wonwoo | 원우 |
            | Harper | 하퍼 | Mrs. Claus | 미세스 클로스 | Wooju | 우주 |
            | Hayul | 하율 | Munseok | 문석 | Woosung | 우성 |
            | Heejoon | 희준 | Munsu | 문수 | Xavier | 자비에르 |
            | Helena | 헬레나 | Myeonghee | 명희 | Yeeun | 예은 |
            | Henry | 헨리 | Myungil | 명일 | Yejin | 예진 |
            | Homun Sim | 심호문 | Myungjoo | 명주 | Yejoon | 예준 |
            | Hoon | 훈 | Naeun | 나은 | YeLin | 예린 |
            | Hosik | 호식 | Najin | 나진 | Yena | 예나 |
            | Hosun | 호선 | Namjoon | 남준 | Yeonah | 연아 |
            | Hoyoung | 호영 | Nana | 나나 | Yeonggeol | 영걸 |
            | Hugh | 휴 | Nari | 개나리 | Yeonhwa | 연화 |
            | Hwimin | 휘민 | Nathan | 네이선 | Yeonja | 연자 |
            | Hyejung | 혜정 | Neel | 닐 | Yeonsuh | 연서 |
            | Hyelee | 혜리 | Neoguard | 네오가드 | Yeonwoo | 연우 |
            | Hyemin | 혜민 | News anchor Jinsub | 송진섭 앵커 | Yeseul | 예슬 |
            | Hyena | 혜나 | Newscaster John | 존 앵커 | Yongsik | 용식이 |
            | Hyeongjin | 형진 | Nia | 니아 | Yoonseo | 윤서 |
            | Hyera | 혜라 | Noa | 노아 | Yoonsung | 윤성 |
            | Hyesu | 홈쇼핑 혜수 | Noel | 노엘 | Younggil | 영길 |
            | Hyewon | 혜원 | Noeul | 노을 | Younghee | 영희 |
            | Hyun | 현 | Norah | 노라 | Younghwan | 영환 |
            | Hyunji | 현지 | Nova | 노바 | Youngji | 영지 |
            | Hyunjin | 현진 | Old radio | 레디오 | Youngkyu | 영규 |
            | Hyunju | 현주 | Oliver | 올리버 | Youngmok | 영목 |
            | Hyunkyung | 현경 | Olivia | 올리비아 | Yubin | 유빈 |
            | Hyunmin | 현민 | Oscar | 오스카 | Yujin | 유진 |
            | Hyunseung | 현승 | Owen | 오언 | Yumi | 유미 |
            | HyunWoo | 현우 | P-0150N | 포이즌 | Yumin | 유민 |
            | Ian | 이안 | Pacang | 파캉 | Yunbin | 윤빈 |
            | Icarus | 이카루스 | Paige | 페이지 | Yunjeong | 윤정 |
            | Igyeom | 이겸 | Pangpang | 팡팡 | Yura | 유라 |
            | Ijun | 이준 | Patricia | 패트리샤 | Yuri | 유리 |
            | Ilho | 일호 | Patrick | 패트릭 | Yuseong | 유성 |
            | Ina | 이나 | Peter | 피터 | Zoey | 조이 |
            | Inhwa | 인화 | Philip | 필립 |  |  |

            </details>
        voice_type:
          $ref: '#/components/schemas/VoiceType'
          description: >-
            캐릭터 타입 — `original` 은 타입캐스트가 기본 제공하는 스톡 캐릭터, `custom` 은 사용자가 업로드/클론한
            캐릭터입니다.
      required:
        - voice_id
        - voice_name
        - models
        - voice_type
      title: VoiceV2
      description: 모델별로 그룹화된 감정과 향상된 메타데이터가 있는 V2 캐릭터 응답 모델
    ErrorResponse:
      type: object
      properties:
        detail:
          type: string
          description: 문제를 설명하는 오류 메시지
      required:
        - detail
      example:
        detail: An error occurred processing the request
    ModelInfo:
      type: object
      properties:
        version:
          $ref: '#/components/schemas/TTSModel'
          description: 'TTS 모델 버전(예: ssfm-v21, ssfm-v30)'
        emotions:
          type: array
          items:
            type: string
          title: Emotions
          description: 이 모델에서 지원되는 감정 목록
      required:
        - version
        - emotions
      title: ModelInfo
      description: 버전 및 지원되는 감정을 포함한 모델 정보
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY
      description: 인증을 위한 API 키. 타입캐스트 API 콘솔에서 API 키를 생성할 수 있습니다.

````