> ## 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.

# Síntesis de voz Qwen Audio 3.1 TTS Flash

> - Convierte texto en voz, hasta `5000` caracteres por solicitud
- 68 voces del sistema; consulta la [lista de voces](/es/api-manual/audio-series/qwen-audio-tts/qwen-audio-3.1-tts-flash-voices). También puedes usar una voz propia creada mediante clonación o diseño con [Voice Enrollment](/es/api-manual/audio-series/qwen-audio-tts/voice-enrollment)
- Las voces personalizadas caducan por defecto `6 horas` después de completar su creación. Después, la síntesis devuelve `404` (`voice_expired`); crea una nueva voz con Voice Enrollment
- Admite instrucciones en lenguaje natural (`instruction`), etiquetas emocionales y paralingüísticas en el texto, SSML y pronunciación personalizada (`hot_fix`)
- Solo se aceptan los parámetros indicados abajo; los demás devuelven `400` (`unsupported_parameter`)
- Procesamiento asíncrono; usa el ID de tarea devuelto para [consultar el resultado](/es/api-manual/task-management/get-task-detail)
- Las tareas no pueden cancelarse tras enviarlas
- Los enlaces de audio son válidos durante 24 horas; guárdalos pronto

**Facturación:**
- Según el uso real de tokens: los de entrada (relacionados con la longitud del texto) y los de salida (con la duración del audio) se cobran por separado
- Al enviar, se reservan créditos según la longitud del texto (`usage.credits_reserved`). Al finalizar se ajustan al uso real, devolviendo el exceso o cobrando la diferencia. Si falla la tarea, se devuelve todo
- Los números, letras y símbolos pueden leerse individualmente, generando audio más largo y más tokens de salida que un texto normal de igual longitud; el consumo real puede superar la reserva
- Para un mismo texto, las instrucciones o etiquetas de lectura lenta, como `[very slowly]`, pueden aumentar mucho los tokens de salida. Ajustar `speech_rate` e insertar pausas SSML no los aumenta

**Resultado de tarea (cuando `status` es `completed`):**

| Campo | Descripción |
|---|---|
| `results[0]` | URL del audio |
| `result_data[0].audio_url` | URL del audio, igual a `results[0]` |
| `result_data[0].format` | Formato de audio |
| `result_data[0].sample_rate` | Frecuencia de muestreo (Hz) |
| `usage.input_tokens` / `usage.output_tokens` / `usage.total_tokens` | Tokens utilizados en esta síntesis |
| `usage.credits_used` | Créditos realmente utilizados |



## OpenAPI

````yaml es/api-manual/audio-series/qwen-audio-tts/qwen-audio-3.1-tts-flash.json POST /v1/audios/generations
openapi: 3.1.0
info:
  title: API de síntesis de voz Qwen Audio 3.1 TTS Flash
  description: >-
    Convierte texto en audio con 68 voces del sistema, instrucciones en lenguaje
    natural, etiquetas emocionales, SSML y pronunciación personalizada. Se
    factura según los tokens realmente utilizados.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.evolink.ai
    description: Entorno de producción
security:
  - bearerAuth: []
tags:
  - name: Síntesis de voz
    description: Endpoints de síntesis de voz Qwen Audio 3.1 TTS Flash
