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

# Qwen Audio 3.1 TTS Flash 음성 합성

> - 텍스트를 음성으로 변환하며 요청당 최대 `5000`자까지 지원합니다
- 시스템 음성 68개는 [음성 목록](/ko/api-manual/audio-series/qwen-audio-tts/qwen-audio-3.1-tts-flash-voices)을 참고하세요. [Voice Enrollment](/ko/api-manual/audio-series/qwen-audio-tts/voice-enrollment)로 직접 복제하거나 설계한 음성도 사용할 수 있습니다
- 사용자 지정 음성은 기본적으로 생성 작업 완료 후 `6시간`이 지나면 만료됩니다. 만료 후 합성은 `404`(`voice_expired`)를 반환하므로 Voice Enrollment로 다시 생성하세요
- 자연어 지시(`instruction`), 텍스트 내 감정 및 비언어적 발성 태그, SSML, 사용자 지정 발음(`hot_fix`) 지원
- 아래에 나열된 매개변수만 허용합니다. 다른 매개변수는 `400`(`unsupported_parameter`)
- 비동기 처리입니다. 반환된 작업 ID로 [결과를 조회](/ko/api-manual/task-management/get-task-detail)하세요
- 제출 후 작업을 취소할 수 없습니다
- 생성된 오디오 링크는 24시간 동안 유효하므로 바로 저장하세요

**과금:**
- 실제 토큰 사용량으로 과금합니다. 입력 토큰(텍스트 길이 관련)과 출력 토큰(오디오 길이 관련)을 각각 계산합니다
- 제출 시 텍스트 길이로 크레딧을 예약합니다(`usage.credits_reserved`). 완료 후 실제 사용량으로 정산하며 초과 예약분은 환불하고 부족분은 추가 청구합니다. 실패 시 전액 환불
- 숫자, 문자, 기호를 하나씩 읽으면 같은 길이의 일반 문장보다 오디오가 길고 출력 토큰이 많아질 수 있습니다. 실제 소비량이 예약량을 초과할 수 있습니다
- 같은 텍스트도 `[very slowly]` 같은 느린 말하기 지시나 태그를 사용하면 출력 토큰이 크게 늘어날 수 있습니다. `speech_rate` 조절 및 SSML 일시 정지는 출력 토큰을 늘리지 않습니다

**작업 결과(`status`가 `completed`인 경우):**

| 필드 | 설명 |
|---|---|
| `results[0]` | 오디오 URL |
| `result_data[0].audio_url` | 오디오 URL, `results[0]`과 동일 |
| `result_data[0].format` | 오디오 형식 |
| `result_data[0].sample_rate` | 샘플링 레이트(Hz) |
| `usage.input_tokens` / `usage.output_tokens` / `usage.total_tokens` | 이번 합성의 토큰 사용량 |
| `usage.credits_used` | 실제 사용 크레딧 |



## OpenAPI

````yaml ko/api-manual/audio-series/qwen-audio-tts/qwen-audio-3.1-tts-flash.json POST /v1/audios/generations
openapi: 3.1.0
info:
  title: Qwen Audio 3.1 TTS Flash 음성 합성 API
  description: >-
    텍스트를 음성으로 변환합니다. 시스템 음성 68개, 자연어 지시, 감정 태그, SSML, 사용자 지정 발음을 지원하며 실제 토큰 사용량을
    기준으로 과금합니다.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.evolink.ai
    description: 프로덕션 환경
security:
  - bearerAuth: []
tags:
  - name: 음성 합성
    description: Qwen Audio 3.1 TTS Flash 음성 합성 엔드포인트
