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

# Synthèse vocale Qwen Audio 3.1 TTS Flash

> - Convertissez du texte en audio, jusqu’à `5000` caractères par requête
- 68 voix système : consultez la [liste des voix](/fr/api-manual/audio-series/qwen-audio-tts/qwen-audio-3.1-tts-flash-voices). Vous pouvez aussi utiliser une voix créée par clonage ou conception avec [Voice Enrollment](/fr/api-manual/audio-series/qwen-audio-tts/voice-enrollment)
- Les voix personnalisées expirent par défaut `6 heures` après la fin de leur création. La synthèse renvoie ensuite `404` (`voice_expired`) ; créez une nouvelle voix avec Voice Enrollment
- Instructions en langage naturel (`instruction`), balises émotionnelles et paralinguistiques dans le texte, SSML et prononciation personnalisée (`hot_fix`)
- Seuls les paramètres ci-dessous sont acceptés ; les autres renvoient `400` (`unsupported_parameter`)
- Traitement asynchrone : utilisez l’ID de tâche renvoyé pour [consulter le résultat](/fr/api-manual/task-management/get-task-detail)
- Aucune annulation après soumission
- Les liens audio sont valides 24 heures ; enregistrez-les rapidement

**Facturation :**
- Selon les tokens réellement utilisés : tokens d’entrée (liés à la longueur du texte) et de sortie (liés à la durée audio), facturés séparément
- Des crédits sont réservés à la soumission selon la longueur du texte (`usage.credits_reserved`). À la fin, le coût réel est régularisé : remboursement de l’excédent ou facturation du solde. Remboursement intégral en cas d’échec
- Chiffres, lettres et symboles peuvent être lus individuellement, produisant un audio plus long et davantage de tokens de sortie qu’un texte ordinaire de même longueur ; le coût réel peut dépasser la réservation
- Pour un même texte, les instructions ou balises de lecture lente, comme `[very slowly]`, peuvent nettement augmenter les tokens de sortie. Le réglage `speech_rate` et les pauses SSML ne les augmentent pas

**Résultat de tâche (lorsque `status` vaut `completed`) :**

| Champ | Description |
|---|---|
| `results[0]` | URL audio |
| `result_data[0].audio_url` | URL audio, identique à `results[0]` |
| `result_data[0].format` | Format audio |
| `result_data[0].sample_rate` | Fréquence d’échantillonnage (Hz) |
| `usage.input_tokens` / `usage.output_tokens` / `usage.total_tokens` | Tokens utilisés pour cette synthèse |
| `usage.credits_used` | Crédits réellement utilisés |



## OpenAPI

````yaml fr/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 synthèse vocale Qwen Audio 3.1 TTS Flash
  description: >-
    Convertissez du texte en audio avec 68 voix système, des instructions en
    langage naturel, des balises émotionnelles, SSML et une prononciation
    personnalisée. Facturation selon les tokens réellement utilisés.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.evolink.ai
    description: Environnement de production
security:
  - bearerAuth: []
tags:
  - name: Synthèse vocale
    description: Points d’accès de synthèse vocale Qwen Audio 3.1 TTS Flash