paths:
  /v1/audios/generations:
    post:
      tags:
        - Síntesis de voz
      summary: Síntesis de voz Qwen Audio 3.1 TTS Flash
      description: >-
        - Convierte texto en voz, hasta `5000` caracteres por solicitud

        - 68 voces del sistema; consulta la [lista de
        voces](/es/api-manual/audio-series/qwen-audio-tts/qwen-audio-3.1-tts-flash-voices).
        También puedes usar una voz propia creada mediante clonación o diseño
        con [Voice
        Enrollment](/es/api-manual/audio-series/qwen-audio-tts/voice-enrollment)

        - Las voces personalizadas caducan por defecto `6 horas` después de
        completar su creación. Después, la síntesis devuelve `404`
        (`voice_expired`); crea una nueva voz con Voice Enrollment

        - Admite instrucciones en lenguaje natural (`instruction`), etiquetas
        emocionales y paralingüísticas en el texto, SSML y pronunciación
        personalizada (`hot_fix`)

        - Solo se aceptan los parámetros indicados abajo; los demás devuelven
        `400` (`unsupported_parameter`)

        - Procesamiento asíncrono; usa el ID de tarea devuelto para [consultar
        el resultado](/es/api-manual/task-management/get-task-detail)

        - Las tareas no pueden cancelarse tras enviarlas

        - Los enlaces de audio son válidos durante 24 horas; guárdalos pronto


        **Facturación:**

        - Según el uso real de tokens: los de entrada (relacionados con la
        longitud del texto) y los de salida (con la duración del audio) se
        cobran por separado

        - Al enviar, se reservan créditos según la longitud del texto
        (`usage.credits_reserved`). Al finalizar se ajustan al uso real,
        devolviendo el exceso o cobrando la diferencia. Si falla la tarea, se
        devuelve todo

        - Los números, letras y símbolos pueden leerse individualmente,
        generando audio más largo y más tokens de salida que un texto normal de
        igual longitud; el consumo real puede superar la reserva

        - Para un mismo texto, las instrucciones o etiquetas de lectura lenta,
        como `[very slowly]`, pueden aumentar mucho los tokens de salida.
        Ajustar `speech_rate` e insertar pausas SSML no los aumenta


        **Resultado de tarea (cuando `status` es `completed`):**


        | Campo | Descripción |

        |---|---|

        | `results[0]` | URL del audio |

        | `result_data[0].audio_url` | URL del audio, igual a `results[0]` |

        | `result_data[0].format` | Formato de audio |

        | `result_data[0].sample_rate` | Frecuencia de muestreo (Hz) |

        | `usage.input_tokens` / `usage.output_tokens` / `usage.total_tokens` |
        Tokens utilizados en esta síntesis |

        | `usage.credits_used` | Créditos realmente utilizados |
      operationId: createQwenAudio31TtsFlash
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QwenAudioTtsRequest'
            examples:
              basic:
                summary: Solicitud mínima (voz predeterminada)
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: 我家的后面有一个很大的花园。
              aliases:
                summary: Alias de texto y formato
                value:
                  model: qwen-audio-3.1-tts-flash
                  input: 我家的后面有一个很大的花园。
                  format: mp3
              with_voice:
                summary: Elegir voz y formato de salida
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: 各位听众朋友，大家好，欢迎收听晚间新闻。
                  voice: xuyanchu_v3.1
                  response_format: wav
                  sample_rate: 48000
              expressive:
                summary: Instrucciones y etiquetas emocionales
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: '[excited]今天的天气真不错！[laughing]我们一起出去玩吧！'
                  voice: longanhuan_v3.1
                  instruction: 用欢快、热情的语气说
              english:
                summary: Voz en inglés
                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: Pausas SSML
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: <speak>欢迎收听今天的节目。<break time="1s"/>我们马上开始。</speak>
                  enable_ssml: true
              full_params:
                summary: Todos los parámetros
                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: Tarea de síntesis de voz creada correctamente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QwenAudioTtsResponse'
        '400':
          description: Parámetros de solicitud no válidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                missing_prompt:
                  summary: Falta 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 supera los 5000 caracteres
                  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: Más de 5000 caracteres tras hot_fix.replace
                  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 supera las 200 entradas
                  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: Voz fuera de la lista admitida
                  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 supera los 100 caracteres de facturación
                  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: Nombre de parámetro incorrecto (instructions)
                  value:
                    error:
                      code: unsupported_parameter
                      message: instructions is not supported; use "instruction"
                      type: invalid_request_error
                unsupported_parameter:
                  summary: Se proporcionó un parámetro no admitido
                  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: Frecuencia de muestreo no admitida para 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: Sin autenticación, token no válido o caducado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: unauthorized
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: Cuota insuficiente; es necesario recargar
          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: Acceso denegado
          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: La voz no existe o ha caducado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                voice_not_found:
                  summary: La voz no existe o pertenece a otra cuenta
                  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: La voz personalizada ha caducado; crea una nueva
                  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: Límite de solicitudes superado
          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: Error interno del servidor
          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: >-
        Proporciona al menos un texto no vacío en `prompt` o `input`. Si se
        envían ambos, sus contenidos deben coincidir. Si se envían
        `response_format` y `format`, sus valores deben coincidir.
      anyOf:
        - required:
            - prompt
          properties:
            prompt:
              pattern: \S
        - required:
            - input
          properties:
            input:
              pattern: \S
      properties:
        model:
          type: string
          description: Nombre del modelo
          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: >-
            Texto que se sintetizará


            **Restricciones:**

            - Máximo `5000` caracteres

            - Mantén la puntuación en textos largos: los pasajes continuos sin
            separación de frases pueden truncarse en el proveedor alrededor de
            `1500` tokens de salida (unos 120 segundos de audio). La tarea sigue
            figurando como correcta y se factura por los tokens generados; el
            gateway no puede detectar este truncamiento

            - También puedes usar `input`. Se requiere al menos un texto no
            vacío; se recomienda enviar solo un campo. Contenidos diferentes
            devuelven `400` (`parameter_conflict`)

            - El texto debe estar en un idioma admitido por la voz elegida; de
            lo contrario puede haber errores de pronunciación


            **Etiquetas emocionales y paralingüísticas:** Se insertan
            directamente en el texto, sin parámetros adicionales; su texto
            cuenta como caracteres de facturación

            - **Etiquetas de control**: Definen la emoción o el estilo del texto
            siguiente hasta la próxima etiqueta de control. `[sad]` triste,
            `[amazed]` asombrado, `[deep and loud shouting]` grito grave y
            fuerte, `[trembling]` tembloroso, `[angry]` enfadado, `[excited]`
            emocionado, `[sarcastic]` sarcástico, `[curious]` curioso, `[like
            dracula]` grave e inquietante, `[bored]` aburrido, `[tired]`
            cansado, `[scornful]` desdeñoso, `[shouting]` gritando, `[asmr]`
            susurro suave ASMR, `[panicked]` en pánico, `[mischievously]`
            travieso, `[empathetic]` empático, `[whispers]` susurrando,
            `[reluctantly]` a regañadientes, `[crying]` llorando, `[serious]`
            serio, `[very slowly]` muy despacio, `[very fast]` muy rápido

            - **Etiquetas paralingüísticas**: Insertan un efecto vocal en ese
            punto sin cambiar la emoción del texto circundante. `[gasp]` jadeo,
            `[sighing]` suspiro, `[clears throat]` carraspeo, `[giggles]`
            risita, `[laughing]` risa, `[cough]` tos, `[snorts]` resoplido


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


            Con `enable_ssml: true`, este campo se interpreta como SSML
          maxLength: 5000
          example: 我家的后面有一个很大的花园。
        input:
          type: string
          description: >-
            Alias de `prompt`, con las mismas reglas y límites de longitud


            - Proporciona al menos un texto no vacío en `prompt` o `input`

            - Si se envían ambos, sus contenidos deben coincidir; de lo
            contrario, `400` (`parameter_conflict`)
          maxLength: 5000
          example: 我家的后面有一个很大的花园。
        voice:
          type: string
          description: >-
            Nombre de voz, distingue mayúsculas y minúsculas


            - 68 voces del sistema; nombres, género y usos en la [lista de
            voces](/es/api-manual/audio-series/qwen-audio-tts/qwen-audio-3.1-tts-flash-voices)

            - Por defecto `longanhuan_v3.1`

            - También admite voces creadas con [Voice
            Enrollment](/es/api-manual/audio-series/qwen-audio-tts/voice-enrollment):
            `qwen-audio-3.1-tts-flash-{prefix}-{32-character-id}` para
            clonación, `qwen-audio-3.1-tts-flash-vd-{prefix}-{32-character-id}`
            para diseño. Solo puede usarlas la cuenta que las creó. Voces de
            otros modelos, como `qwen-tts-vd-…` de `qwen-voice-design`,
            devuelven `400` (`invalid_voice`). Las inexistentes o de otra cuenta
            devuelven `404` (`voice_not_found`)

            - Las voces personalizadas caducan por defecto `6 horas` después de
            completar su creación. Después, la síntesis devuelve `404`
            (`voice_expired`); crea una nueva voz con Voice Enrollment
          default: longanhuan_v3.1
          example: longanhuan_v3.1
        response_format:
          type: string
          description: >-
            Formato de salida: `mp3`, `wav` u `opus`, por defecto `mp3`


            - `opus` usa un contenedor Ogg Opus

            - También puedes usar `format`. Se recomienda enviar solo un campo;
            valores diferentes devuelven `400` (`parameter_conflict`)
          enum:
            - mp3
            - wav
            - opus
          default: mp3
          example: mp3
        format:
          type: string
          description: >-
            Alias de `response_format`; admite `mp3`, `wav` y `opus`


            - Si faltan ambos campos, se usa `mp3`

            - Si se envían ambos, sus valores deben coincidir; de lo contrario,
            `400` (`parameter_conflict`)
          enum:
            - mp3
            - wav
            - opus
          example: mp3
        sample_rate:
          type:
            - integer
            - 'null'
          description: >-
            Frecuencia de muestreo de salida (Hz)


            - `22050` y `44100` no se admiten con `response_format: opus`

            - Si se omite o es `null`, se usa el valor predeterminado; `0` o
            valores fuera de la lista devuelven `400`
          enum:
            - 8000
            - 12000
            - 16000
            - 22050
            - 24000
            - 44100
            - 48000
            - null
          default: 24000
          example: 24000
        volume:
          type: integer
          description: Volumen, de `0` a `100`
          minimum: 0
          maximum: 100
          default: 50
          example: 50
        speech_rate:
          type: number
          description: >-
            Multiplicador de velocidad


            - `1.0`: velocidad normal (predeterminada)

            - `2.0`: doble velocidad; `0.5`: media velocidad


            Rango: `0.5` a `2.0`. Este ajuste no cambia el número de tokens de
            salida
          minimum: 0.5
          maximum: 2
          default: 1
          example: 1
        pitch:
          type: number
          description: >-
            Multiplicador de tono


            - `1.0`: tono predeterminado

            - Mayor que `1.0`, voz más aguda; menor, más grave


            Rango: `0.5` a `2.0`


            **Cambiar el tono también cambia la velocidad y la duración del
            audio**

            - Un tono más alto acelera y acorta el audio; uno más bajo lo
            ralentiza y alarga. La duración varía aproximadamente de forma
            inversa al cuadrado del valor

            - Para una frase de unos 2.8 segundos con `1.0`: `0.8` da unos 4.3
            segundos, `1.2` 2.1 segundos, `0.5` 10.9 segundos y `2.0` 0.7
            segundos

            - Se recomiendan ajustes pequeños entre `0.8` y `1.2`; cerca de
            `0.5` o `2.0`, la voz resulta demasiado lenta o rápida

            - Si también se envía `speech_rate` distinto de `1.0`, `pitch` no
            tiene efecto; no pueden combinarse

            - Ajustar el tono no cambia el número de tokens de salida
          minimum: 0.5
          maximum: 2
          default: 1
          example: 1
        instruction:
          type: string
          description: >-
            Instrucciones en lenguaje natural para controlar emoción, tono,
            personaje, dialecto y expresión


            **Restricciones:**

            - Máximo `100` caracteres de facturación: cada carácter Han
            (incluidos los kanji japoneses y los hanja coreanos) cuenta como 2;
            los demás, incluidos kana y hangul, como 1 (unos 50 caracteres Han o
            100 ingleses). Superar el límite devuelve `400`


            **Ejemplos:**

            - `用欢快、热情的语气说` (hablar de forma alegre y entusiasta)

            - `请用上海话表达` (usar shanghainés; voces multilingües y dialectales)

            - `Speak slowly in a calm and gentle tone`


            Las instrucciones no cuentan como tokens de entrada, pero pueden
            cambiar la duración del audio y los tokens de salida


            > El parámetro es `instruction` (singular); `instructions` devuelve
            `400`
          example: 用欢快、热情的语气说
        language:
          type: string
          description: >-
            Indicación del idioma de destino para mejorar la lectura de números,
            abreviaturas y símbolos y la síntesis en idiomas menos comunes


            Por ejemplo, con `zh`, `110` en `hello, this is 110` se lee en chino
            como «yao yao ling»


            | Valor | Idioma | Valor | Idioma |

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

            | `zh` | Chino | `th` | Tailandés |

            | `en` | Inglés | `id` | Indonesio |

            | `fr` | Francés | `vi` | Vietnamita |

            | `de` | Alemán | `es` | Español |

            | `ja` | Japonés | `it` | Italiano |

            | `ko` | Coreano | `ms` | Malayo |

            | `ru` | Ruso | `fil` | Filipino |

            | `pt` | Portugués | `ar` | Árabe |


            Si se omite, el modelo detecta el idioma; este parámetro no traduce
            el texto
          enum:
            - zh
            - en
            - fr
            - de
            - ja
            - ko
            - ru
            - pt
            - th
            - id
            - vi
            - es
            - it
            - ms
            - fil
            - ar
          example: zh
        enable_ssml:
          type: boolean
          description: >-
            Interpretar `prompt` como SSML


            Si se activa, puedes usar etiquetas SSML, como `<break time="1s"/>`
            para insertar una pausa:

            `<speak>欢迎收听今天的节目。<break time="1s"/>我们马上开始。</speak>`


            Las pausas SSML no cuentan como tokens de salida
          default: false
          example: false
        hot_fix:
          type: object
          description: >-
            Pronunciación personalizada y sustitución de texto para corregir
            caracteres con varias lecturas, nombres propios y otras
            pronunciaciones


            - `pronunciation`: anota palabras con pinyin, separando sílabas con
            espacios y marcando tonos con cifras, como `tian1 qi4`

            - `replace`: sustituye palabras antes de sintetizar. La síntesis y
            la facturación usan el texto resultante, que también debe respetar
            `5000` caracteres; superar el límite devuelve `400`
            (`prompt_too_long`)


            Ambas listas admiten como máximo `200` entradas en total, contadas
            como pares clave-valor de los objetos. Superar el límite devuelve
            `400` (`invalid_parameter`)


            Proporciona al menos una lista. Cada lista enviada debe ser un array
            no vacío de objetos de forma `{"palabra": "valor"}`


            **Ejemplo:**

            ```json

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

            ```
          properties:
            pronunciation:
              type: array
              description: >-
                Lista de pronunciaciones personalizadas; cada entrada es un
                objeto como `{"palabra": "pinyin"}`
              items:
                type: object
                additionalProperties:
                  type: string
              example:
                - 天气: tian1 qi4
            replace:
              type: array
              description: >-
                Lista de sustituciones de texto; cada entrada es un objeto como
                `{"palabra original": "texto de sustitución"}`
              items:
                type: object
                additionalProperties:
                  type: string
              example:
                - 今天: 金天
        enable_aigc_tag:
          type: boolean
          description: >-
            Insertar una marca AIGC invisible en el audio generado (para `wav` /
            `mp3` / `opus`)
          default: false
          example: false
        callback_url:
          type: string
          description: >-
            URL HTTPS de callback para el resultado de la tarea


            **Momento:**

            - Cuando la tarea termina (`completed`) o falla (`failed`); este
            modelo no permite cancelación

            - Después de confirmar la facturación


            **Seguridad:**

            - Solo HTTPS

            - Se prohíben IP privadas (127.0.0.1, 10.x.x.x, 172.16–31.x.x,
            192.168.x.x, etc.)

            - URL de máximo `2048` caracteres


            **Entrega:**

            - Tiempo de espera: `10` segundos

            - Máximo `3` reintentos tras un fallo, con demoras de `1` / `2` /
            `4` segundos

            - Cuerpo del callback con el mismo formato que la respuesta de
            consulta de tarea

            - Un estado 2xx indica éxito; los demás provocan reintentos
          format: uri
          example: https://your-domain.com/webhooks/tts-completed
    QwenAudioTtsResponse:
      type: object
      properties:
        created:
          type: integer
          description: Marca de tiempo de creación de la tarea
          example: 1790000000
        id:
          type: string
          description: ID de tarea
          example: task-unified-1790000000-abcd1234
        model:
          type: string
          description: Modelo utilizado realmente
          example: qwen-audio-3.1-tts-flash
        object:
          type: string
          enum:
            - audio.generation.task
          description: Tipo específico de objeto de tarea
        progress:
          type: integer
          description: Progreso de la tarea en porcentaje (0–100)
          minimum: 0
          maximum: 100
          example: 0
        status:
          type: string
          description: Estado de la tarea
          enum:
            - pending
            - processing
            - completed
            - failed
          example: pending
        task_info:
          $ref: '#/components/schemas/AudioTaskInfo'
          description: Detalles de la tarea de audio
        type:
          type: string
          enum:
            - audio
          description: Tipo de salida de la tarea
          example: audio
        usage:
          $ref: '#/components/schemas/AudioUsage'
          description: Información de uso y facturación
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Identificador del código de error
            message:
              type: string
              description: Mensaje de error
            type:
              type: string
              description: Tipo de error
    AudioTaskInfo:
      type: object
      properties:
        can_cancel:
          type: boolean
          description: >-
            Indica si la tarea puede cancelarse (este modelo no permite
            cancelación)
          example: false
        estimated_time:
          type: integer
          description: >-
            Tiempo estimado en segundos; aumenta con la longitud del texto,
            hasta unos `90` segundos
          minimum: 0
          example: 3
        audio_type:
          type: string
          description: Tipo de tarea de audio
          example: tts
    AudioUsage:
      type: object
      description: Información de uso
      properties:
        credits_reserved:
          type: number
          description: >-
            Créditos reservados según la longitud del texto; al finalizar se
            ajustan al uso real de tokens, con devolución del exceso o cobro de
            la diferencia
          minimum: 0
          example: 0.0144
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ## Todos los endpoints requieren autenticación con token Bearer


        **Obtener una clave API:**


        Visita [Gestión de claves API](https://evolink.ai/dashboard/keys) para
        obtener tu clave


        **Añade esta cabecera:**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````

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