paths:
  /v1/audios/generations:
    post:
      tags:
        - 음성 합성
      summary: Qwen Audio 3.1 TTS Flash 음성 합성
      description: >-
        - 텍스트를 음성으로 변환하며 요청당 최대 `5000`자까지 지원합니다

        - 시스템 음성 68개는 [음성
        목록](/ko/api-manual/audio-series/qwen-audio-tts/qwen-audio-3.1-tts-flash-voices)을
        참고하세요. [Voice
        Enrollment](/ko/api-manual/audio-series/qwen-audio-tts/voice-enrollment)로
        직접 복제하거나 설계한 음성도 사용할 수 있습니다

        - 사용자 지정 음성은 기본적으로 생성 작업 완료 후 `6시간`이 지나면 만료됩니다. 만료 후 합성은
        `404`(`voice_expired`)를 반환하므로 Voice Enrollment로 다시 생성하세요

        - 자연어 지시(`instruction`), 텍스트 내 감정 및 비언어적 발성 태그, SSML, 사용자 지정
        발음(`hot_fix`) 지원

        - 아래에 나열된 매개변수만 허용합니다. 다른 매개변수는 `400`(`unsupported_parameter`)

        - 비동기 처리입니다. 반환된 작업 ID로 [결과를
        조회](/ko/api-manual/task-management/get-task-detail)하세요

        - 제출 후 작업을 취소할 수 없습니다

        - 생성된 오디오 링크는 24시간 동안 유효하므로 바로 저장하세요


        **과금:**

        - 실제 토큰 사용량으로 과금합니다. 입력 토큰(텍스트 길이 관련)과 출력 토큰(오디오 길이 관련)을 각각 계산합니다

        - 제출 시 텍스트 길이로 크레딧을 예약합니다(`usage.credits_reserved`). 완료 후 실제 사용량으로 정산하며
        초과 예약분은 환불하고 부족분은 추가 청구합니다. 실패 시 전액 환불

        - 숫자, 문자, 기호를 하나씩 읽으면 같은 길이의 일반 문장보다 오디오가 길고 출력 토큰이 많아질 수 있습니다. 실제 소비량이
        예약량을 초과할 수 있습니다

        - 같은 텍스트도 `[very slowly]` 같은 느린 말하기 지시나 태그를 사용하면 출력 토큰이 크게 늘어날 수 있습니다.
        `speech_rate` 조절 및 SSML 일시 정지는 출력 토큰을 늘리지 않습니다


        **작업 결과(`status`가 `completed`인 경우):**


        | 필드 | 설명 |

        |---|---|

        | `results[0]` | 오디오 URL |

        | `result_data[0].audio_url` | 오디오 URL, `results[0]`과 동일 |

        | `result_data[0].format` | 오디오 형식 |

        | `result_data[0].sample_rate` | 샘플링 레이트(Hz) |

        | `usage.input_tokens` / `usage.output_tokens` / `usage.total_tokens` |
        이번 합성의 토큰 사용량 |

        | `usage.credits_used` | 실제 사용 크레딧 |
      operationId: createQwenAudio31TtsFlash
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QwenAudioTtsRequest'
            examples:
              basic:
                summary: 최소 요청(기본 음성)
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: 我家的后面有一个很大的花园。
              aliases:
                summary: 텍스트와 형식 별칭 사용
                value:
                  model: qwen-audio-3.1-tts-flash
                  input: 我家的后面有一个很大的花园。
                  format: mp3
              with_voice:
                summary: 음성과 출력 형식 지정
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: 各位听众朋友，大家好，欢迎收听晚间新闻。
                  voice: xuyanchu_v3.1
                  response_format: wav
                  sample_rate: 48000
              expressive:
                summary: 지시와 감정 태그
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: '[excited]今天的天气真不错！[laughing]我们一起出去玩吧！'
                  voice: longanhuan_v3.1
                  instruction: 用欢快、热情的语气说
              english:
                summary: 영어 음성
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: Hello, this is 110. Please leave a message after the tone.
                  voice: Emily_v3.1
                  language: en
                  speech_rate: 0.9
              ssml:
                summary: SSML 일시 정지
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: <speak>欢迎收听今天的节目。<break time="1s"/>我们马上开始。</speak>
                  enable_ssml: true
              full_params:
                summary: 전체 매개변수
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: 今天的天气真不错，适合出去走走。
                  voice: yuxiaoyun_v3.1
                  response_format: mp3
                  sample_rate: 24000
                  volume: 60
                  speech_rate: 1.1
                  pitch: 1
                  instruction: 语气轻松自然，像在和朋友聊天
                  language: zh
                  enable_ssml: false
                  hot_fix:
                    pronunciation:
                      - 天气: tian1 qi4
                    replace:
                      - 走走: 走一走
                  enable_aigc_tag: false
                  callback_url: https://your-domain.com/webhooks/tts-completed
      responses:
        '200':
          description: 음성 합성 작업 생성 성공
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QwenAudioTtsResponse'
        '400':
          description: 잘못된 요청 매개변수
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                missing_prompt:
                  summary: prompt 누락
                  value:
                    error:
                      code: missing_prompt
                      message: prompt is required for qwen-audio-3.1-tts-flash
                      type: invalid_request_error
                prompt_too_long:
                  summary: prompt가 5000자 초과
                  value:
                    error:
                      code: prompt_too_long
                      message: prompt must be at most 5000 characters, got 5210
                      type: invalid_request_error
                prompt_too_long_after_replace:
                  summary: hot_fix.replace 적용 후 5000자 초과
                  value:
                    error:
                      code: prompt_too_long
                      message: >-
                        prompt must be at most 5000 characters after
                        hot_fix.replace is applied, got 5120
                      type: invalid_request_error
                hot_fix_too_many_entries:
                  summary: hot_fix 항목이 200개 초과
                  value:
                    error:
                      code: invalid_parameter
                      message: >-
                        hot_fix may contain at most 200 entries in total, got
                        201
                      type: invalid_request_error
                invalid_voice:
                  summary: 지원 목록에 없는 음성
                  value:
                    error:
                      code: invalid_voice
                      message: >-
                        voice "longanhuan" is not available for
                        qwen-audio-3.1-tts-flash; use a system voice from the
                        voice list or a voice you created with voice-enrollment
                      type: invalid_request_error
                instruction_too_long:
                  summary: instruction이 과금 문자 100자 초과
                  value:
                    error:
                      code: instruction_too_long
                      message: >-
                        instruction must be at most 100 billing characters (CJK
                        characters count as 2), got 124
                      type: invalid_request_error
                wrong_parameter_name:
                  summary: 잘못된 매개변수 이름(instructions)
                  value:
                    error:
                      code: unsupported_parameter
                      message: instructions is not supported; use "instruction"
                      type: invalid_request_error
                unsupported_parameter:
                  summary: 지원하지 않는 매개변수 입력
                  value:
                    error:
                      code: unsupported_parameter
                      message: seed is not supported for qwen-audio-3.1-tts-flash
                      type: invalid_request_error
                opus_sample_rate:
                  summary: opus에서 지원하지 않는 샘플링 레이트
                  value:
                    error:
                      code: invalid_parameter
                      message: >-
                        sample_rate 44100 is not supported with
                        response_format=opus; use one of: 8000, 12000, 16000,
                        24000, 48000
                      type: invalid_request_error
        '401':
          description: 인증되지 않았거나 토큰이 유효하지 않거나 만료됨
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: unauthorized
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: 할당량 부족, 충전 필요
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: insufficient_quota
                  message: Insufficient quota. Please top up your account.
                  type: insufficient_quota
        '403':
          description: 접근 권한 없음
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: model_access_denied
                  message: >-
                    Token does not have access to model:
                    qwen-audio-3.1-tts-flash
                  type: invalid_request_error
        '404':
          description: 음성이 없거나 만료됨
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                voice_not_found:
                  summary: 음성이 없거나 다른 계정 소유
                  value:
                    error:
                      code: voice_not_found
                      message: >-
                        voice
                        "qwen-audio-3.1-tts-flash-myvoice-5996beec833d41f4982158347ba97fae"
                        not found
                      type: invalid_request_error
                voice_expired:
                  summary: 사용자 지정 음성이 만료됨, 다시 생성 필요
                  value:
                    error:
                      code: voice_expired
                      message: >-
                        voice
                        "qwen-audio-3.1-tts-flash-myvoice-5996beec833d41f4982158347ba97fae"
                        has expired; create a new one with voice-enrollment
                      type: invalid_request_error
        '429':
          description: 요청 빈도 제한 초과
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: rate_limit_exceeded
                  message: Too many requests, please try again later
                  type: rate_limit_error
        '500':
          description: 서버 내부 오류
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: internal_error
                  message: Internal server error
                  type: api_error
