{
  "aboutHtml": "<p>GPT Transcribe est le modèle de transcription de la parole d’OpenAI pour les fichiers audio complets, les transcriptions de fichiers diffusées progressivement et les tours audio explicitement clôturés dans les sessions Realtime. Il accepte de l’audio avec un contexte textuel facultatif et renvoie le texte reconnu. Le concepteur le présente pour la transcription précise de la parole enregistrée dans sa langue d’origine, notamment le vocabulaire spécialisé, les enregistrements multilingues et l’alternance entre langues. Sa sortie utile est une transcription qui reste liée à l’enregistrement, avec des métadonnées de langues détectées lorsque le modèle peut formuler une prédiction fiable.</p><h4>Préparer un enregistrement complet</h4><p>Le processus de transcription de fichiers d’OpenAI accepte des envois jusqu’à 25 MB. La référence actuelle du point de terminaison répertorie les formats d’entrée FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV et WebM et recommande assez de métadonnées de fichier pour identifier le format, notamment une extension de nom de fichier et un type de contenu adaptés. Pour un enregistrement plus volumineux, le guide recommande de le compresser ou de le découper en fichiers de 25 MB ou moins. Évitez de couper au milieu d’une phrase, car retirer la parole environnante peut réduire la précision de reconnaissance. Gardez les parties dans l’ordre et conservez leurs positions dans l’enregistrement d’origine.</p><p>Pour une réunion, un entretien ou une présentation enregistrée, fournissez l’audio réel et indiquez le sujet ainsi que toute terminologie susceptible d’être prononcée. Un résultat utile restitue les paroles reconnues plutôt qu’un résumé déduit de la discussion. Conservez l’identifiant de l’enregistrement avec le texte renvoyé afin qu’une personne vérifiant un nom, un nombre ou une expression incertaine puisse revenir à la bonne source. Une transcription peut ensuite servir de matériau à un processus distinct de résumé, de traduction ou de traitement éditorial.</p><h4>Contexte, indications de mots-clés et langues attendues</h4><p>Le concepteur distingue trois types d’indications. Un prompt donne un contexte libre sur le sujet ou la situation de l’enregistrement. Les mots-clés donnent les mots ou expressions littéraux attendus dans la parole. Une liste de langues indique les langues parlées attendues. Pour une discussion bilingue sur un produit, décrivez la situation dans le prompt, répertoriez les noms de produits pertinents comme mots-clés et fournissez les langues attendues. Ce sont des indications de reconnaissance ; elles ne demandent pas d’insérer du vocabulaire que personne n’a prononcé.</p><p>GPT Transcribe utilise le champ pluriel languages à la place de l’ancien champ singulier language ; OpenAI indique de ne pas envoyer les deux. Son guide accepte les codes ISO 639-1 pris en charge, certains codes ISO 639-3 et des codes régionaux de locale chinoise, avec rejet des valeurs non prises en charge ou mal formées. Chaque mot-clé doit tenir sur une seule ligne et ne doit contenir ni chevron, ni retour chariot, ni saut de ligne. Un mot-clé invalide ou un prompt trop long peut entraîner le rejet de toute la requête. Gardez un contexte pertinent et vérifiez si les noms suggérés figurent réellement dans l’audio plutôt que de traiter la liste d’indications comme la transcription.</p><h4>Sortie JSON et prédictions de langues détectées</h4><p>Le résultat de fichier documenté est un objet JSON contenant la transcription et les langues détectées. Ces prédictions de langues sont la sortie du modèle, sans être une copie des indications de langues fournies. Une liste de langues vide est un résultat valide lorsque le modèle ne peut pas formuler une prédiction fiable ; elle n’établit pas que l’enregistrement était silencieux ou que la transcription a échoué. Gardez le texte reconnu et les métadonnées de langue distincts afin que les traitements suivants puissent utiliser chaque élément selon sa signification.</p><h4>Diffuser progressivement la transcription d’un fichier</h4><p>Un fichier complet peut produire progressivement du texte transcrit pendant son traitement. OpenAI documente les événements transcript.text.delta pour le texte partiel et transcript.text.done pour la transcription complète du fichier ; l’événement final comprend aussi les langues détectées. Ce processus diffuse progressivement la sortie d’un enregistrement déjà fourni. Il permet d’afficher l’avancement d’un long envoi, tandis que l’événement final établit le texte à conserver comme résultat achevé.</p><h4>Tours audio explicitement clôturés dans les sessions Realtime</h4><p>GPT Transcribe possède aussi un processus Realtime spécialisé par WebSocket. L’audio est ajouté au tampon d’entrée, puis l’application marque explicitement la fin d’un tour audio. La transcription commence pour ce segment clôturé et peut émettre des fragments de texte avant son événement d’achèvement, avec des informations de langues détectées. Le modèle utilise automatiquement les tours déjà transcrits comme contexte dans ce processus de session du concepteur. Cela se distingue de l’émission continue de sous-titres en direct à mesure que l’audio du microphone arrive ; OpenAI nomme GPT Live Transcribe pour ce processus continu.</p><p>Pour plusieurs tours, conservez l’identifiant de l’élément d’entrée avec la transcription correspondante. OpenAI avertit que les événements d’achèvement de tours différents peuvent arriver dans un autre ordre que celui de la parole : associez donc chaque résultat final à son entrée clôturée plutôt que d’ordonner une conversation uniquement selon l’heure d’achèvement. Le résultat utile est une transcription ordonnée assemblée à partir des bons éléments finaux, le texte intermédiaire étant traité comme un avancement plutôt que comme un énoncé achevé distinct.</p><h4>Sorties spécialisées et limites de fond</h4><p>Ce profil ne fournit pas un contrat universel de sous-titres, d’horodatages, de traduction ou d’étiquettes de locuteurs. Le guide de migration d’OpenAI distingue ces capacités spécialisées : les formats de sous-titres pris en charge nativement et les repères temporels par mot nécessitent un modèle et un format compatibles, tandis que les étiquettes de locuteurs utilisent GPT-4o Transcribe Diarize. Le résultat de fichier de GPT Transcribe est JSON plutôt qu’une réponse directement substituable à SRT, VTT ou à des horodatages détaillés. Sa fiche de modèle exacte ne publie pas de valeur numérique de contexte ou de plafond de sortie : il ne faut donc pas supposer qu’une fenêtre de tokens de modèle de chat s’applique à la transcription audio.</p><p>Vérifiez le vocabulaire difficile, les nombres, les accents, le bruit de fond et les changements de langue par rapport à l’enregistrement. Vérifiez que les indications pertinentes ont amélioré la reconnaissance sans introduire de termes non prononcés et que la transcription finale comprend la fin de l’audio. Pour un résultat multilingue, préservez les paroles prononcées avant de préparer une version traduite. Ces vérifications rendent la transcription utile comme matériau source tout en distinguant clairement les indications de contexte, les langues détectées et la parole reconnue.</p>",
  "aboutText": "GPT Transcribe est le modèle de transcription de la parole d’OpenAI pour les fichiers audio complets, les transcriptions de fichiers diffusées progressivement et les tours audio explicitement clôturés dans les sessions Realtime. Il accepte de l’audio avec un contexte textuel facultatif et renvoie le texte reconnu. Le concepteur le présente pour la transcription précise de la parole enregistrée dans sa langue d’origine, notamment le vocabulaire spécialisé, les enregistrements multilingues et l’alternance entre langues. Sa sortie utile est une transcription qui reste liée à l’enregistrement, avec des métadonnées de langues détectées lorsque le modèle peut formuler une prédiction fiable.\n\n### Préparer un enregistrement complet\n\nLe processus de transcription de fichiers d’OpenAI accepte des envois jusqu’à 25 MB. La référence actuelle du point de terminaison répertorie les formats d’entrée FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV et WebM et recommande assez de métadonnées de fichier pour identifier le format, notamment une extension de nom de fichier et un type de contenu adaptés. Pour un enregistrement plus volumineux, le guide recommande de le compresser ou de le découper en fichiers de 25 MB ou moins. Évitez de couper au milieu d’une phrase, car retirer la parole environnante peut réduire la précision de reconnaissance. Gardez les parties dans l’ordre et conservez leurs positions dans l’enregistrement d’origine.\n\nPour une réunion, un entretien ou une présentation enregistrée, fournissez l’audio réel et indiquez le sujet ainsi que toute terminologie susceptible d’être prononcée. Un résultat utile restitue les paroles reconnues plutôt qu’un résumé déduit de la discussion. Conservez l’identifiant de l’enregistrement avec le texte renvoyé afin qu’une personne vérifiant un nom, un nombre ou une expression incertaine puisse revenir à la bonne source. Une transcription peut ensuite servir de matériau à un processus distinct de résumé, de traduction ou de traitement éditorial.\n\n### Contexte, indications de mots-clés et langues attendues\n\nLe concepteur distingue trois types d’indications. Un prompt donne un contexte libre sur le sujet ou la situation de l’enregistrement. Les mots-clés donnent les mots ou expressions littéraux attendus dans la parole. Une liste de langues indique les langues parlées attendues. Pour une discussion bilingue sur un produit, décrivez la situation dans le prompt, répertoriez les noms de produits pertinents comme mots-clés et fournissez les langues attendues. Ce sont des indications de reconnaissance ; elles ne demandent pas d’insérer du vocabulaire que personne n’a prononcé.\n\nGPT Transcribe utilise le champ pluriel languages à la place de l’ancien champ singulier language ; OpenAI indique de ne pas envoyer les deux. Son guide accepte les codes ISO 639-1 pris en charge, certains codes ISO 639-3 et des codes régionaux de locale chinoise, avec rejet des valeurs non prises en charge ou mal formées. Chaque mot-clé doit tenir sur une seule ligne et ne doit contenir ni chevron, ni retour chariot, ni saut de ligne. Un mot-clé invalide ou un prompt trop long peut entraîner le rejet de toute la requête. Gardez un contexte pertinent et vérifiez si les noms suggérés figurent réellement dans l’audio plutôt que de traiter la liste d’indications comme la transcription.\n\n### Sortie JSON et prédictions de langues détectées\n\nLe résultat de fichier documenté est un objet JSON contenant la transcription et les langues détectées. Ces prédictions de langues sont la sortie du modèle, sans être une copie des indications de langues fournies. Une liste de langues vide est un résultat valide lorsque le modèle ne peut pas formuler une prédiction fiable ; elle n’établit pas que l’enregistrement était silencieux ou que la transcription a échoué. Gardez le texte reconnu et les métadonnées de langue distincts afin que les traitements suivants puissent utiliser chaque élément selon sa signification.\n\n### Diffuser progressivement la transcription d’un fichier\n\nUn fichier complet peut produire progressivement du texte transcrit pendant son traitement. OpenAI documente les événements transcript.text.delta pour le texte partiel et transcript.text.done pour la transcription complète du fichier ; l’événement final comprend aussi les langues détectées. Ce processus diffuse progressivement la sortie d’un enregistrement déjà fourni. Il permet d’afficher l’avancement d’un long envoi, tandis que l’événement final établit le texte à conserver comme résultat achevé.\n\n### Tours audio explicitement clôturés dans les sessions Realtime\n\nGPT Transcribe possède aussi un processus Realtime spécialisé par WebSocket. L’audio est ajouté au tampon d’entrée, puis l’application marque explicitement la fin d’un tour audio. La transcription commence pour ce segment clôturé et peut émettre des fragments de texte avant son événement d’achèvement, avec des informations de langues détectées. Le modèle utilise automatiquement les tours déjà transcrits comme contexte dans ce processus de session du concepteur. Cela se distingue de l’émission continue de sous-titres en direct à mesure que l’audio du microphone arrive ; OpenAI nomme GPT Live Transcribe pour ce processus continu.\n\nPour plusieurs tours, conservez l’identifiant de l’élément d’entrée avec la transcription correspondante. OpenAI avertit que les événements d’achèvement de tours différents peuvent arriver dans un autre ordre que celui de la parole : associez donc chaque résultat final à son entrée clôturée plutôt que d’ordonner une conversation uniquement selon l’heure d’achèvement. Le résultat utile est une transcription ordonnée assemblée à partir des bons éléments finaux, le texte intermédiaire étant traité comme un avancement plutôt que comme un énoncé achevé distinct.\n\n### Sorties spécialisées et limites de fond\n\nCe profil ne fournit pas un contrat universel de sous-titres, d’horodatages, de traduction ou d’étiquettes de locuteurs. Le guide de migration d’OpenAI distingue ces capacités spécialisées : les formats de sous-titres pris en charge nativement et les repères temporels par mot nécessitent un modèle et un format compatibles, tandis que les étiquettes de locuteurs utilisent GPT-4o Transcribe Diarize. Le résultat de fichier de GPT Transcribe est JSON plutôt qu’une réponse directement substituable à SRT, VTT ou à des horodatages détaillés. Sa fiche de modèle exacte ne publie pas de valeur numérique de contexte ou de plafond de sortie : il ne faut donc pas supposer qu’une fenêtre de tokens de modèle de chat s’applique à la transcription audio.\n\nVérifiez le vocabulaire difficile, les nombres, les accents, le bruit de fond et les changements de langue par rapport à l’enregistrement. Vérifiez que les indications pertinentes ont amélioré la reconnaissance sans introduire de termes non prononcés et que la transcription finale comprend la fin de l’audio. Pour un résultat multilingue, préservez les paroles prononcées avant de préparer une version traduite. Ces vérifications rendent la transcription utile comme matériau source tout en distinguant clairement les indications de contexte, les langues détectées et la parole reconnue.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "89bcc911b3b9f878a15b69f41ac98a6f7525fa6b69e3f368e89ae9cc81b2d82c",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "fr-ch",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">O</span><h2 id=\"sheet-title\">OpenAI: GPT Transcribe</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Fermer\">×</button></div><div class=\"idline\"><span>OpenAI /</span><code>openai/gpt-transcribe</code><button type=\"button\" id=\"copy-id\">Copier l’ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Rubriques de la fiche modèle\"><button type=\"button\" data-card-jump=\"overview\">Premiers pas</button><button type=\"button\" data-card-jump=\"methods\">Entrées et méthodes</button><button type=\"button\" data-card-jump=\"pricing\">Tarifs</button><button type=\"button\" data-card-jump=\"examples\">Exemples</button><button type=\"button\" data-card-jump=\"results\">Résultats</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Méthodes API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|transcriptions|/v1/audio/transcriptions|openai%2Fgpt-transcribe\">Reconnaissance</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Premiers pas</h3><p class=\"mdesc-full\">GPT Transcribe transforme la parole enregistrée en texte dans sa langue d’origine, avec des prompts de contexte, des indications de mots-clés littéraux et des indications de plusieurs langues. OpenAI documente la transcription de fichiers complets, la diffusion progressive des résultats de fichiers et la transcription après clôture explicite de tours audio Realtime.</p><dl class=\"card-io\" data-card-io><div><dt>Entrées acceptées</dt><dd>Audio</dd></div><div><dt>Résultats</dt><dd>Texte</dd></div></dl><details class=\"card-about\"><summary>À propos du modèle</summary><p class=\"note-s\" data-model-method-boundary>Cette description présente les capacités du modèle. Les entrées, sorties et options disponibles dans Ailoot pour la méthode sélectionnée figurent ci-dessous.</p><div class=\"mabout\" id=\"m-about\"><p>GPT Transcribe est le modèle de transcription de la parole d’OpenAI pour les fichiers audio complets, les transcriptions de fichiers diffusées progressivement et les tours audio explicitement clôturés dans les sessions Realtime. Il accepte de l’audio avec un contexte textuel facultatif et renvoie le texte reconnu. Le concepteur le présente pour la transcription précise de la parole enregistrée dans sa langue d’origine, notamment le vocabulaire spécialisé, les enregistrements multilingues et l’alternance entre langues. Sa sortie utile est une transcription qui reste liée à l’enregistrement, avec des métadonnées de langues détectées lorsque le modèle peut formuler une prédiction fiable.</p><h4>Préparer un enregistrement complet</h4><p>Le processus de transcription de fichiers d’OpenAI accepte des envois jusqu’à 25 MB. La référence actuelle du point de terminaison répertorie les formats d’entrée FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV et WebM et recommande assez de métadonnées de fichier pour identifier le format, notamment une extension de nom de fichier et un type de contenu adaptés. Pour un enregistrement plus volumineux, le guide recommande de le compresser ou de le découper en fichiers de 25 MB ou moins. Évitez de couper au milieu d’une phrase, car retirer la parole environnante peut réduire la précision de reconnaissance. Gardez les parties dans l’ordre et conservez leurs positions dans l’enregistrement d’origine.</p><p>Pour une réunion, un entretien ou une présentation enregistrée, fournissez l’audio réel et indiquez le sujet ainsi que toute terminologie susceptible d’être prononcée. Un résultat utile restitue les paroles reconnues plutôt qu’un résumé déduit de la discussion. Conservez l’identifiant de l’enregistrement avec le texte renvoyé afin qu’une personne vérifiant un nom, un nombre ou une expression incertaine puisse revenir à la bonne source. Une transcription peut ensuite servir de matériau à un processus distinct de résumé, de traduction ou de traitement éditorial.</p><h4>Contexte, indications de mots-clés et langues attendues</h4><p>Le concepteur distingue trois types d’indications. Un prompt donne un contexte libre sur le sujet ou la situation de l’enregistrement. Les mots-clés donnent les mots ou expressions littéraux attendus dans la parole. Une liste de langues indique les langues parlées attendues. Pour une discussion bilingue sur un produit, décrivez la situation dans le prompt, répertoriez les noms de produits pertinents comme mots-clés et fournissez les langues attendues. Ce sont des indications de reconnaissance ; elles ne demandent pas d’insérer du vocabulaire que personne n’a prononcé.</p><p>GPT Transcribe utilise le champ pluriel languages à la place de l’ancien champ singulier language ; OpenAI indique de ne pas envoyer les deux. Son guide accepte les codes ISO 639-1 pris en charge, certains codes ISO 639-3 et des codes régionaux de locale chinoise, avec rejet des valeurs non prises en charge ou mal formées. Chaque mot-clé doit tenir sur une seule ligne et ne doit contenir ni chevron, ni retour chariot, ni saut de ligne. Un mot-clé invalide ou un prompt trop long peut entraîner le rejet de toute la requête. Gardez un contexte pertinent et vérifiez si les noms suggérés figurent réellement dans l’audio plutôt que de traiter la liste d’indications comme la transcription.</p><h4>Sortie JSON et prédictions de langues détectées</h4><p>Le résultat de fichier documenté est un objet JSON contenant la transcription et les langues détectées. Ces prédictions de langues sont la sortie du modèle, sans être une copie des indications de langues fournies. Une liste de langues vide est un résultat valide lorsque le modèle ne peut pas formuler une prédiction fiable ; elle n’établit pas que l’enregistrement était silencieux ou que la transcription a échoué. Gardez le texte reconnu et les métadonnées de langue distincts afin que les traitements suivants puissent utiliser chaque élément selon sa signification.</p><h4>Diffuser progressivement la transcription d’un fichier</h4><p>Un fichier complet peut produire progressivement du texte transcrit pendant son traitement. OpenAI documente les événements transcript.text.delta pour le texte partiel et transcript.text.done pour la transcription complète du fichier ; l’événement final comprend aussi les langues détectées. Ce processus diffuse progressivement la sortie d’un enregistrement déjà fourni. Il permet d’afficher l’avancement d’un long envoi, tandis que l’événement final établit le texte à conserver comme résultat achevé.</p><h4>Tours audio explicitement clôturés dans les sessions Realtime</h4><p>GPT Transcribe possède aussi un processus Realtime spécialisé par WebSocket. L’audio est ajouté au tampon d’entrée, puis l’application marque explicitement la fin d’un tour audio. La transcription commence pour ce segment clôturé et peut émettre des fragments de texte avant son événement d’achèvement, avec des informations de langues détectées. Le modèle utilise automatiquement les tours déjà transcrits comme contexte dans ce processus de session du concepteur. Cela se distingue de l’émission continue de sous-titres en direct à mesure que l’audio du microphone arrive ; OpenAI nomme GPT Live Transcribe pour ce processus continu.</p><p>Pour plusieurs tours, conservez l’identifiant de l’élément d’entrée avec la transcription correspondante. OpenAI avertit que les événements d’achèvement de tours différents peuvent arriver dans un autre ordre que celui de la parole : associez donc chaque résultat final à son entrée clôturée plutôt que d’ordonner une conversation uniquement selon l’heure d’achèvement. Le résultat utile est une transcription ordonnée assemblée à partir des bons éléments finaux, le texte intermédiaire étant traité comme un avancement plutôt que comme un énoncé achevé distinct.</p><h4>Sorties spécialisées et limites de fond</h4><p>Ce profil ne fournit pas un contrat universel de sous-titres, d’horodatages, de traduction ou d’étiquettes de locuteurs. Le guide de migration d’OpenAI distingue ces capacités spécialisées : les formats de sous-titres pris en charge nativement et les repères temporels par mot nécessitent un modèle et un format compatibles, tandis que les étiquettes de locuteurs utilisent GPT-4o Transcribe Diarize. Le résultat de fichier de GPT Transcribe est JSON plutôt qu’une réponse directement substituable à SRT, VTT ou à des horodatages détaillés. Sa fiche de modèle exacte ne publie pas de valeur numérique de contexte ou de plafond de sortie : il ne faut donc pas supposer qu’une fenêtre de tokens de modèle de chat s’applique à la transcription audio.</p><p>Vérifiez le vocabulaire difficile, les nombres, les accents, le bruit de fond et les changements de langue par rapport à l’enregistrement. Vérifiez que les indications pertinentes ont amélioré la reconnaissance sans introduire de termes non prononcés et que la transcription finale comprend la fin de l’audio. Pour un résultat multilingue, préservez les paroles prononcées avant de préparer une version traduite. Ces vérifications rendent la transcription utile comme matériau source tout en distinguant clairement les indications de contexte, les langues détectées et la parole reconnue.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponible dans Ailoot · entrées et méthodes</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Transcription audio</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Entrée</dt><dd><code>audio</code></dd></div><div><dt>Sortie</dt><dd><code>text</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Champ</th><th>Type</th><th>Exigence</th><th>Valeurs et limites</th><th>Par défaut</th></tr></thead><tbody><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Obligatoire</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>openai/gpt-transcribe</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>object</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Obligatoire</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Paramètres et cycle de vie de la méthode</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Paramètre</th><th>Contrat</th></tr></thead><tbody><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>content_type</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>application/json</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>required</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>model, input_audio</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>material_types</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>audio</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>material_conditions</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>L’exemple lit votre fichier PCM WAV réel et non vide, encode l’intégralité de ses octets en base64 et envoie input_audio.format avec la valeur wav.</td></tr></tbody></table></div><p>Cycle de vie : <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · task_id exact provenant d’un enregistrement multimédia existant dont vous êtes propriétaire</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarifs</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Les tarifs n’ajoutent pas d’options de requête. Les paramètres pris en charge figurent dans la méthode sélectionnée.</p><dl data-price-conditions><dt>Mode rapide</dt><dd>Non précisé <span class=\"note-s\">Lorsque le mode rapide est sélectionné</span></dd><dt>Mode Flex</dt><dd>Non précisé <span class=\"note-s\">Lorsque le mode flex est sélectionné</span></dd><dt>Effort de raisonnement maximal</dt><dd>Non précisé <span class=\"note-s\">Lorsque l’effort de raisonnement maximal utilise l’ajustement par défaut (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarifs Ailoot</h4><h4>Prix par configuration</h4><p class=\"note-s\">Associez chaque coût aux conditions indiquées. Utilisez un seul tarif pour chaque ensemble de configurations alternatives.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuration</th><th>Barème tarifaire</th><th>Unité de facturation</th><th>Coût</th></tr></thead><tbody><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Tarifs de base des jetons</th><td data-cell-label=\"Barème tarifaire\"><span class=\"card-cell-label\">Barème tarifaire</span>Tarif de base</td><td data-cell-label=\"Unité de facturation\"><span class=\"card-cell-label\">Unité de facturation</span>—</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Entrée · Tokens en entrée</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Sortie · Tokens en sortie</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrée · Lecture du cache</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrée · Écriture dans le cache</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrée · Écriture dans le cache, 1 h</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>seconde d’audio en entrée</th><td data-cell-label=\"Barème tarifaire\"><span class=\"card-cell-label\">Barème tarifaire</span>—</td><td data-cell-label=\"Unité de facturation\"><span class=\"card-cell-label\">Unité de facturation</span>par seconde d’audio en entrée</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Entrée · seconde d’audio en entrée</span> <b>$0.00015</b> <span class=\"price-unit\">par seconde d’audio en entrée</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. <a href=\"/docs/fr-ch/billing/reserve/\">Fonctionnement de la réservation et du débit →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Exemples de requêtes</h3><h4>Ailoot Ultra · Transcription audio</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes du code\"><button class=\"cg-tab\" id=\"model-code-2158-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2158-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · fichier WAV réel et résultat original complet</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copier le code\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2158-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2158-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;]).read_bytes()\nif not (audio[:4] == b&#39;RIFF&#39; and audio[8:12] == b&#39;WAVE&#39;):\n    raise SystemExit(&#39;Supply your actual PCM WAV audio file&#39;)\nwith wave.open(io.BytesIO(audio), &#39;rb&#39;) as recording:\n    if recording.getcomptype() != &#39;NONE&#39; or recording.getnframes() &lt;= 0:\n        raise SystemExit(&#39;Supply a nonempty PCM WAV recording&#39;)\nrequest = {&#39;model&#39;: &#39;openai/gpt-transcribe&#39;, &#39;input_audio&#39;: {&#39;data&#39;: base64.b64encode(audio).decode(&#39;ascii&#39;), &#39;format&#39;: &#39;wav&#39;}}\nPath(&#39;request.json&#39;).write_text(json.dumps(request, ensure_ascii=False), encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Recevoir et enregistrer les résultats</h3><h4>Ailoot Ultra · Transcription audio</h4><p class=\"note-s\">Corps complet de la réponse d’origine, état et en-têtes transmis. Ce gestionnaire n’ajoute aucune structure JSON universelle, aucun champ texte ni aucune enveloppe de tâche.</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Conserver tous les résultats terminés</h5><p class=\"note-s\">Conservez chaque réponse, fichier et partie de contenu renvoyés dans leur intégralité.</p><p class=\"note-s\">Conservez la réponse complète et les en-têtes, chaque sortie effective, les identifiants initialement renvoyés et tous les champs d’utilisation. Récupérez l’opération d’origine sans soumettre à nouveau sa création.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Si la réponse d’origine doit être vérifiée</h5><p class=\"note-s\">Conservez le X-Client-Request-ID réel et la réponse complète. Consultez les ressources d’origine dont vous êtes propriétaire et leurs liens de contenu signés exacts ; ne renvoyez jamais une demande de création incertaine.</p></div><details class=\"card-about\" data-output-fields><summary>Champs de la réponse</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Champ</th><th>Type</th></tr></thead><tbody><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">text (when present)</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span></td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span></td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Erreurs et étapes suivantes</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Réponse</th><th>Condition</th><th>Étape suivante</th></tr></thead><tbody><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Le corps JSON ou l’identifiant canonique explicite du modèle est invalide.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Conservez la réponse et corrigez le champ indiqué dans la requête.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>La clé API Ailoot est invalide.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Utilisez votre clé API Ailoot autorisée.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>403 · <code>permission_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Le groupe de la clé n’autorise pas cette méthode.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Conservez les détails de l’erreur renvoyée.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>La méthode sélectionnée ne dispose d’aucune route autorisée.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Conservez les détails de l’erreur renvoyée.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Le tarif accepté ne peut pas déterminer la quantité d’entrée requise ou sa borne.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Conservez la réponse ; utilisez la représentation d’entrée requise par le tarif accepté.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>503 · <code></code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Le stockage, la route, le tarif de la méthode ou la réservation requis est indisponible.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Conservez la réponse d’origine complète. Une réservation incertaine n’autorise pas le renvoi de la demande.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>502 · <code>server_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Le résultat d’origine, la consommation ou la facturation définitive nécessite une vérification.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Conservez l’identifiant réel de la requête et la réponse d’origine. Consultez l’enregistrement existant dont vous êtes propriétaire ; ne renvoyez pas la demande de création.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias du modèle</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=openai%2Fgpt-transcribe&amp;route=Ultra&amp;caller=openai%2Fgpt-transcribe&amp;fmt=transcriptions\"><code>openai/gpt-transcribe</code></a></span></p><h4>Alias des chemins de méthode</h4><p class=\"note-s\">Utilisez les chemins de méthode indiqués ci-dessus.</p><h4>ID d’appel associés</h4><p class=\"note-s\"><a href=\"#m=openai%2Fgpt-transcribe&amp;route=Ultra&amp;caller=openai%2Fgpt-transcribe&amp;fmt=transcriptions\"><code>openai/gpt-transcribe</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "openai/gpt-transcribe",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|openai%2Fgpt-transcribe",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "Le corps JSON ou l’identifiant canonique explicite du modèle est invalide.",
                "http_status": 400,
                "recovery": "Conservez la réponse et corrigez le champ indiqué dans la requête.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La clé API Ailoot est invalide.",
                "http_status": 401,
                "recovery": "Utilisez votre clé API Ailoot autorisée.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Le groupe de la clé n’autorise pas cette méthode.",
                "http_status": 403,
                "recovery": "Conservez les détails de l’erreur renvoyée.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "La méthode sélectionnée ne dispose d’aucune route autorisée.",
                "http_status": 404,
                "recovery": "Conservez les détails de l’erreur renvoyée.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Le tarif accepté ne peut pas déterminer la quantité d’entrée requise ou sa borne.",
                "http_status": 422,
                "recovery": "Conservez la réponse ; utilisez la représentation d’entrée requise par le tarif accepté.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Le stockage, la route, le tarif de la méthode ou la réservation requis est indisponible.",
                "http_status": 503,
                "recovery": "Conservez la réponse d’origine complète. Une réservation incertaine n’autorise pas le renvoi de la demande.",
                "type": null
              },
              {
                "code": null,
                "condition": "Le résultat d’origine, la consommation ou la facturation définitive nécessite une vérification.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Conservez l’identifiant réel de la requête et la réponse d’origine. Consultez l’enregistrement existant dont vous êtes propriétaire ; ne renvoyez pas la demande de création.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conservez le X-Client-Request-ID réel et la réponse complète. Consultez les ressources d’origine dont vous êtes propriétaire et leurs liens de contenu signés exacts ; ne renvoyez jamais une demande de création incertaine."
            },
            "outputs": {
              "all_results": "Conservez la réponse complète et les en-têtes, chaque sortie effective, les identifiants initialement renvoyés et tous les champs d’utilisation. Récupérez l’opération d’origine sans soumettre à nouveau sa création.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Corps complet de la réponse d’origine, état et en-têtes transmis. Ce gestionnaire n’ajoute aucune structure JSON universelle, aucun champ texte ni aucune enveloppe de tâche."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "openai/gpt-transcribe"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "openai/gpt-transcribe"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "openai/gpt-transcribe"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "L’exemple lit votre fichier PCM WAV réel et non vide, encode l’intégralité de ses octets en base64 et envoie input_audio.format avec la valeur wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id exact provenant d’un enregistrement multimédia existant dont vous êtes propriétaire",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'openai/gpt-transcribe', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Transcription audio",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.00015
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00015",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00015",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "openai/gpt-transcribe",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "f789e4e3e6ed736d6782dd69a8806e572d3233db877776d332f90ecf0a8c1043",
    "input_html_sha256": "c3423c8b6acd167fd1eae30b94bb66a2270a10377540bef50171d29d983df37c",
    "private_audit_sha256": "c4af05a2e647448dcd4a1a3c6cc2d2a5aa75e46e66f1df967cdf84ad5706e7bc",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fr-ch/openai-gpt-transcribe/",
    "description": "GPT Transcribe transforme la parole enregistrée en texte dans sa langue d’origine, avec des prompts de contexte, des indications de mots-clés littéraux et des indications de plusieurs langues. OpenAI documente la transcription de fichiers complets, la diffusion progressive des résultats de fichiers et la transcription après clôture explicite de tours audio Realtime.",
    "locale": "fr-ch",
    "md_url": "https://ailoot.ai/models/fr-ch/openai-gpt-transcribe/index.md",
    "title": "OpenAI: GPT Transcribe — Ailoot",
    "url": "https://ailoot.ai/models/fr-ch/openai-gpt-transcribe/"
  },
  "rawModel": {
    "about": "GPT Transcribe est le modèle de transcription de la parole d’OpenAI pour les fichiers audio complets, les transcriptions de fichiers diffusées progressivement et les tours audio explicitement clôturés dans les sessions Realtime. Il accepte de l’audio avec un contexte textuel facultatif et renvoie le texte reconnu. Le concepteur le présente pour la transcription précise de la parole enregistrée dans sa langue d’origine, notamment le vocabulaire spécialisé, les enregistrements multilingues et l’alternance entre langues. Sa sortie utile est une transcription qui reste liée à l’enregistrement, avec des métadonnées de langues détectées lorsque le modèle peut formuler une prédiction fiable.\n\n### Préparer un enregistrement complet\n\nLe processus de transcription de fichiers d’OpenAI accepte des envois jusqu’à 25 MB. La référence actuelle du point de terminaison répertorie les formats d’entrée FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV et WebM et recommande assez de métadonnées de fichier pour identifier le format, notamment une extension de nom de fichier et un type de contenu adaptés. Pour un enregistrement plus volumineux, le guide recommande de le compresser ou de le découper en fichiers de 25 MB ou moins. Évitez de couper au milieu d’une phrase, car retirer la parole environnante peut réduire la précision de reconnaissance. Gardez les parties dans l’ordre et conservez leurs positions dans l’enregistrement d’origine.\n\nPour une réunion, un entretien ou une présentation enregistrée, fournissez l’audio réel et indiquez le sujet ainsi que toute terminologie susceptible d’être prononcée. Un résultat utile restitue les paroles reconnues plutôt qu’un résumé déduit de la discussion. Conservez l’identifiant de l’enregistrement avec le texte renvoyé afin qu’une personne vérifiant un nom, un nombre ou une expression incertaine puisse revenir à la bonne source. Une transcription peut ensuite servir de matériau à un processus distinct de résumé, de traduction ou de traitement éditorial.\n\n### Contexte, indications de mots-clés et langues attendues\n\nLe concepteur distingue trois types d’indications. Un prompt donne un contexte libre sur le sujet ou la situation de l’enregistrement. Les mots-clés donnent les mots ou expressions littéraux attendus dans la parole. Une liste de langues indique les langues parlées attendues. Pour une discussion bilingue sur un produit, décrivez la situation dans le prompt, répertoriez les noms de produits pertinents comme mots-clés et fournissez les langues attendues. Ce sont des indications de reconnaissance ; elles ne demandent pas d’insérer du vocabulaire que personne n’a prononcé.\n\nGPT Transcribe utilise le champ pluriel languages à la place de l’ancien champ singulier language ; OpenAI indique de ne pas envoyer les deux. Son guide accepte les codes ISO 639-1 pris en charge, certains codes ISO 639-3 et des codes régionaux de locale chinoise, avec rejet des valeurs non prises en charge ou mal formées. Chaque mot-clé doit tenir sur une seule ligne et ne doit contenir ni chevron, ni retour chariot, ni saut de ligne. Un mot-clé invalide ou un prompt trop long peut entraîner le rejet de toute la requête. Gardez un contexte pertinent et vérifiez si les noms suggérés figurent réellement dans l’audio plutôt que de traiter la liste d’indications comme la transcription.\n\n### Sortie JSON et prédictions de langues détectées\n\nLe résultat de fichier documenté est un objet JSON contenant la transcription et les langues détectées. Ces prédictions de langues sont la sortie du modèle, sans être une copie des indications de langues fournies. Une liste de langues vide est un résultat valide lorsque le modèle ne peut pas formuler une prédiction fiable ; elle n’établit pas que l’enregistrement était silencieux ou que la transcription a échoué. Gardez le texte reconnu et les métadonnées de langue distincts afin que les traitements suivants puissent utiliser chaque élément selon sa signification.\n\n### Diffuser progressivement la transcription d’un fichier\n\nUn fichier complet peut produire progressivement du texte transcrit pendant son traitement. OpenAI documente les événements transcript.text.delta pour le texte partiel et transcript.text.done pour la transcription complète du fichier ; l’événement final comprend aussi les langues détectées. Ce processus diffuse progressivement la sortie d’un enregistrement déjà fourni. Il permet d’afficher l’avancement d’un long envoi, tandis que l’événement final établit le texte à conserver comme résultat achevé.\n\n### Tours audio explicitement clôturés dans les sessions Realtime\n\nGPT Transcribe possède aussi un processus Realtime spécialisé par WebSocket. L’audio est ajouté au tampon d’entrée, puis l’application marque explicitement la fin d’un tour audio. La transcription commence pour ce segment clôturé et peut émettre des fragments de texte avant son événement d’achèvement, avec des informations de langues détectées. Le modèle utilise automatiquement les tours déjà transcrits comme contexte dans ce processus de session du concepteur. Cela se distingue de l’émission continue de sous-titres en direct à mesure que l’audio du microphone arrive ; OpenAI nomme GPT Live Transcribe pour ce processus continu.\n\nPour plusieurs tours, conservez l’identifiant de l’élément d’entrée avec la transcription correspondante. OpenAI avertit que les événements d’achèvement de tours différents peuvent arriver dans un autre ordre que celui de la parole : associez donc chaque résultat final à son entrée clôturée plutôt que d’ordonner une conversation uniquement selon l’heure d’achèvement. Le résultat utile est une transcription ordonnée assemblée à partir des bons éléments finaux, le texte intermédiaire étant traité comme un avancement plutôt que comme un énoncé achevé distinct.\n\n### Sorties spécialisées et limites de fond\n\nCe profil ne fournit pas un contrat universel de sous-titres, d’horodatages, de traduction ou d’étiquettes de locuteurs. Le guide de migration d’OpenAI distingue ces capacités spécialisées : les formats de sous-titres pris en charge nativement et les repères temporels par mot nécessitent un modèle et un format compatibles, tandis que les étiquettes de locuteurs utilisent GPT-4o Transcribe Diarize. Le résultat de fichier de GPT Transcribe est JSON plutôt qu’une réponse directement substituable à SRT, VTT ou à des horodatages détaillés. Sa fiche de modèle exacte ne publie pas de valeur numérique de contexte ou de plafond de sortie : il ne faut donc pas supposer qu’une fenêtre de tokens de modèle de chat s’applique à la transcription audio.\n\nVérifiez le vocabulaire difficile, les nombres, les accents, le bruit de fond et les changements de langue par rapport à l’enregistrement. Vérifiez que les indications pertinentes ont amélioré la reconnaissance sans introduire de termes non prononcés et que la transcription finale comprend la fin de l’audio. Pour un résultat multilingue, préservez les paroles prononcées avant de préparer une version traduite. Ces vérifications rendent la transcription utile comme matériau source tout en distinguant clairement les indications de contexte, les langues détectées et la parole reconnue.",
    "alias_of": null,
    "aliases": [],
    "author": "OpenAI",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00015",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00015",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "La tarification complète de la configuration figure dans les détails."
      }
    ],
    "ctx": null,
    "formats": [
      "transcriptions"
    ],
    "id": "openai/gpt-transcribe",
    "input": [
      "audio"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "Le corps JSON ou l’identifiant canonique explicite du modèle est invalide.",
                "http_status": 400,
                "recovery": "Conservez la réponse et corrigez le champ indiqué dans la requête.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La clé API Ailoot est invalide.",
                "http_status": 401,
                "recovery": "Utilisez votre clé API Ailoot autorisée.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Le groupe de la clé n’autorise pas cette méthode.",
                "http_status": 403,
                "recovery": "Conservez les détails de l’erreur renvoyée.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "La méthode sélectionnée ne dispose d’aucune route autorisée.",
                "http_status": 404,
                "recovery": "Conservez les détails de l’erreur renvoyée.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Le tarif accepté ne peut pas déterminer la quantité d’entrée requise ou sa borne.",
                "http_status": 422,
                "recovery": "Conservez la réponse ; utilisez la représentation d’entrée requise par le tarif accepté.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Le stockage, la route, le tarif de la méthode ou la réservation requis est indisponible.",
                "http_status": 503,
                "recovery": "Conservez la réponse d’origine complète. Une réservation incertaine n’autorise pas le renvoi de la demande.",
                "type": null
              },
              {
                "code": null,
                "condition": "Le résultat d’origine, la consommation ou la facturation définitive nécessite une vérification.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Conservez l’identifiant réel de la requête et la réponse d’origine. Consultez l’enregistrement existant dont vous êtes propriétaire ; ne renvoyez pas la demande de création.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conservez le X-Client-Request-ID réel et la réponse complète. Consultez les ressources d’origine dont vous êtes propriétaire et leurs liens de contenu signés exacts ; ne renvoyez jamais une demande de création incertaine."
            },
            "outputs": {
              "all_results": "Conservez la réponse complète et les en-têtes, chaque sortie effective, les identifiants initialement renvoyés et tous les champs d’utilisation. Récupérez l’opération d’origine sans soumettre à nouveau sa création.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Corps complet de la réponse d’origine, état et en-têtes transmis. Ce gestionnaire n’ajoute aucune structure JSON universelle, aucun champ texte ni aucune enveloppe de tâche."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "openai/gpt-transcribe"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "openai/gpt-transcribe"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "openai/gpt-transcribe"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "L’exemple lit votre fichier PCM WAV réel et non vide, encode l’intégralité de ses octets en base64 et envoie input_audio.format avec la valeur wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id exact provenant d’un enregistrement multimédia existant dont vous êtes propriétaire",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'openai/gpt-transcribe', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Transcription audio",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.00015
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00015",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00015",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00015",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00015",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "openai/gpt-transcribe",
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra"
      }
    ],
    "name": "OpenAI: GPT Transcribe",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "GPT Transcribe transforme la parole enregistrée en texte dans sa langue d’origine, avec des prompts de contexte, des indications de mots-clés littéraux et des indications de plusieurs langues. OpenAI documente la transcription de fichiers complets, la diffusion progressive des résultats de fichiers et la transcription après clôture explicite de tours audio Realtime."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "GPT Transcribe transforme la parole enregistrée en texte dans sa langue d’origine, avec des prompts de contexte, des indications de mots-clés littéraux et des indications de plusieurs langues. OpenAI documente la transcription de fichiers complets, la diffusion progressive des résultats de fichiers et la transcription après clôture explicite de tours audio Realtime.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "8123a9dc2fe1c39b18e8245cafa329f5fbb7594ad35edc5e5c47811d33b40944",
    "renderer_sha256": "4d2f3bfcbf0fa5c616c87aa9524d00d7cff227d8dfa2446ff47c8e0220325dc9"
  },
  "sourceRevision": "6b53b8f1e6c3064c141e6dcd99f3c9cbb292ade06ee8c7a1abac306a47ea2150"
}