paths:
  /v1/audios/generations:
    post:
      tags:
        - Synthèse vocale
      summary: Synthèse vocale Qwen Audio 3.1 TTS Flash
      description: >-
        - Convertissez du texte en audio, jusqu’à `5000` caractères par requête

        - 68 voix système : consultez la [liste des
        voix](/fr/api-manual/audio-series/qwen-audio-tts/qwen-audio-3.1-tts-flash-voices).
        Vous pouvez aussi utiliser une voix créée par clonage ou conception avec
        [Voice
        Enrollment](/fr/api-manual/audio-series/qwen-audio-tts/voice-enrollment)

        - Les voix personnalisées expirent par défaut `6 heures` après la fin de
        leur création. La synthèse renvoie ensuite `404` (`voice_expired`) ;
        créez une nouvelle voix avec Voice Enrollment

        - Instructions en langage naturel (`instruction`), balises émotionnelles
        et paralinguistiques dans le texte, SSML et prononciation personnalisée
        (`hot_fix`)

        - Seuls les paramètres ci-dessous sont acceptés ; les autres renvoient
        `400` (`unsupported_parameter`)

        - Traitement asynchrone : utilisez l’ID de tâche renvoyé pour [consulter
        le résultat](/fr/api-manual/task-management/get-task-detail)

        - Aucune annulation après soumission

        - Les liens audio sont valides 24 heures ; enregistrez-les rapidement


        **Facturation :**

        - Selon les tokens réellement utilisés : tokens d’entrée (liés à la
        longueur du texte) et de sortie (liés à la durée audio), facturés
        séparément

        - Des crédits sont réservés à la soumission selon la longueur du texte
        (`usage.credits_reserved`). À la fin, le coût réel est régularisé :
        remboursement de l’excédent ou facturation du solde. Remboursement
        intégral en cas d’échec

        - Chiffres, lettres et symboles peuvent être lus individuellement,
        produisant un audio plus long et davantage de tokens de sortie qu’un
        texte ordinaire de même longueur ; le coût réel peut dépasser la
        réservation

        - Pour un même texte, les instructions ou balises de lecture lente,
        comme `[very slowly]`, peuvent nettement augmenter les tokens de sortie.
        Le réglage `speech_rate` et les pauses SSML ne les augmentent pas


        **Résultat de tâche (lorsque `status` vaut `completed`) :**


        | Champ | Description |

        |---|---|

        | `results[0]` | URL audio |

        | `result_data[0].audio_url` | URL audio, identique à `results[0]` |

        | `result_data[0].format` | Format audio |

        | `result_data[0].sample_rate` | Fréquence d’échantillonnage (Hz) |

        | `usage.input_tokens` / `usage.output_tokens` / `usage.total_tokens` |
        Tokens utilisés pour cette synthèse |

        | `usage.credits_used` | Crédits réellement utilisés |
      operationId: createQwenAudio31TtsFlash
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QwenAudioTtsRequest'
            examples:
              basic:
                summary: Requête minimale (voix par défaut)
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: 我家的后面有一个很大的花园。
              aliases:
                summary: Alias du texte et du format
                value:
                  model: qwen-audio-3.1-tts-flash
                  input: 我家的后面有一个很大的花园。
                  format: mp3
              with_voice:
                summary: Choisir la voix et le format de sortie
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: 各位听众朋友，大家好，欢迎收听晚间新闻。
                  voice: xuyanchu_v3.1
                  response_format: wav
                  sample_rate: 48000
              expressive:
                summary: Instructions et balises émotionnelles
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: '[excited]今天的天气真不错！[laughing]我们一起出去玩吧！'
                  voice: longanhuan_v3.1
                  instruction: 用欢快、热情的语气说
              english:
                summary: Voix anglaise
                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: Pauses SSML
                value:
                  model: qwen-audio-3.1-tts-flash
                  prompt: <speak>欢迎收听今天的节目。<break time="1s"/>我们马上开始。</speak>
                  enable_ssml: true
              full_params:
                summary: Tous les paramètres
                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: Tâche de synthèse vocale créée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QwenAudioTtsResponse'
        '400':
          description: Paramètres de requête invalides
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                missing_prompt:
                  summary: prompt manquant
                  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 dépasse 5000 caractères
                  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: Plus de 5000 caractères après 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 dépasse 200 entrées
                  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: Voix absente de la liste des voix prises en charge
                  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 dépasse 100 caractères de facturation
                  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: Nom de paramètre incorrect (instructions)
                  value:
                    error:
                      code: unsupported_parameter
                      message: instructions is not supported; use "instruction"
                      type: invalid_request_error
                unsupported_parameter:
                  summary: Paramètre non pris en charge fourni
                  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: Fréquence d’échantillonnage non prise en charge pour 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: Non authentifié, token invalide ou expiré
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: unauthorized
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: Quota insuffisant ; recharge nécessaire
          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: Accès refusé
          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: Voix inexistante ou expirée
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                voice_not_found:
                  summary: Voix inexistante ou appartenant à un autre compte
                  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: Voix personnalisée expirée ; créez-en une nouvelle
                  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: Limite de requêtes dépassée
          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: Erreur interne du serveur
          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: >-
        Fournissez au moins un texte non vide dans `prompt` ou `input`. Si les
        deux sont présents, leurs contenus doivent être identiques. Si
        `response_format` et `format` sont présents, leurs valeurs doivent aussi
        être identiques.
      anyOf:
        - required:
            - prompt
          properties:
            prompt:
              pattern: \S
        - required:
            - input
          properties:
            input:
              pattern: \S
      properties:
        model:
          type: string
          description: Nom du modèle
          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: >-
            Texte à synthétiser


            **Contraintes :**

            - Maximum `5000` caractères

            - Conservez la ponctuation des textes longs : un long passage sans
            séparation de phrases peut être tronqué en amont vers `1500` tokens
            de sortie (environ 120 secondes d’audio). La tâche reste indiquée
            comme réussie et facturée selon les tokens générés ; la passerelle
            ne peut pas détecter cette troncature

            - Vous pouvez utiliser `input`. Au moins un texte non vide est
            requis ; préférez un seul champ. Des contenus différents renvoient
            `400` (`parameter_conflict`)

            - Le texte doit être dans une langue prise en charge par la voix
            choisie, sinon la prononciation peut être incorrecte


            **Balises émotionnelles et paralinguistiques :** Insérez-les
            directement dans le texte, sans paramètre supplémentaire ; leur
            texte compte dans les caractères de facturation

            - **Balises de contrôle**: Définissent l’émotion ou le style du
            texte qui suit jusqu’à la prochaine balise de contrôle. `[sad]`
            triste, `[amazed]` étonné, `[deep and loud shouting]` cri grave et
            puissant, `[trembling]` tremblant, `[angry]` en colère, `[excited]`
            enthousiaste, `[sarcastic]` sarcastique, `[curious]` curieux, `[like
            dracula]` grave et inquiétant, `[bored]` ennuyé, `[tired]` fatigué,
            `[scornful]` méprisant, `[shouting]` cri, `[asmr]` chuchotement doux
            ASMR, `[panicked]` paniqué, `[mischievously]` espiègle,
            `[empathetic]` empathique, `[whispers]` chuchotement,
            `[reluctantly]` à contrecœur, `[crying]` pleurs, `[serious]`
            sérieux, `[very slowly]` très lentement, `[very fast]` très vite

            - **Balises paralinguistiques**: Insèrent un effet vocal à cet
            endroit sans modifier l’émotion du texte environnant. `[gasp]`
            inspiration brusque, `[sighing]` soupir, `[clears throat]` raclement
            de gorge, `[giggles]` petit rire, `[laughing]` rire, `[cough]` toux,
            `[snorts]` reniflement


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


            Avec `enable_ssml: true`, ce champ est interprété comme du SSML
          maxLength: 5000
          example: 我家的后面有一个很大的花园。
        input:
          type: string
          description: >-
            Alias de `prompt`, avec les mêmes limites de longueur et règles
            d’utilisation


            - Fournissez au moins un texte non vide dans `prompt` ou `input`

            - Si les deux sont présents, leurs contenus doivent être identiques,
            sinon `400` (`parameter_conflict`)
          maxLength: 5000
          example: 我家的后面有一个很大的花园。
        voice:
          type: string
          description: >-
            Nom de voix, sensible à la casse


            - 68 voix système ; noms, genre et usages dans la [liste des
            voix](/fr/api-manual/audio-series/qwen-audio-tts/qwen-audio-3.1-tts-flash-voices)

            - Par défaut : `longanhuan_v3.1`

            - Vous pouvez utiliser une voix créée avec [Voice
            Enrollment](/fr/api-manual/audio-series/qwen-audio-tts/voice-enrollment)
            : `qwen-audio-3.1-tts-flash-{prefix}-{32-character-id}` pour le
            clonage, `qwen-audio-3.1-tts-flash-vd-{prefix}-{32-character-id}`
            pour la conception. Seul le compte créateur peut l’utiliser. Les
            voix d’autres modèles, comme `qwen-tts-vd-…` de `qwen-voice-design`,
            renvoient `400` (`invalid_voice`). Une voix inexistante ou
            appartenant à un autre compte renvoie `404` (`voice_not_found`)

            - Les voix personnalisées expirent par défaut `6 heures` après la
            fin de leur création. Ensuite, la synthèse renvoie `404`
            (`voice_expired`) ; créez une nouvelle voix avec Voice Enrollment
          default: longanhuan_v3.1
          example: longanhuan_v3.1
        response_format:
          type: string
          description: >-
            Format audio de sortie : `mp3`, `wav` ou `opus`, par défaut `mp3`


            - `opus` utilise un conteneur Ogg Opus

            - Vous pouvez aussi utiliser `format`. Préférez un seul champ ; des
            valeurs différentes renvoient `400` (`parameter_conflict`)
          enum:
            - mp3
            - wav
            - opus
          default: mp3
          example: mp3
        format:
          type: string
          description: >-
            Alias de `response_format` ; accepte `mp3`, `wav` et `opus`


            - Par défaut `mp3` si les deux champs sont absents

            - Si les deux sont présents, les valeurs doivent être identiques,
            sinon `400` (`parameter_conflict`)
          enum:
            - mp3
            - wav
            - opus
          example: mp3
        sample_rate:
          type:
            - integer
            - 'null'
          description: >-
            Fréquence d’échantillonnage de sortie (Hz)


            - `22050` et `44100` ne sont pas acceptés avec `response_format:
            opus`

            - Absence ou `null` utilise la valeur par défaut ; `0` ou une valeur
            hors liste renvoie `400`
          enum:
            - 8000
            - 12000
            - 16000
            - 22050
            - 24000
            - 44100
            - 48000
            - null
          default: 24000
          example: 24000
        volume:
          type: integer
          description: Volume, de `0` à `100`
          minimum: 0
          maximum: 100
          default: 50
          example: 50
        speech_rate:
          type: number
          description: >-
            Multiplicateur de vitesse de parole


            - `1.0` : vitesse normale (par défaut)

            - `2.0` : vitesse double ; `0.5` : demi-vitesse


            Plage : `0.5` à `2.0`. Ce réglage ne change pas le nombre de tokens
            de sortie
          minimum: 0.5
          maximum: 2
          default: 1
          example: 1
        pitch:
          type: number
          description: >-
            Multiplicateur de hauteur de voix


            - `1.0` : hauteur par défaut

            - Au-dessus de `1.0`, voix plus aiguë ; en dessous, plus grave


            Plage : `0.5` à `2.0`


            **Changer la hauteur modifie aussi la vitesse et la durée audio**

            - Une hauteur plus élevée accélère et raccourcit l’audio ; une
            hauteur plus basse ralentit et allonge l’audio. La durée varie
            approximativement comme l’inverse du carré de la valeur

            - Pour une phrase de 2.8 secondes à `1.0` : `0.8` donne environ 4.3
            secondes, `1.2` 2.1 secondes, `0.5` 10.9 secondes et `2.0` 0.7
            seconde

            - Préférez de petits ajustements entre `0.8` et `1.2` ; près de
            `0.5` ou `2.0`, la parole devient nettement trop lente ou rapide

            - Si `speech_rate` est aussi défini à une valeur différente de
            `1.0`, `pitch` est sans effet ; les deux ne se cumulent pas

            - Le réglage de hauteur ne change pas le nombre de tokens de sortie
          minimum: 0.5
          maximum: 2
          default: 1
          example: 1
        instruction:
          type: string
          description: >-
            Instructions en langage naturel pour contrôler émotion, ton,
            personnage, dialecte et expression


            **Contraintes :**

            - Maximum `100` caractères de facturation : les caractères Han (y
            compris les kanji japonais et les hanja coréens) comptent pour 2 ;
            les autres, y compris les kana et le hangul, pour 1 (environ 50
            caractères Han ou 100 caractères anglais). Dépassement : `400`


            **Exemples :**

            - `用欢快、热情的语气说` (parler joyeusement et avec enthousiasme)

            - `请用上海话表达` (parler shanghaïen ; voix multilingues et dialectales)

            - `Speak slowly in a calm and gentle tone`


            Les instructions ne comptent pas dans les tokens d’entrée, mais
            peuvent modifier la durée audio et donc les tokens de sortie


            > Le paramètre est `instruction` (au singulier) ; `instructions`
            renvoie `400`
          example: 用欢快、热情的语气说
        language:
          type: string
          description: >-
            Indication de langue cible pour améliorer la lecture des chiffres,
            abréviations et symboles ainsi que la synthèse dans les langues
            moins courantes


            Par exemple, avec `zh`, `110` dans `hello, this is 110` se lit en
            chinois « yao yao ling »


            | Valeur | Langue | Valeur | Langue |

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

            | `zh` | Chinois | `th` | Thaï |

            | `en` | Anglais | `id` | Indonésien |

            | `fr` | Français | `vi` | Vietnamien |

            | `de` | Allemand | `es` | Espagnol |

            | `ja` | Japonais | `it` | Italien |

            | `ko` | Coréen | `ms` | Malais |

            | `ru` | Russe | `fil` | Filipino |

            | `pt` | Portugais | `ar` | Arabe |


            Sans ce paramètre, le modèle détecte la langue ; il ne traduit pas
            le texte
          enum:
            - zh
            - en
            - fr
            - de
            - ja
            - ko
            - ru
            - pt
            - th
            - id
            - vi
            - es
            - it
            - ms
            - fil
            - ar
          example: zh
        enable_ssml:
          type: boolean
          description: >-
            Interpréter `prompt` comme du SSML


            Une fois activé, les balises SSML sont utilisables, comme `<break
            time="1s"/>` pour une pause :

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


            Les pauses SSML ne comptent pas dans les tokens de sortie
          default: false
          example: false
        hot_fix:
          type: object
          description: >-
            Prononciation personnalisée et remplacement de texte pour corriger
            les caractères à plusieurs lectures, noms propres et autres
            prononciations


            - `pronunciation` : annotez les mots en pinyin, avec des espaces
            entre syllabes et des chiffres pour les tons, comme `tian1 qi4`

            - `replace` : remplace les mots avant la synthèse. Synthèse et
            facturation utilisent le texte remplacé, toujours limité à `5000`
            caractères ; dépassement : `400` (`prompt_too_long`)


            Les deux listes sont limitées à `200` entrées au total, comptées
            comme paires clé-valeur dans les objets. Dépassement : `400`
            (`invalid_parameter`)


            Fournissez au moins une liste. Chaque liste fournie doit être un
            tableau non vide d’objets de forme `{"mot": "valeur"}`


            **Exemple :**

            ```json

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

            ```
          properties:
            pronunciation:
              type: array
              description: >-
                Liste des prononciations personnalisées ; chaque entrée est un
                objet comme `{"mot": "pinyin"}`
              items:
                type: object
                additionalProperties:
                  type: string
              example:
                - 天气: tian1 qi4
            replace:
              type: array
              description: >-
                Liste des remplacements de texte ; chaque entrée est un objet
                comme `{"mot original": "texte de remplacement"}`
              items:
                type: object
                additionalProperties:
                  type: string
              example:
                - 今天: 金天
        enable_aigc_tag:
          type: boolean
          description: >-
            Intégrer un marqueur AIGC invisible dans l’audio généré (formats
            `wav` / `mp3` / `opus`)
          default: false
          example: false
        callback_url:
          type: string
          description: >-
            URL HTTPS de rappel pour le résultat de la tâche


            **Déclenchement :**

            - À la fin (`completed`) ou à l’échec (`failed`) de la tâche; ce
            modèle ne permet pas l’annulation

            - Après confirmation de la facturation


            **Sécurité :**

            - HTTPS uniquement

            - Adresses IP privées interdites (127.0.0.1, 10.x.x.x,
            172.16–31.x.x, 192.168.x.x, etc.)

            - URL de `2048` caractères maximum


            **Livraison :**

            - Délai d’expiration : `10` secondes

            - Au plus `3` nouvelles tentatives après un échec, avec délais de
            `1` / `2` / `4` secondes

            - Corps du rappel au même format que la réponse de consultation de
            tâche

            - Un statut 2xx indique le succès ; les autres déclenchent une
            nouvelle tentative
          format: uri
          example: https://your-domain.com/webhooks/tts-completed
    QwenAudioTtsResponse:
      type: object
      properties:
        created:
          type: integer
          description: Horodatage de création de la tâche
          example: 1790000000
        id:
          type: string
          description: ID de tâche
          example: task-unified-1790000000-abcd1234
        model:
          type: string
          description: Modèle effectivement utilisé
          example: qwen-audio-3.1-tts-flash
        object:
          type: string
          enum:
            - audio.generation.task
          description: Type précis de l’objet de tâche
        progress:
          type: integer
          description: Progression de la tâche en pourcentage (0–100)
          minimum: 0
          maximum: 100
          example: 0
        status:
          type: string
          description: État de la tâche
          enum:
            - pending
            - processing
            - completed
            - failed
          example: pending
        task_info:
          $ref: '#/components/schemas/AudioTaskInfo'
          description: Détails de la tâche audio
        type:
          type: string
          enum:
            - audio
          description: Type de sortie de la tâche
          example: audio
        usage:
          $ref: '#/components/schemas/AudioUsage'
          description: Informations d’utilisation et de facturation
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Identifiant du code d’erreur
            message:
              type: string
              description: Message d’erreur
            type:
              type: string
              description: Type d’erreur
    AudioTaskInfo:
      type: object
      properties:
        can_cancel:
          type: boolean
          description: >-
            Indique si la tâche peut être annulée (ce modèle ne permet pas
            l’annulation)
          example: false
        estimated_time:
          type: integer
          description: >-
            Durée estimée en secondes ; augmente avec la longueur du texte,
            jusqu’à environ `90` secondes
          minimum: 0
          example: 3
        audio_type:
          type: string
          description: Type de tâche audio
          example: tts
    AudioUsage:
      type: object
      description: Informations d’utilisation
      properties:
        credits_reserved:
          type: number
          description: >-
            Crédits réservés selon la longueur du texte ; régularisation à la
            fin selon les tokens réellement utilisés, avec remboursement de
            l’excédent ou facturation du solde
          minimum: 0
          example: 0.0144
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ## Tous les points d’accès exigent une authentification par token Bearer


        **Obtenir une clé API :**


        Rendez-vous dans [Gestion des clés
        API](https://evolink.ai/dashboard/keys) pour obtenir votre clé


        **Ajoutez cet en-tête :**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````

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