components:
  schemas:
    QwenAudioTtsRequest:
      type: object
      required:
        - model
      description: >-
        `prompt` 또는 `input` 중 하나 이상에 비어 있지 않은 텍스트를 제공하세요. 둘 다 제공하면 내용이 같아야 합니다.
        `response_format`과 `format`을 둘 다 제공하면 값이 같아야 합니다.
      anyOf:
        - required:
            - prompt
          properties:
            prompt:
              pattern: \S
        - required:
            - input
          properties:
            input:
              pattern: \S
      properties:
        model:
          type: string
          description: 모델 이름
          enum:
            - qwen-audio-3.1-tts-flash
          default: qwen-audio-3.1-tts-flash
          example: qwen-audio-3.1-tts-flash
        prompt:
          type: string
          description: >-
            합성할 텍스트


            **제약 조건:**

            - 최대 `5000`자

            - 긴 텍스트에는 문장 부호를 유지하세요. 문장 구분이 없는 긴 문단은 상위 제공자에서 약 `1500` 출력 토큰(약
            120초 오디오)으로 잘릴 수 있습니다. 작업은 성공으로 표시되고 실제 생성 토큰으로 과금되며, 게이트웨이는 이러한 잘림을
            감지할 수 없습니다

            - `input`으로도 입력할 수 있습니다. 하나 이상에 비어 있지 않은 텍스트가 필요하며 한 필드만 사용하도록
            권장합니다. 두 내용이 다르면 `400`(`parameter_conflict`)

            - 선택한 음성이 지원하는 언어를 사용하세요. 지원하지 않는 언어는 발음 오류가 날 수 있습니다


            **감정 및 비언어적 발성 태그:** 추가 매개변수 없이 텍스트에 직접 넣습니다. 태그 문자열도 과금 문자 수에 포함됩니다

            - **제어 태그**: 다음 제어 태그가 나올 때까지 뒤따르는 텍스트의 감정이나 스타일을 설정합니다. `[sad]` 슬픔,
            `[amazed]` 놀람, `[deep and loud shouting]` 낮고 큰 외침, `[trembling]` 떨림,
            `[angry]` 분노, `[excited]` 흥분, `[sarcastic]` 비꼼, `[curious]` 호기심,
            `[like dracula]` 낮고 음산한 목소리, `[bored]` 지루함, `[tired]` 피로,
            `[scornful]` 경멸, `[shouting]` 외침, `[asmr]` 부드러운 ASMR 속삭임,
            `[panicked]` 공황, `[mischievously]` 장난스러움, `[empathetic]` 공감,
            `[whispers]` 속삭임, `[reluctantly]` 마지못함, `[crying]` 울음, `[serious]`
            진지함, `[very slowly]` 매우 느리게, `[very fast]` 매우 빠르게

            - **비언어적 발성 태그**: 주변 텍스트의 감정을 바꾸지 않고 해당 위치에 발성 효과를 넣습니다. `[gasp]` 숨을
            들이킴, `[sighing]` 한숨, `[clears throat]` 헛기침, `[giggles]` 킥킥 웃음,
            `[laughing]` 웃음, `[cough]` 기침, `[snorts]` 콧소리


            **예시:** `[excited]今天的天气真不错！[laughing]我们一起出去玩吧！`


            `enable_ssml`이 `true`이면 이 필드를 SSML로 해석합니다
          maxLength: 5000
          example: 我家的后面有一个很大的花园。
        input:
          type: string
          description: |-
            `prompt`의 별칭이며 길이 제한과 사용 규칙이 같습니다

            - `prompt` 또는 `input` 중 하나 이상에 비어 있지 않은 텍스트 제공
            - 둘 다 제공하면 내용이 같아야 하며, 다르면 `400`(`parameter_conflict`)
          maxLength: 5000
          example: 我家的后面有一个很大的花园。
        voice:
          type: string
          description: >-
            음성 이름, 대소문자를 구분합니다


            - 시스템 음성 68개의 이름, 성별, 용도는 [음성
            목록](/ko/api-manual/audio-series/qwen-audio-tts/qwen-audio-3.1-tts-flash-voices)
            참고

            - 생략하면 `longanhuan_v3.1`

            - 직접 [Voice
            Enrollment](/ko/api-manual/audio-series/qwen-audio-tts/voice-enrollment)로
            만든 음성도 사용 가능합니다. 복제는
            `qwen-audio-3.1-tts-flash-{prefix}-{32-character-id}`, 설계는
            `qwen-audio-3.1-tts-flash-vd-{prefix}-{32-character-id}` 형식입니다. 생성
            계정만 사용할 수 있습니다. `qwen-voice-design`의 `qwen-tts-vd-…` 등 다른 모델 음성은
            `400`(`invalid_voice`). 존재하지 않거나 다른 계정 소유의 음성은
            `404`(`voice_not_found`)

            - 사용자 지정 음성은 기본적으로 생성 작업 완료 후 `6시간` 뒤 만료됩니다. 이후 합성은
            `404`(`voice_expired`)를 반환하므로 Voice Enrollment로 다시 생성하세요
          default: longanhuan_v3.1
          example: longanhuan_v3.1
        response_format:
          type: string
          description: >-
            출력 오디오 형식. `mp3`, `wav`, `opus`를 지원하며 기본값은 `mp3`


            - `opus`는 Ogg Opus 컨테이너

            - `format`으로도 입력할 수 있습니다. 한 필드만 권장하며 두 값이 다르면
            `400`(`parameter_conflict`)
          enum:
            - mp3
            - wav
            - opus
          default: mp3
          example: mp3
        format:
          type: string
          description: |-
            `response_format`의 별칭. `mp3`, `wav`, `opus` 지원

            - 두 필드 모두 생략하면 `mp3`
            - 둘 다 제공하면 값이 같아야 하며, 다르면 `400`(`parameter_conflict`)
          enum:
            - mp3
            - wav
            - opus
          example: mp3
        sample_rate:
          type:
            - integer
            - 'null'
          description: |-
            출력 샘플링 레이트(Hz)

            - `response_format`이 `opus`이면 `22050`과 `44100`을 지원하지 않습니다
            - 생략하거나 `null`이면 기본값 사용. `0` 또는 목록 밖의 값은 `400`
          enum:
            - 8000
            - 12000
            - 16000
            - 22050
            - 24000
            - 44100
            - 48000
            - null
          default: 24000
          example: 24000
        volume:
          type: integer
          description: 볼륨, 범위 `0` ~ `100`
          minimum: 0
          maximum: 100
          default: 50
          example: 50
        speech_rate:
          type: number
          description: |-
            말하기 속도 배율

            - `1.0`: 정상 속도(기본값)
            - `2.0`: 두 배 속도, `0.5`: 절반 속도

            범위 `0.5` ~ `2.0`. 속도 조절은 출력 토큰 수를 바꾸지 않습니다
          minimum: 0.5
          maximum: 2
          default: 1
          example: 1
        pitch:
          type: number
          description: >-
            음높이 배율


            - `1.0`: 기본 음높이

            - `1.0`보다 크면 높아지고 작으면 낮아집니다


            범위 `0.5` ~ `2.0`


            **음높이를 바꾸면 속도와 오디오 길이도 바뀝니다**

            - 높이면 빨라지고 짧아지며, 낮추면 느려지고 길어집니다. 길이는 대략 음높이 값의 제곱에 반비례합니다

            - `1.0`에서 약 2.8초인 문장은 `0.8`에서 약 4.3초, `1.2`에서 약 2.1초, `0.5`에서 약
            10.9초, `2.0`에서 약 0.7초입니다

            - `0.8` ~ `1.2` 사이의 작은 조정을 권장합니다. `0.5`나 `2.0`에 가까우면 지나치게 느리거나 빨라집니다

            - `speech_rate`도 `1.0`이 아닌 값으로 입력하면 `pitch`는 적용되지 않습니다. 두 효과를 함께 적용할
            수 없습니다

            - 음높이 조절은 출력 토큰 수를 바꾸지 않습니다
          minimum: 0.5
          maximum: 2
          default: 1
          example: 1
        instruction:
          type: string
          description: >-
            감정, 말투, 역할, 방언 등을 조절하는 자연어 지시


            **제약 조건:**

            - 최대 `100` 과금 문자. 한자(일본어 한자와 한국어 한자 포함)는 2, 나머지 문자(가나와 한글 포함)는 1로
            계산합니다(한자 약 50자 또는 영어 약 100자). 초과하면 `400`


            **예시:**

            - `用欢快、热情的语气说`(밝고 열정적인 말투)

            - `请用上海话表达`(상하이어 사용, 다국어 및 방언 음성)

            - `Speak slowly in a calm and gentle tone`


            지시 자체는 입력 토큰에 포함되지 않지만 오디오 길이와 출력 토큰에 영향을 줄 수 있습니다


            > 매개변수는 단수형 `instruction`입니다. `instructions`는 `400`
          example: 用欢快、热情的语气说
        language:
          type: string
          description: >-
            대상 언어 힌트. 숫자, 약어, 기호의 발음과 비교적 사용이 적은 언어의 합성을 개선합니다


            예를 들어 `hello, this is 110`에 `zh`를 입력하면 `110`을 중국어 “yao yao ling”으로
            읽습니다


            | 값 | 언어 | 값 | 언어 |

            |---|---|---|---|

            | `zh` | 중국어 | `th` | 태국어 |

            | `en` | 영어 | `id` | 인도네시아어 |

            | `fr` | 프랑스어 | `vi` | 베트남어 |

            | `de` | 독일어 | `es` | 스페인어 |

            | `ja` | 일본어 | `it` | 이탈리아어 |

            | `ko` | 한국어 | `ms` | 말레이어 |

            | `ru` | 러시아어 | `fil` | 필리핀어 |

            | `pt` | 포르투갈어 | `ar` | 아랍어 |


            생략하면 모델이 자동 판별합니다. 이 매개변수는 텍스트를 번역하지 않습니다
          enum:
            - zh
            - en
            - fr
            - de
            - ja
            - ko
            - ru
            - pt
            - th
            - id
            - vi
            - es
            - it
            - ms
            - fil
            - ar
          example: zh
        enable_ssml:
          type: boolean
          description: |-
            `prompt`를 SSML로 해석할지 여부

            활성화하면 SSML 태그를 사용할 수 있습니다. 예를 들어 `<break time="1s"/>`로 일시 정지를 삽입합니다:
            `<speak>欢迎收听今天的节目。<break time="1s"/>我们马上开始。</speak>`

            SSML 일시 정지는 출력 토큰에 포함되지 않습니다
          default: false
          example: false
        hot_fix:
          type: object
          description: >-
            다음자, 고유명사 등의 발음을 교정하는 사용자 지정 발음과 텍스트 치환


            - `pronunciation`: 단어의 병음을 지정합니다. 음절은 공백으로 구분하고 성조는 숫자로 표시합니다. 예:
            `tian1 qi4`

            - `replace`: 합성 전에 단어를 치환합니다. 치환된 텍스트로 합성하고 과금하며, 치환 후에도 최대
            `5000`자입니다. 초과하면 `400`(`prompt_too_long`)


            두 목록 합계 최대 `200`개 항목입니다. 객체 안의 키-값 쌍을 셉니다. 초과하면
            `400`(`invalid_parameter`)


            하나 이상을 제공하세요. 제공하는 각 목록은 비어 있지 않은 배열이며, 각 항목은 `{"단어": "값"}` 형태의
            객체입니다


            **예시:**

            ```json

            {
              "pronunciation": [{"天气": "tian1 qi4"}],
              "replace": [{"今天": "金天"}]
            }

            ```
          properties:
            pronunciation:
              type: array
              description: '사용자 지정 발음 목록. 각 항목은 `{"단어": "병음"}` 형태의 객체'
              items:
                type: object
                additionalProperties:
                  type: string
              example:
                - 天气: tian1 qi4
            replace:
              type: array
              description: '텍스트 치환 목록. 각 항목은 `{"원래 단어": "치환 텍스트"}` 형태의 객체'
              items:
                type: object
                additionalProperties:
                  type: string
              example:
                - 今天: 金天
        enable_aigc_tag:
          type: boolean
          description: 생성된 오디오에 보이지 않는 AIGC 식별 정보 삽입 여부(`wav` / `mp3` / `opus`에서 적용)
          default: false
          example: false
        callback_url:
          type: string
          description: |-
            작업 결과를 받을 HTTPS 콜백 URL

            **전송 시점:**
            - 작업 완료(`completed`) 또는 실패(`failed`) 시. 이 모델은 취소를 지원하지 않습니다
            - 과금 확정 후 전송

            **보안 요구 사항:**
            - HTTPS만 지원
            - 내부 IP 금지(127.0.0.1, 10.x.x.x, 172.16~31.x.x, 192.168.x.x 등)
            - URL 최대 `2048`자

            **전달 방식:**
            - 제한 시간: `10`초
            - 실패 후 최대 `3`회 재시도, 각각 `1` / `2` / `4`초 대기
            - 콜백 본문은 작업 조회 API 응답과 같은 형식
            - 2xx는 성공, 다른 상태 코드는 재시도
          format: uri
          example: https://your-domain.com/webhooks/tts-completed
    QwenAudioTtsResponse:
      type: object
      properties:
        created:
          type: integer
          description: 작업 생성 타임스탬프
          example: 1790000000
        id:
          type: string
          description: 작업 ID
          example: task-unified-1790000000-abcd1234
        model:
          type: string
          description: 실제로 사용된 모델 이름
          example: qwen-audio-3.1-tts-flash
        object:
          type: string
          enum:
            - audio.generation.task
          description: 작업 객체의 구체적인 유형
        progress:
          type: integer
          description: 작업 진행률(0~100)
          minimum: 0
          maximum: 100
          example: 0
        status:
          type: string
          description: 작업 상태
          enum:
            - pending
            - processing
            - completed
            - failed
          example: pending
        task_info:
          $ref: '#/components/schemas/AudioTaskInfo'
          description: 오디오 작업 상세 정보
        type:
          type: string
          enum:
            - audio
          description: 작업 출력 유형
          example: audio
        usage:
          $ref: '#/components/schemas/AudioUsage'
          description: 사용량 및 과금 정보
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: 오류 코드 식별자
            message:
              type: string
              description: 오류 메시지
            type:
              type: string
              description: 오류 유형
    AudioTaskInfo:
      type: object
      properties:
        can_cancel:
          type: boolean
          description: 작업 취소 가능 여부(이 모델은 취소를 지원하지 않음)
          example: false
        estimated_time:
          type: integer
          description: 예상 완료 시간(초). 텍스트가 길수록 증가하며 최대 약 `90`초
          minimum: 0
          example: 3
        audio_type:
          type: string
          description: 오디오 작업 유형
          example: tts
    AudioUsage:
      type: object
      description: 사용량 정보
      properties:
        credits_reserved:
          type: number
          description: 텍스트 길이로 추정해 예약한 크레딧. 완료 후 실제 토큰 사용량으로 정산하며 초과 예약분은 환불하고 부족분은 추가 청구
          minimum: 0
          example: 0.0144
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: |-
        ## 모든 엔드포인트에 Bearer 토큰 인증이 필요합니다

        **API 키 받기:**

        [API 키 관리](https://evolink.ai/dashboard/keys)에서 API 키를 받으세요

        **요청 헤더 추가:**
        ```
        Authorization: Bearer YOUR_API_KEY
        ```

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.