{
  "aboutHtml": "<p>ElevenLabs Scribe v2 est le modèle de reconnaissance vocale par lots pour l’audio enregistré, la transcription et le sous-titrage. Il reprend Scribe v1 en améliorant le traitement des longs enregistrements, des pauses, des changements de ton et des silences prolongés. Le résultat est la parole écrite, avec des informations de minutage et des annotations facultatives de locuteurs et d’événements audio. Scribe v2 Realtime est une édition distincte de transcription en direct ; ce modèle sert à traiter des enregistrements complets.</p><p>Le concepteur documente la reconnaissance de plus de 90 langues et la détection automatique de langue, y compris pour les enregistrements changeant de langue. Une indication de langue connue peut aider le modèle à interpréter l’audio. Préparez un enregistrement clair, conservez la langue et les noms originaux, et évitez l’écrêtage important ou les traitements inutiles qui retirent des détails de parole. Les entrées courantes documentées comprennent WAV, MP3, FLAC, M4A, AAC, OGG, Opus et WebM. Choisissez une représentation d’entrée prise en charge par l’implémentation de transcription et préservez l’enregistrement source pour la relecture.</p><p>La réponse standard contient le texte reconnu, les informations de langue détectée et une séquence de mots minutés. Les enregistrements de mots peuvent inclure les heures de début et de fin, les identifiants de locuteur et une log-probabilité de reconnaissance. Cela rend le résultat utile pour les sous-titres, les entretiens consultables par recherche ou un éditeur revenant au son pertinent. Gardez le résultat minuté avec l’audio source. Pour un podcast, par exemple, le livrable peut être une transcription modifiable et un enregistrement aligné sur les mots permettant de localiser les corrections avant de composer les sous-titres.</p><p>La diarisation indique qui parle et quand dans un audio à plusieurs locuteurs, le concepteur en documentant jusqu’à 32. Activez-la lorsque les tours de parole sont importants, et fournissez un nombre raisonnable de locuteurs si cette information est connue. Distinguez un libellé de locuteur détecté du nom d’une personne vérifiée. Pour un entretien ou une réunion, vérifiez les changements de tour dans l’enregistrement, surtout lorsque les voix se chevauchent ou se ressemblent. Un libellé aide à organiser la transcription ; il n’établit pas seul l’identité du locuteur.</p><p>Un enregistrement avec un locuteur par canal a une structure différente de plusieurs voix mixées dans un seul canal. L’interface du producteur peut traiter jusqu’à cinq canaux indépendamment et renvoyer des transcriptions séparées ou une transcription combinée dans l’ordre temporel, avec des index de canal. Préservez cette disposition des canaux lorsqu’elle est significative. Aplatir un enregistrement d’appel séparé avant transcription peut supprimer une source utile d’informations sur les locuteurs. Distinguez l’attribution par canal de la diarisation déduite d’un audio mixé. La réponse combinant les canaux exige des horodatages et ne peut inclure ni détection ni masquage des entités.</p><p>Le guidage par termes clés oriente la reconnaissance des noms, des termes de produit et du vocabulaire spécialisé à l’aide du contexte. La documentation actuelle du traitement par lots autorise jusqu’à 1 000 termes, chacun de moins de 50 caractères et de cinq mots au maximum. Fournissez les orthographes pertinentes plutôt qu’un vaste catalogue sans rapport. Pour un entretien technique, fournissez les noms de produits et abréviations susceptibles d’apparaître, puis examinez-les à leurs horodatages dans le résultat. Les termes clés orientent la reconnaissance ; ce ne sont pas des instructions pour insérer un terme que l’enregistrement n’étaye pas.</p><p>Choisissez l’objectif de la transcription avant de la nettoyer. Un enregistrement verbatim conserve la formulation orale, tandis que l’option documentée no-verbatim retire les mots de remplissage, les faux départs et les disfluences pour un résultat plus lisible. L’étiquetage audio dynamique peut identifier des événements non vocaux comme les rires ou les pas. Une transcription soignée peut être utile pour les sous-titres ou la lecture, mais elle ne doit pas remplacer silencieusement l’enregistrement brut lorsque les répétitions, corrections ou sons non vocaux sont importants pour la tâche.</p><p>Le concepteur documente également la détection d’entités et la modification expérimentale des transcriptions. La modification de transcription ne peut être combinée avec la détection d’entités, le masquage d’entités ou la transcription multicanal dans l’interface du producteur. Les entités détectées fournissent des positions structurées pour certaines informations de la transcription. Le masquage facultatif remplace le texte détecté par des libellés ; il dépend de la détection d’entités, et la liste d’entités n’est pas renvoyée lorsqu’il est activé. Le masquage intervient pendant la transcription, avec un marqueur de remplacement générique, un libellé de catégorie ou un libellé de catégorie numéroté. Le masquage automatique peut manquer des contenus sensibles ; examinez donc la transcription masquée avant de la partager. Une modification en langage naturel renvoie un texte modifié avec le résultat original, en gardant disponible le minutage et l’enregistrement des locuteurs d’origine. Gardez ces livrables distincts : une orthographe corrigée ou une phrase remise en forme peut nécessiter une nouvelle vérification avant d’être alignée sur l’audio ou utilisée dans une extraction en aval. Ces fonctionnalités traitent la transcription ; elles ne prouvent pas que chaque détail important a été correctement reconnu.</p><p>Pour une transcription achevée, vérifiez les noms, nombres, négations et changements de locuteur en revenant à l’audio correspondant. Soyez attentif aux passages faibles, aux chevauchements et aux changements de langue, plutôt que de juger la qualité uniquement sur la fluidité du texte. Conservez les formulations incertaines à corriger plutôt que de compléter un passage inaudible par une phrase plausible. Le résultat utile est un enregistrement textuel vérifié, avec le minutage et les informations de locuteur nécessaires à l’usage prévu ; une transcription peut ensuite servir d’entrée à une étape distincte de synthèse, de traduction ou d’analyse.</p>",
  "aboutText": "ElevenLabs Scribe v2 est le modèle de reconnaissance vocale par lots pour l’audio enregistré, la transcription et le sous-titrage. Il reprend Scribe v1 en améliorant le traitement des longs enregistrements, des pauses, des changements de ton et des silences prolongés. Le résultat est la parole écrite, avec des informations de minutage et des annotations facultatives de locuteurs et d’événements audio. Scribe v2 Realtime est une édition distincte de transcription en direct ; ce modèle sert à traiter des enregistrements complets.\n\nLe concepteur documente la reconnaissance de plus de 90 langues et la détection automatique de langue, y compris pour les enregistrements changeant de langue. Une indication de langue connue peut aider le modèle à interpréter l’audio. Préparez un enregistrement clair, conservez la langue et les noms originaux, et évitez l’écrêtage important ou les traitements inutiles qui retirent des détails de parole. Les entrées courantes documentées comprennent WAV, MP3, FLAC, M4A, AAC, OGG, Opus et WebM. Choisissez une représentation d’entrée prise en charge par l’implémentation de transcription et préservez l’enregistrement source pour la relecture.\n\nLa réponse standard contient le texte reconnu, les informations de langue détectée et une séquence de mots minutés. Les enregistrements de mots peuvent inclure les heures de début et de fin, les identifiants de locuteur et une log-probabilité de reconnaissance. Cela rend le résultat utile pour les sous-titres, les entretiens consultables par recherche ou un éditeur revenant au son pertinent. Gardez le résultat minuté avec l’audio source. Pour un podcast, par exemple, le livrable peut être une transcription modifiable et un enregistrement aligné sur les mots permettant de localiser les corrections avant de composer les sous-titres.\n\nLa diarisation indique qui parle et quand dans un audio à plusieurs locuteurs, le concepteur en documentant jusqu’à 32. Activez-la lorsque les tours de parole sont importants, et fournissez un nombre raisonnable de locuteurs si cette information est connue. Distinguez un libellé de locuteur détecté du nom d’une personne vérifiée. Pour un entretien ou une réunion, vérifiez les changements de tour dans l’enregistrement, surtout lorsque les voix se chevauchent ou se ressemblent. Un libellé aide à organiser la transcription ; il n’établit pas seul l’identité du locuteur.\n\nUn enregistrement avec un locuteur par canal a une structure différente de plusieurs voix mixées dans un seul canal. L’interface du producteur peut traiter jusqu’à cinq canaux indépendamment et renvoyer des transcriptions séparées ou une transcription combinée dans l’ordre temporel, avec des index de canal. Préservez cette disposition des canaux lorsqu’elle est significative. Aplatir un enregistrement d’appel séparé avant transcription peut supprimer une source utile d’informations sur les locuteurs. Distinguez l’attribution par canal de la diarisation déduite d’un audio mixé. La réponse combinant les canaux exige des horodatages et ne peut inclure ni détection ni masquage des entités.\n\nLe guidage par termes clés oriente la reconnaissance des noms, des termes de produit et du vocabulaire spécialisé à l’aide du contexte. La documentation actuelle du traitement par lots autorise jusqu’à 1 000 termes, chacun de moins de 50 caractères et de cinq mots au maximum. Fournissez les orthographes pertinentes plutôt qu’un vaste catalogue sans rapport. Pour un entretien technique, fournissez les noms de produits et abréviations susceptibles d’apparaître, puis examinez-les à leurs horodatages dans le résultat. Les termes clés orientent la reconnaissance ; ce ne sont pas des instructions pour insérer un terme que l’enregistrement n’étaye pas.\n\nChoisissez l’objectif de la transcription avant de la nettoyer. Un enregistrement verbatim conserve la formulation orale, tandis que l’option documentée no-verbatim retire les mots de remplissage, les faux départs et les disfluences pour un résultat plus lisible. L’étiquetage audio dynamique peut identifier des événements non vocaux comme les rires ou les pas. Une transcription soignée peut être utile pour les sous-titres ou la lecture, mais elle ne doit pas remplacer silencieusement l’enregistrement brut lorsque les répétitions, corrections ou sons non vocaux sont importants pour la tâche.\n\nLe concepteur documente également la détection d’entités et la modification expérimentale des transcriptions. La modification de transcription ne peut être combinée avec la détection d’entités, le masquage d’entités ou la transcription multicanal dans l’interface du producteur. Les entités détectées fournissent des positions structurées pour certaines informations de la transcription. Le masquage facultatif remplace le texte détecté par des libellés ; il dépend de la détection d’entités, et la liste d’entités n’est pas renvoyée lorsqu’il est activé. Le masquage intervient pendant la transcription, avec un marqueur de remplacement générique, un libellé de catégorie ou un libellé de catégorie numéroté. Le masquage automatique peut manquer des contenus sensibles ; examinez donc la transcription masquée avant de la partager. Une modification en langage naturel renvoie un texte modifié avec le résultat original, en gardant disponible le minutage et l’enregistrement des locuteurs d’origine. Gardez ces livrables distincts : une orthographe corrigée ou une phrase remise en forme peut nécessiter une nouvelle vérification avant d’être alignée sur l’audio ou utilisée dans une extraction en aval. Ces fonctionnalités traitent la transcription ; elles ne prouvent pas que chaque détail important a été correctement reconnu.\n\nPour une transcription achevée, vérifiez les noms, nombres, négations et changements de locuteur en revenant à l’audio correspondant. Soyez attentif aux passages faibles, aux chevauchements et aux changements de langue, plutôt que de juger la qualité uniquement sur la fluidité du texte. Conservez les formulations incertaines à corriger plutôt que de compléter un passage inaudible par une phrase plausible. Le résultat utile est un enregistrement textuel vérifié, avec le minutage et les informations de locuteur nécessaires à l’usage prévu ; une transcription peut ensuite servir d’entrée à une étape distincte de synthèse, de traduction ou d’analyse.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "ad1e968c09282089a1a589c5ed66c34c2c46c819daecc5be5857a4aaecd60176",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "fr",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">ElevenLabs: Scribe v2</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Fermer\">×</button></div><div class=\"idline\"><span>ElevenLabs /</span><code>elevenlabs/scribe-v2</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|elevenlabs%2Fscribe-v2\">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\">ElevenLabs Scribe v2 transcrit l’audio enregistré dans plus de 90 langues, avec minutage au mot, diarisation facultative des locuteurs et étiquettes d’événements non vocaux. Il est conçu pour les longs enregistrements, les sous-titres et les transcriptions modifiables, avec des termes clés contextuels et le choix entre transcription verbatim ou nettoyée.</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>ElevenLabs Scribe v2 est le modèle de reconnaissance vocale par lots pour l’audio enregistré, la transcription et le sous-titrage. Il reprend Scribe v1 en améliorant le traitement des longs enregistrements, des pauses, des changements de ton et des silences prolongés. Le résultat est la parole écrite, avec des informations de minutage et des annotations facultatives de locuteurs et d’événements audio. Scribe v2 Realtime est une édition distincte de transcription en direct ; ce modèle sert à traiter des enregistrements complets.</p><p>Le concepteur documente la reconnaissance de plus de 90 langues et la détection automatique de langue, y compris pour les enregistrements changeant de langue. Une indication de langue connue peut aider le modèle à interpréter l’audio. Préparez un enregistrement clair, conservez la langue et les noms originaux, et évitez l’écrêtage important ou les traitements inutiles qui retirent des détails de parole. Les entrées courantes documentées comprennent WAV, MP3, FLAC, M4A, AAC, OGG, Opus et WebM. Choisissez une représentation d’entrée prise en charge par l’implémentation de transcription et préservez l’enregistrement source pour la relecture.</p><p>La réponse standard contient le texte reconnu, les informations de langue détectée et une séquence de mots minutés. Les enregistrements de mots peuvent inclure les heures de début et de fin, les identifiants de locuteur et une log-probabilité de reconnaissance. Cela rend le résultat utile pour les sous-titres, les entretiens consultables par recherche ou un éditeur revenant au son pertinent. Gardez le résultat minuté avec l’audio source. Pour un podcast, par exemple, le livrable peut être une transcription modifiable et un enregistrement aligné sur les mots permettant de localiser les corrections avant de composer les sous-titres.</p><p>La diarisation indique qui parle et quand dans un audio à plusieurs locuteurs, le concepteur en documentant jusqu’à 32. Activez-la lorsque les tours de parole sont importants, et fournissez un nombre raisonnable de locuteurs si cette information est connue. Distinguez un libellé de locuteur détecté du nom d’une personne vérifiée. Pour un entretien ou une réunion, vérifiez les changements de tour dans l’enregistrement, surtout lorsque les voix se chevauchent ou se ressemblent. Un libellé aide à organiser la transcription ; il n’établit pas seul l’identité du locuteur.</p><p>Un enregistrement avec un locuteur par canal a une structure différente de plusieurs voix mixées dans un seul canal. L’interface du producteur peut traiter jusqu’à cinq canaux indépendamment et renvoyer des transcriptions séparées ou une transcription combinée dans l’ordre temporel, avec des index de canal. Préservez cette disposition des canaux lorsqu’elle est significative. Aplatir un enregistrement d’appel séparé avant transcription peut supprimer une source utile d’informations sur les locuteurs. Distinguez l’attribution par canal de la diarisation déduite d’un audio mixé. La réponse combinant les canaux exige des horodatages et ne peut inclure ni détection ni masquage des entités.</p><p>Le guidage par termes clés oriente la reconnaissance des noms, des termes de produit et du vocabulaire spécialisé à l’aide du contexte. La documentation actuelle du traitement par lots autorise jusqu’à 1 000 termes, chacun de moins de 50 caractères et de cinq mots au maximum. Fournissez les orthographes pertinentes plutôt qu’un vaste catalogue sans rapport. Pour un entretien technique, fournissez les noms de produits et abréviations susceptibles d’apparaître, puis examinez-les à leurs horodatages dans le résultat. Les termes clés orientent la reconnaissance ; ce ne sont pas des instructions pour insérer un terme que l’enregistrement n’étaye pas.</p><p>Choisissez l’objectif de la transcription avant de la nettoyer. Un enregistrement verbatim conserve la formulation orale, tandis que l’option documentée no-verbatim retire les mots de remplissage, les faux départs et les disfluences pour un résultat plus lisible. L’étiquetage audio dynamique peut identifier des événements non vocaux comme les rires ou les pas. Une transcription soignée peut être utile pour les sous-titres ou la lecture, mais elle ne doit pas remplacer silencieusement l’enregistrement brut lorsque les répétitions, corrections ou sons non vocaux sont importants pour la tâche.</p><p>Le concepteur documente également la détection d’entités et la modification expérimentale des transcriptions. La modification de transcription ne peut être combinée avec la détection d’entités, le masquage d’entités ou la transcription multicanal dans l’interface du producteur. Les entités détectées fournissent des positions structurées pour certaines informations de la transcription. Le masquage facultatif remplace le texte détecté par des libellés ; il dépend de la détection d’entités, et la liste d’entités n’est pas renvoyée lorsqu’il est activé. Le masquage intervient pendant la transcription, avec un marqueur de remplacement générique, un libellé de catégorie ou un libellé de catégorie numéroté. Le masquage automatique peut manquer des contenus sensibles ; examinez donc la transcription masquée avant de la partager. Une modification en langage naturel renvoie un texte modifié avec le résultat original, en gardant disponible le minutage et l’enregistrement des locuteurs d’origine. Gardez ces livrables distincts : une orthographe corrigée ou une phrase remise en forme peut nécessiter une nouvelle vérification avant d’être alignée sur l’audio ou utilisée dans une extraction en aval. Ces fonctionnalités traitent la transcription ; elles ne prouvent pas que chaque détail important a été correctement reconnu.</p><p>Pour une transcription achevée, vérifiez les noms, nombres, négations et changements de locuteur en revenant à l’audio correspondant. Soyez attentif aux passages faibles, aux chevauchements et aux changements de langue, plutôt que de juger la qualité uniquement sur la fluidité du texte. Conservez les formulations incertaines à corriger plutôt que de compléter un passage inaudible par une phrase plausible. Le résultat utile est un enregistrement textuel vérifié, avec le minutage et les informations de locuteur nécessaires à l’usage prévu ; une transcription peut ensuite servir d’entrée à une étape distincte de synthèse, de traduction ou d’analyse.</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>Types d’entrée</dt><dd><code>audio</code></dd></div><div><dt>Types de 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>elevenlabs/scribe-v2</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 définit input_audio.format sur wav pour l’envoi.</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 média existant vous appartenant</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 par jeton</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.0001222222222222</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/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-1328-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1328-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · fichier WAV réel et résultat d’origine 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-1328-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1328-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;elevenlabs/scribe-v2&#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, statut 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 la valeur réelle de X-Client-Request-ID et la réponse complète. Consultez les ressources d’origine vous appartenant et leurs URL signées exactes de contenu ; ne soumettez jamais à nouveau une 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 n’est pas valide.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Conservez la réponse et corrigez le champ de requête indiqué.</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 n’est pas valide.</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és.</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és.</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 permet pas d’obtenir la quantité d’entrée ou la borne requise.</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 ne sont pas disponibles.</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 une nouvelle soumission.</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, l’utilisation ou le règlement 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 vous appartenant ; ne soumettez pas à nouveau la 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=elevenlabs%2Fscribe-v2&amp;route=Ultra&amp;caller=elevenlabs%2Fscribe-v2&amp;fmt=transcriptions\"><code>elevenlabs/scribe-v2</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=elevenlabs%2Fscribe-v2&amp;route=Ultra&amp;caller=elevenlabs%2Fscribe-v2&amp;fmt=transcriptions\"><code>elevenlabs/scribe-v2</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "elevenlabs/scribe-v2",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "elevenlabs/scribe-v2",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|elevenlabs%2Fscribe-v2",
      "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 n’est pas valide.",
                "http_status": 400,
                "recovery": "Conservez la réponse et corrigez le champ de requête indiqué.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La clé API Ailoot n’est pas valide.",
                "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és.",
                "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és.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Le tarif accepté ne permet pas d’obtenir la quantité d’entrée ou la borne requise.",
                "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 ne sont pas disponibles.",
                "http_status": 503,
                "recovery": "Conservez la réponse d’origine complète. Une réservation incertaine n’autorise pas une nouvelle soumission.",
                "type": null
              },
              {
                "code": null,
                "condition": "Le résultat d’origine, l’utilisation ou le règlement 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 vous appartenant ; ne soumettez pas à nouveau la 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 la valeur réelle de X-Client-Request-ID et la réponse complète. Consultez les ressources d’origine vous appartenant et leurs URL signées exactes de contenu ; ne soumettez jamais à nouveau une 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, statut 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": [
                  "elevenlabs/scribe-v2"
                ],
                "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": [
                    "elevenlabs/scribe-v2"
                  ],
                  "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": "elevenlabs/scribe-v2"
              },
              "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 définit input_audio.format sur wav pour l’envoi."
            ],
            "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 média existant vous appartenant",
                "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.0001222222222222",
                "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.0001222222222222",
                "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': 'elevenlabs/scribe-v2', '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.0001222222222222
          }
        },
        "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.0001222222222222",
                "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.0001222222222222",
                "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": "elevenlabs/scribe-v2",
        "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.0001222222222222",
            "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.0001222222222222",
            "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": "elevenlabs/scribe-v2",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "c989459cbd7f9ffbea635078aa7c40c4bd9710ce97e3695a0924abd457d4031a",
    "input_html_sha256": "f1425edae1fe835b8c0d6e037d7cf5d62b033d00b965af919fa17f92fdb74190",
    "private_audit_sha256": "026f90989c580bc6ae99eae4376440e326809ae3e9c0d00c5549bd65a296c52d",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fr/elevenlabs-scribe-v2/",
    "description": "ElevenLabs Scribe v2 transcrit l’audio enregistré dans plus de 90 langues, avec minutage au mot, diarisation facultative des locuteurs et étiquettes d’événements non vocaux. Il est conçu pour les longs enregistrements, les sous-titres et les transcriptions modifiables, avec des termes clés contextuels et le choix entre transcription verbatim ou nettoyée.",
    "locale": "fr",
    "md_url": "https://ailoot.ai/models/fr/elevenlabs-scribe-v2/index.md",
    "title": "ElevenLabs: Scribe v2 — Ailoot",
    "url": "https://ailoot.ai/models/fr/elevenlabs-scribe-v2/"
  },
  "rawModel": {
    "about": "ElevenLabs Scribe v2 est le modèle de reconnaissance vocale par lots pour l’audio enregistré, la transcription et le sous-titrage. Il reprend Scribe v1 en améliorant le traitement des longs enregistrements, des pauses, des changements de ton et des silences prolongés. Le résultat est la parole écrite, avec des informations de minutage et des annotations facultatives de locuteurs et d’événements audio. Scribe v2 Realtime est une édition distincte de transcription en direct ; ce modèle sert à traiter des enregistrements complets.\n\nLe concepteur documente la reconnaissance de plus de 90 langues et la détection automatique de langue, y compris pour les enregistrements changeant de langue. Une indication de langue connue peut aider le modèle à interpréter l’audio. Préparez un enregistrement clair, conservez la langue et les noms originaux, et évitez l’écrêtage important ou les traitements inutiles qui retirent des détails de parole. Les entrées courantes documentées comprennent WAV, MP3, FLAC, M4A, AAC, OGG, Opus et WebM. Choisissez une représentation d’entrée prise en charge par l’implémentation de transcription et préservez l’enregistrement source pour la relecture.\n\nLa réponse standard contient le texte reconnu, les informations de langue détectée et une séquence de mots minutés. Les enregistrements de mots peuvent inclure les heures de début et de fin, les identifiants de locuteur et une log-probabilité de reconnaissance. Cela rend le résultat utile pour les sous-titres, les entretiens consultables par recherche ou un éditeur revenant au son pertinent. Gardez le résultat minuté avec l’audio source. Pour un podcast, par exemple, le livrable peut être une transcription modifiable et un enregistrement aligné sur les mots permettant de localiser les corrections avant de composer les sous-titres.\n\nLa diarisation indique qui parle et quand dans un audio à plusieurs locuteurs, le concepteur en documentant jusqu’à 32. Activez-la lorsque les tours de parole sont importants, et fournissez un nombre raisonnable de locuteurs si cette information est connue. Distinguez un libellé de locuteur détecté du nom d’une personne vérifiée. Pour un entretien ou une réunion, vérifiez les changements de tour dans l’enregistrement, surtout lorsque les voix se chevauchent ou se ressemblent. Un libellé aide à organiser la transcription ; il n’établit pas seul l’identité du locuteur.\n\nUn enregistrement avec un locuteur par canal a une structure différente de plusieurs voix mixées dans un seul canal. L’interface du producteur peut traiter jusqu’à cinq canaux indépendamment et renvoyer des transcriptions séparées ou une transcription combinée dans l’ordre temporel, avec des index de canal. Préservez cette disposition des canaux lorsqu’elle est significative. Aplatir un enregistrement d’appel séparé avant transcription peut supprimer une source utile d’informations sur les locuteurs. Distinguez l’attribution par canal de la diarisation déduite d’un audio mixé. La réponse combinant les canaux exige des horodatages et ne peut inclure ni détection ni masquage des entités.\n\nLe guidage par termes clés oriente la reconnaissance des noms, des termes de produit et du vocabulaire spécialisé à l’aide du contexte. La documentation actuelle du traitement par lots autorise jusqu’à 1 000 termes, chacun de moins de 50 caractères et de cinq mots au maximum. Fournissez les orthographes pertinentes plutôt qu’un vaste catalogue sans rapport. Pour un entretien technique, fournissez les noms de produits et abréviations susceptibles d’apparaître, puis examinez-les à leurs horodatages dans le résultat. Les termes clés orientent la reconnaissance ; ce ne sont pas des instructions pour insérer un terme que l’enregistrement n’étaye pas.\n\nChoisissez l’objectif de la transcription avant de la nettoyer. Un enregistrement verbatim conserve la formulation orale, tandis que l’option documentée no-verbatim retire les mots de remplissage, les faux départs et les disfluences pour un résultat plus lisible. L’étiquetage audio dynamique peut identifier des événements non vocaux comme les rires ou les pas. Une transcription soignée peut être utile pour les sous-titres ou la lecture, mais elle ne doit pas remplacer silencieusement l’enregistrement brut lorsque les répétitions, corrections ou sons non vocaux sont importants pour la tâche.\n\nLe concepteur documente également la détection d’entités et la modification expérimentale des transcriptions. La modification de transcription ne peut être combinée avec la détection d’entités, le masquage d’entités ou la transcription multicanal dans l’interface du producteur. Les entités détectées fournissent des positions structurées pour certaines informations de la transcription. Le masquage facultatif remplace le texte détecté par des libellés ; il dépend de la détection d’entités, et la liste d’entités n’est pas renvoyée lorsqu’il est activé. Le masquage intervient pendant la transcription, avec un marqueur de remplacement générique, un libellé de catégorie ou un libellé de catégorie numéroté. Le masquage automatique peut manquer des contenus sensibles ; examinez donc la transcription masquée avant de la partager. Une modification en langage naturel renvoie un texte modifié avec le résultat original, en gardant disponible le minutage et l’enregistrement des locuteurs d’origine. Gardez ces livrables distincts : une orthographe corrigée ou une phrase remise en forme peut nécessiter une nouvelle vérification avant d’être alignée sur l’audio ou utilisée dans une extraction en aval. Ces fonctionnalités traitent la transcription ; elles ne prouvent pas que chaque détail important a été correctement reconnu.\n\nPour une transcription achevée, vérifiez les noms, nombres, négations et changements de locuteur en revenant à l’audio correspondant. Soyez attentif aux passages faibles, aux chevauchements et aux changements de langue, plutôt que de juger la qualité uniquement sur la fluidité du texte. Conservez les formulations incertaines à corriger plutôt que de compléter un passage inaudible par une phrase plausible. Le résultat utile est un enregistrement textuel vérifié, avec le minutage et les informations de locuteur nécessaires à l’usage prévu ; une transcription peut ensuite servir d’entrée à une étape distincte de synthèse, de traduction ou d’analyse.",
    "alias_of": null,
    "aliases": [],
    "author": "ElevenLabs",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0001222222222222",
            "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.0001222222222222",
            "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": "elevenlabs/scribe-v2",
    "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 n’est pas valide.",
                "http_status": 400,
                "recovery": "Conservez la réponse et corrigez le champ de requête indiqué.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La clé API Ailoot n’est pas valide.",
                "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és.",
                "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és.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Le tarif accepté ne permet pas d’obtenir la quantité d’entrée ou la borne requise.",
                "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 ne sont pas disponibles.",
                "http_status": 503,
                "recovery": "Conservez la réponse d’origine complète. Une réservation incertaine n’autorise pas une nouvelle soumission.",
                "type": null
              },
              {
                "code": null,
                "condition": "Le résultat d’origine, l’utilisation ou le règlement 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 vous appartenant ; ne soumettez pas à nouveau la 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 la valeur réelle de X-Client-Request-ID et la réponse complète. Consultez les ressources d’origine vous appartenant et leurs URL signées exactes de contenu ; ne soumettez jamais à nouveau une 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, statut 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": [
                  "elevenlabs/scribe-v2"
                ],
                "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": [
                    "elevenlabs/scribe-v2"
                  ],
                  "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": "elevenlabs/scribe-v2"
              },
              "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 définit input_audio.format sur wav pour l’envoi."
            ],
            "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 média existant vous appartenant",
                "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.0001222222222222",
                "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.0001222222222222",
                "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': 'elevenlabs/scribe-v2', '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.0001222222222222
          }
        },
        "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.0001222222222222",
                "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.0001222222222222",
                "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": "elevenlabs/scribe-v2",
        "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.0001222222222222",
            "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.0001222222222222",
            "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": "elevenlabs/scribe-v2",
        "request_model_id": "elevenlabs/scribe-v2",
        "route_label": "Ultra"
      }
    ],
    "name": "ElevenLabs: Scribe v2",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "ElevenLabs Scribe v2 transcrit l’audio enregistré dans plus de 90 langues, avec minutage au mot, diarisation facultative des locuteurs et étiquettes d’événements non vocaux. Il est conçu pour les longs enregistrements, les sous-titres et les transcriptions modifiables, avec des termes clés contextuels et le choix entre transcription verbatim ou nettoyée."
  },
  "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": "ElevenLabs Scribe v2 transcrit l’audio enregistré dans plus de 90 langues, avec minutage au mot, diarisation facultative des locuteurs et étiquettes d’événements non vocaux. Il est conçu pour les longs enregistrements, les sous-titres et les transcriptions modifiables, avec des termes clés contextuels et le choix entre transcription verbatim ou nettoyée.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "0e5c23f8475d6fe52a9a0fc98b8085dc8b80fb186ded5bc01ffbcf002022afde",
    "renderer_sha256": "44d2db1deadc475e1793597083716540bae7bbc53606f05f58780fec5f115dd4"
  },
  "sourceRevision": "d6ef5eec0dd6d5d1f01dd5a12497a58877e2b7825bae0e5263252e58862ccc66"
}
