{
  "aboutHtml": "<p>Transcribe 1 ist Fish Audios allgemeines Speech-to-Text-Modell für kurze Aufnahmen. Es nimmt eine Audiodatei entgegen und gibt die erkannten Wörter als Text zurück, zusammen mit der Aufnahmedauer, optionalen zeitlich zugeordneten Segmenten und Sprachinformationen, sofern diese bekannt sind. Das Modell eignet sich für eine kurze Sprachnotiz, eine gesprochene Anweisung, einen Aufnahmeausschnitt oder einen Audioclip, der eine lesbare Textdarstellung benötigt.</p><p>Ein beispielhafter Ablauf für Sprachnotizen bewahrt die Aufnahme gemeinsam mit ihrer vollständigen Transkription und einer Kennung des ursprünglichen Clips auf. Ein späterer Anwendungsschritt kann diesen Text durchsuchen, die Notiz ordnen oder eine Zusammenfassung erstellen und dabei die gesprochene Quelle erhalten. Bei einem Befehl liefert die Transkription der Anwendung die erkannten Wörter; jede Handlung ist ein gesonderter Interpretations- und Ausführungsschritt. Erfassen Sie bei einem Interviewausschnitt die Position des Clips im vollständigen Audio, damit ein Zitat an der richtigen Stelle überprüft werden kann.</p><p>Der Hersteller akzeptiert WAV, MP3, AAC einschließlich M4A/MP4, FLAC sowie Ogg mit Opus oder Vorbis. Browseraufnahmen in WebM sollten für dieses Modell in Ogg/Opus, MP3 oder WAV umgewandelt werden; Pro dokumentiert native Unterstützung weiterer Container. Stellen Sie pro Anfrage eine Audiodatei bereit. Das dokumentierte Anfragebudget des Basismodells beträgt bis zu 50 MiB, wobei MP3- und Opus-Dateien unter 25 MiB bleiben müssen. Dateigröße und Aufnahmelänge sind unterschiedliche Aspekte: Eine komprimierte Datei kann innerhalb des Uploadlimits liegen und trotzdem zu lange für die Verarbeitung benötigen.</p><p>Transcribe 1 ist für kurze Aufnahmen ausgelegt. Für Audio, das länger als einige Minuten dauert, empfiehlt der Hersteller Pro; eine lange Anfrage an das Basismodell kann scheitern, wenn sie das Verarbeitungslimit überschreitet. Bewahren Sie beim Vorbereiten einer längeren Quelle für die Transkription kurzer Clips den Anfangsversatz jedes Clips auf und bestätigen Sie vor dem Zusammenführen, dass die zurückgegebene Transkription den vollständigen Clip abdeckt. Addieren Sie den ursprünglichen Versatz zu lokalen Segmentzeiten, damit die Navigation mit der vollständigen Aufnahme verbunden bleibt. Die Empfehlungen für das Basismodell sollten nicht als das separate 60-Minuten-Budget von Pro verstanden werden.</p><p>Die Herstellerantwort umfasst Text, Dauer und Segmente. Die Dauer wird in Sekunden ausgedrückt, und die lesbare vollständige Transkription sollte als primärer Wortlaut des Clips erhalten bleiben. Zeitstempel sind optional: ignore_timestamps ist in der Hersteller-API standardmäßig true, während false Segmente auf Wortebene mit Text sowie Start- und Endzeiten in Sekunden anfordert. Die Anforderung der zeitlichen Ausrichtung verlängert die Verarbeitung. Ein leeres segments-Array kann auf übersprungene Zeitangaben, fehlende Sprache oder vorübergehend nicht verfügbare Ausrichtung zurückgehen und sollte daher nicht automatisch als leere vollständige Transkription verstanden werden.</p><p>Segmente sind im Allgemeinen Wörter oder bei Chinesisch und Japanisch ein oder wenige Zeichen. Ihr Text enthält keine Satzzeichen und kann einen Wert anders normalisieren als die vollständige Transkription; er ist keine zeichengetreue Kopie der lesbaren Antwort. Ein Segment kann dieselbe Start- und Endzeit haben. Verwenden Sie Segmente zum Auffinden einer Position in der Aufnahme oder zur Vorbereitung einer zeitgesteuerten Anzeige und den Volltext, wenn Wortlaut und Zeichensetzung wichtig sind. Halten Sie diese beiden Darstellungen im entstehenden Ergebnis getrennt.</p><p>Die Sprache wird automatisch erkannt, unabhängig davon, ob ein optionaler Sprachhinweis mitgegeben wird. Der Hersteller dokumentiert kleingeschriebene ISO-639-1-Codes für Hinweise und gibt, sofern bekannt, einen Sprachcode für die Anwendungslogik sowie einen Sprachnamen zur Anzeige zurück. Die Antwort meldet eine Sprache und nicht jede Sprache einer Aufnahme mit Sprachwechseln. Bewahren Sie den Quellwortlaut und die verfügbaren Sprachmetadaten beim Ergebnis auf, statt die Transkriptionsanfrage als Übersetzungsvorgang zu behandeln.</p><p>Gruppieren Sie für einen Untertitelablauf aufeinanderfolgende zeitlich zugeordnete Segmente zu lesbaren Einblendungen, statt jeweils nur ein Wort zu zeigen. Ein nützliches Ergebnis ist eine mit dem ursprünglichen Clip verknüpfte SRT- oder WebVTT-Datei, deren Untertitelgrenzen zu Pausen passen und deren Textmenge am Bildschirm überschaubar bleibt. Prüfen Sie auf fehlende Zeitangaben und stellen Sie sicher, dass das Ende jeder Einblendung nach ihrem Beginn liegt. Untertitelgruppierung und Dateiformatierung sind Anwendungsschritte auf Grundlage der zurückgegebenen Ausrichtung; die Anzeige sollte zum Player und zur Zielgruppe passen.</p><p>Die dokumentierten Regler von Transcribe 1 sind Audio, ein Sprachhinweis und die Zeitstempelauswahl. Sprechermarkierungen, strukturierte Sprecherwechsel, Regler für Emotionsereignisse und Hinweise zur Sprecheranzahl von Pro sind separate Funktionen; sie gehören nicht zum dokumentierten Antwortvertrag dieses Basismodells. Wählen Sie vor der Verarbeitung das benötigte Ergebnis: einfachen lesbaren Text für eine Notiz oder Text mit zeitlicher Ausrichtung für Wiedergabenavigation und Untertitel. Durch das Bewahren von Clipkennung, Transkription und allen verfügbaren Zeitangaben bleibt das Ergebnis für die nächste Anwendungsstufe nützlich.</p>",
  "aboutText": "Transcribe 1 ist Fish Audios allgemeines Speech-to-Text-Modell für kurze Aufnahmen. Es nimmt eine Audiodatei entgegen und gibt die erkannten Wörter als Text zurück, zusammen mit der Aufnahmedauer, optionalen zeitlich zugeordneten Segmenten und Sprachinformationen, sofern diese bekannt sind. Das Modell eignet sich für eine kurze Sprachnotiz, eine gesprochene Anweisung, einen Aufnahmeausschnitt oder einen Audioclip, der eine lesbare Textdarstellung benötigt.\n\nEin beispielhafter Ablauf für Sprachnotizen bewahrt die Aufnahme gemeinsam mit ihrer vollständigen Transkription und einer Kennung des ursprünglichen Clips auf. Ein späterer Anwendungsschritt kann diesen Text durchsuchen, die Notiz ordnen oder eine Zusammenfassung erstellen und dabei die gesprochene Quelle erhalten. Bei einem Befehl liefert die Transkription der Anwendung die erkannten Wörter; jede Handlung ist ein gesonderter Interpretations- und Ausführungsschritt. Erfassen Sie bei einem Interviewausschnitt die Position des Clips im vollständigen Audio, damit ein Zitat an der richtigen Stelle überprüft werden kann.\n\nDer Hersteller akzeptiert WAV, MP3, AAC einschließlich M4A/MP4, FLAC sowie Ogg mit Opus oder Vorbis. Browseraufnahmen in WebM sollten für dieses Modell in Ogg/Opus, MP3 oder WAV umgewandelt werden; Pro dokumentiert native Unterstützung weiterer Container. Stellen Sie pro Anfrage eine Audiodatei bereit. Das dokumentierte Anfragebudget des Basismodells beträgt bis zu 50 MiB, wobei MP3- und Opus-Dateien unter 25 MiB bleiben müssen. Dateigröße und Aufnahmelänge sind unterschiedliche Aspekte: Eine komprimierte Datei kann innerhalb des Uploadlimits liegen und trotzdem zu lange für die Verarbeitung benötigen.\n\nTranscribe 1 ist für kurze Aufnahmen ausgelegt. Für Audio, das länger als einige Minuten dauert, empfiehlt der Hersteller Pro; eine lange Anfrage an das Basismodell kann scheitern, wenn sie das Verarbeitungslimit überschreitet. Bewahren Sie beim Vorbereiten einer längeren Quelle für die Transkription kurzer Clips den Anfangsversatz jedes Clips auf und bestätigen Sie vor dem Zusammenführen, dass die zurückgegebene Transkription den vollständigen Clip abdeckt. Addieren Sie den ursprünglichen Versatz zu lokalen Segmentzeiten, damit die Navigation mit der vollständigen Aufnahme verbunden bleibt. Die Empfehlungen für das Basismodell sollten nicht als das separate 60-Minuten-Budget von Pro verstanden werden.\n\nDie Herstellerantwort umfasst Text, Dauer und Segmente. Die Dauer wird in Sekunden ausgedrückt, und die lesbare vollständige Transkription sollte als primärer Wortlaut des Clips erhalten bleiben. Zeitstempel sind optional: ignore_timestamps ist in der Hersteller-API standardmäßig true, während false Segmente auf Wortebene mit Text sowie Start- und Endzeiten in Sekunden anfordert. Die Anforderung der zeitlichen Ausrichtung verlängert die Verarbeitung. Ein leeres segments-Array kann auf übersprungene Zeitangaben, fehlende Sprache oder vorübergehend nicht verfügbare Ausrichtung zurückgehen und sollte daher nicht automatisch als leere vollständige Transkription verstanden werden.\n\nSegmente sind im Allgemeinen Wörter oder bei Chinesisch und Japanisch ein oder wenige Zeichen. Ihr Text enthält keine Satzzeichen und kann einen Wert anders normalisieren als die vollständige Transkription; er ist keine zeichengetreue Kopie der lesbaren Antwort. Ein Segment kann dieselbe Start- und Endzeit haben. Verwenden Sie Segmente zum Auffinden einer Position in der Aufnahme oder zur Vorbereitung einer zeitgesteuerten Anzeige und den Volltext, wenn Wortlaut und Zeichensetzung wichtig sind. Halten Sie diese beiden Darstellungen im entstehenden Ergebnis getrennt.\n\nDie Sprache wird automatisch erkannt, unabhängig davon, ob ein optionaler Sprachhinweis mitgegeben wird. Der Hersteller dokumentiert kleingeschriebene ISO-639-1-Codes für Hinweise und gibt, sofern bekannt, einen Sprachcode für die Anwendungslogik sowie einen Sprachnamen zur Anzeige zurück. Die Antwort meldet eine Sprache und nicht jede Sprache einer Aufnahme mit Sprachwechseln. Bewahren Sie den Quellwortlaut und die verfügbaren Sprachmetadaten beim Ergebnis auf, statt die Transkriptionsanfrage als Übersetzungsvorgang zu behandeln.\n\nGruppieren Sie für einen Untertitelablauf aufeinanderfolgende zeitlich zugeordnete Segmente zu lesbaren Einblendungen, statt jeweils nur ein Wort zu zeigen. Ein nützliches Ergebnis ist eine mit dem ursprünglichen Clip verknüpfte SRT- oder WebVTT-Datei, deren Untertitelgrenzen zu Pausen passen und deren Textmenge am Bildschirm überschaubar bleibt. Prüfen Sie auf fehlende Zeitangaben und stellen Sie sicher, dass das Ende jeder Einblendung nach ihrem Beginn liegt. Untertitelgruppierung und Dateiformatierung sind Anwendungsschritte auf Grundlage der zurückgegebenen Ausrichtung; die Anzeige sollte zum Player und zur Zielgruppe passen.\n\nDie dokumentierten Regler von Transcribe 1 sind Audio, ein Sprachhinweis und die Zeitstempelauswahl. Sprechermarkierungen, strukturierte Sprecherwechsel, Regler für Emotionsereignisse und Hinweise zur Sprecheranzahl von Pro sind separate Funktionen; sie gehören nicht zum dokumentierten Antwortvertrag dieses Basismodells. Wählen Sie vor der Verarbeitung das benötigte Ergebnis: einfachen lesbaren Text für eine Notiz oder Text mit zeitlicher Ausrichtung für Wiedergabenavigation und Untertitel. Durch das Bewahren von Clipkennung, Transkription und allen verfügbaren Zeitangaben bleibt das Ergebnis für die nächste Anwendungsstufe nützlich.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "b7dd290ffd0aa232e778acecef11e83b10a5909d506be8058c3a64b0885dbea9",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "de-at",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Fish Audio: Transcribe 1</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Schließen\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/transcribe-1</code><button type=\"button\" id=\"copy-id\">ID kopieren</button></div><nav class=\"card-jump-nav\" aria-label=\"Bereiche der Modellkarte\"><button type=\"button\" data-card-jump=\"overview\">Einstieg</button><button type=\"button\" data-card-jump=\"methods\">Eingaben und Methoden</button><button type=\"button\" data-card-jump=\"pricing\">Tarife</button><button type=\"button\" data-card-jump=\"examples\">Beispiele</button><button type=\"button\" data-card-jump=\"results\">Ergebnisse</button><button type=\"button\" data-card-jump=\"aliases\">Aliasnamen</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-Methoden\"><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|fish-audio%2Ftranscribe-1\">Spracherkennung</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\">Einstieg</h3><p class=\"mdesc-full\">Transcribe 1 wandelt kurze Audioaufnahmen mit automatischer Erkennung der Sprache und optionalen Zeitstempeln auf Wortebene in Text um. Nutzen Sie die Transkription für Sprachnotizen, durchsuchbare Clips oder die Untertitelvorbereitung und halten Sie zeitlich zugeordnete Segmente vom lesbaren Volltext getrennt.</p><dl class=\"card-io\" data-card-io><div><dt>Zulässige Eingaben</dt><dd>Audio</dd></div><div><dt>Ergebnisse</dt><dd>Text</dd></div></dl><details class=\"card-about\"><summary>Über das Modell</summary><p class=\"note-s\" data-model-method-boundary>Diese Beschreibung erläutert die Fähigkeiten des Modells. Die über Ailoot verfügbaren Eingaben, Ausgaben und Optionen sind unten für die ausgewählte Methode aufgeführt.</p><div class=\"mabout\" id=\"m-about\"><p>Transcribe 1 ist Fish Audios allgemeines Speech-to-Text-Modell für kurze Aufnahmen. Es nimmt eine Audiodatei entgegen und gibt die erkannten Wörter als Text zurück, zusammen mit der Aufnahmedauer, optionalen zeitlich zugeordneten Segmenten und Sprachinformationen, sofern diese bekannt sind. Das Modell eignet sich für eine kurze Sprachnotiz, eine gesprochene Anweisung, einen Aufnahmeausschnitt oder einen Audioclip, der eine lesbare Textdarstellung benötigt.</p><p>Ein beispielhafter Ablauf für Sprachnotizen bewahrt die Aufnahme gemeinsam mit ihrer vollständigen Transkription und einer Kennung des ursprünglichen Clips auf. Ein späterer Anwendungsschritt kann diesen Text durchsuchen, die Notiz ordnen oder eine Zusammenfassung erstellen und dabei die gesprochene Quelle erhalten. Bei einem Befehl liefert die Transkription der Anwendung die erkannten Wörter; jede Handlung ist ein gesonderter Interpretations- und Ausführungsschritt. Erfassen Sie bei einem Interviewausschnitt die Position des Clips im vollständigen Audio, damit ein Zitat an der richtigen Stelle überprüft werden kann.</p><p>Der Hersteller akzeptiert WAV, MP3, AAC einschließlich M4A/MP4, FLAC sowie Ogg mit Opus oder Vorbis. Browseraufnahmen in WebM sollten für dieses Modell in Ogg/Opus, MP3 oder WAV umgewandelt werden; Pro dokumentiert native Unterstützung weiterer Container. Stellen Sie pro Anfrage eine Audiodatei bereit. Das dokumentierte Anfragebudget des Basismodells beträgt bis zu 50 MiB, wobei MP3- und Opus-Dateien unter 25 MiB bleiben müssen. Dateigröße und Aufnahmelänge sind unterschiedliche Aspekte: Eine komprimierte Datei kann innerhalb des Uploadlimits liegen und trotzdem zu lange für die Verarbeitung benötigen.</p><p>Transcribe 1 ist für kurze Aufnahmen ausgelegt. Für Audio, das länger als einige Minuten dauert, empfiehlt der Hersteller Pro; eine lange Anfrage an das Basismodell kann scheitern, wenn sie das Verarbeitungslimit überschreitet. Bewahren Sie beim Vorbereiten einer längeren Quelle für die Transkription kurzer Clips den Anfangsversatz jedes Clips auf und bestätigen Sie vor dem Zusammenführen, dass die zurückgegebene Transkription den vollständigen Clip abdeckt. Addieren Sie den ursprünglichen Versatz zu lokalen Segmentzeiten, damit die Navigation mit der vollständigen Aufnahme verbunden bleibt. Die Empfehlungen für das Basismodell sollten nicht als das separate 60-Minuten-Budget von Pro verstanden werden.</p><p>Die Herstellerantwort umfasst Text, Dauer und Segmente. Die Dauer wird in Sekunden ausgedrückt, und die lesbare vollständige Transkription sollte als primärer Wortlaut des Clips erhalten bleiben. Zeitstempel sind optional: ignore_timestamps ist in der Hersteller-API standardmäßig true, während false Segmente auf Wortebene mit Text sowie Start- und Endzeiten in Sekunden anfordert. Die Anforderung der zeitlichen Ausrichtung verlängert die Verarbeitung. Ein leeres segments-Array kann auf übersprungene Zeitangaben, fehlende Sprache oder vorübergehend nicht verfügbare Ausrichtung zurückgehen und sollte daher nicht automatisch als leere vollständige Transkription verstanden werden.</p><p>Segmente sind im Allgemeinen Wörter oder bei Chinesisch und Japanisch ein oder wenige Zeichen. Ihr Text enthält keine Satzzeichen und kann einen Wert anders normalisieren als die vollständige Transkription; er ist keine zeichengetreue Kopie der lesbaren Antwort. Ein Segment kann dieselbe Start- und Endzeit haben. Verwenden Sie Segmente zum Auffinden einer Position in der Aufnahme oder zur Vorbereitung einer zeitgesteuerten Anzeige und den Volltext, wenn Wortlaut und Zeichensetzung wichtig sind. Halten Sie diese beiden Darstellungen im entstehenden Ergebnis getrennt.</p><p>Die Sprache wird automatisch erkannt, unabhängig davon, ob ein optionaler Sprachhinweis mitgegeben wird. Der Hersteller dokumentiert kleingeschriebene ISO-639-1-Codes für Hinweise und gibt, sofern bekannt, einen Sprachcode für die Anwendungslogik sowie einen Sprachnamen zur Anzeige zurück. Die Antwort meldet eine Sprache und nicht jede Sprache einer Aufnahme mit Sprachwechseln. Bewahren Sie den Quellwortlaut und die verfügbaren Sprachmetadaten beim Ergebnis auf, statt die Transkriptionsanfrage als Übersetzungsvorgang zu behandeln.</p><p>Gruppieren Sie für einen Untertitelablauf aufeinanderfolgende zeitlich zugeordnete Segmente zu lesbaren Einblendungen, statt jeweils nur ein Wort zu zeigen. Ein nützliches Ergebnis ist eine mit dem ursprünglichen Clip verknüpfte SRT- oder WebVTT-Datei, deren Untertitelgrenzen zu Pausen passen und deren Textmenge am Bildschirm überschaubar bleibt. Prüfen Sie auf fehlende Zeitangaben und stellen Sie sicher, dass das Ende jeder Einblendung nach ihrem Beginn liegt. Untertitelgruppierung und Dateiformatierung sind Anwendungsschritte auf Grundlage der zurückgegebenen Ausrichtung; die Anzeige sollte zum Player und zur Zielgruppe passen.</p><p>Die dokumentierten Regler von Transcribe 1 sind Audio, ein Sprachhinweis und die Zeitstempelauswahl. Sprechermarkierungen, strukturierte Sprecherwechsel, Regler für Emotionsereignisse und Hinweise zur Sprecheranzahl von Pro sind separate Funktionen; sie gehören nicht zum dokumentierten Antwortvertrag dieses Basismodells. Wählen Sie vor der Verarbeitung das benötigte Ergebnis: einfachen lesbaren Text für eine Notiz oder Text mit zeitlicher Ausrichtung für Wiedergabenavigation und Untertitel. Durch das Bewahren von Clipkennung, Transkription und allen verfügbaren Zeitangaben bleibt das Ergebnis für die nächste Anwendungsstufe nützlich.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">In Ailoot verfügbar · Eingaben und Methoden</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Transkription</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Eingabe</dt><dd><code>audio</code></dd></div><div><dt>Ausgabe</dt><dd><code>text</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Feld</th><th>Typ</th><th>Anforderung</th><th>Werte und Limits</th><th>Standard</th></tr></thead><tbody><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>fish-audio/transcribe-1</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>object</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Methodenparameter und Lebenszyklus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Vertrag</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>model, input_audio</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>audio</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_conditions</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>Das Beispiel liest Ihre tatsächliche, nicht leere PCM-WAV-Datei, kodiert die vollständigen Dateibytes als base64 und übermittelt input_audio.format als wav.</td></tr></tbody></table></div><p>Lebenszyklus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · exakte task_id aus einem bestehenden, Ihnen zugeordneten Mediendatensatz</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\">Tarife</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifangaben erweitern die Anfrageoptionen nicht. Unterstützte Parameter stehen bei der ausgewählten Methode.</p><dl data-price-conditions><dt>Schnellmodus</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn der Schnellmodus ausgewählt ist</span></dd><dt>Flex-Modus</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn der Modus flex ausgewählt ist</span></dd><dt>Maximaler Denkaufwand</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn beim maximalen Denkaufwand die Standardanpassung (default) verwendet wird</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-Tarife</h4><h4>Preise nach Konfiguration</h4><p class=\"note-s\">Ordnen Sie jede Gebühr den angezeigten Bedingungen zu. Verwenden Sie für jede Gruppe alternativer Konfigurationen einen Tarif.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Tarifstaffel</th><th>Abrechnungseinheit</th><th>Gebühr</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Basistarife für Tokens</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>Grundtarif</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>—</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Eingabe · Eingabetoken</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Ausgabe · Ausgabetoken</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Eingabe · Cache lesen</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Eingabe · In Cache schreiben</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Eingabe · In Cache schreiben, 1 Stunde</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Audioeingabesekunde</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>—</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>pro Sekunde Eingabeaudio</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Eingabe · Audioeingabesekunde</span> <b>$0.0002</b> <span class=\"price-unit\">pro Sekunde Eingabeaudio</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschließenden Verbrauchsdatensatzes. <a href=\"/docs/de-at/billing/reserve/\">So funktionieren Reservierung und Abrechnung →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Beispielanfragen</h3><h4>Ailoot Ultra · Transkription</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1361-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1361-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · tatsächliche WAV-Datei und vollständiges Originalergebnis</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopieren\"><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-1361-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1361-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;fish-audio/transcribe-1&#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\">Ergebnisse abrufen und speichern</h3><h4>Ailoot Ultra · Transkription</h4><p class=\"note-s\">Vollständiger ursprünglicher Antwortinhalt, Status und weitergeleitete Header. Dieser Handler fügt weder ein allgemeingültiges JSON-Format noch ein Textfeld oder eine äußere Aufgabenstruktur hinzu.</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>Alle fertiggestellten Ergebnisse aufbewahren</h5><p class=\"note-s\">Bewahren Sie jede vollständig zurückgegebene Antwort, Datei und jeden Inhaltsteil auf.</p><p class=\"note-s\">Die vollständige Antwort und ihre Header, jede tatsächliche Ausgabe, die ursprünglich zurückgegebenen Kennungen und alle Nutzungsfelder aufbewahren. Den ursprünglichen Vorgang wiederaufnehmen, ohne die Erstellung erneut anzufordern.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Wenn die ursprüngliche Antwort geprüft werden muss</h5><p class=\"note-s\">Bewahren Sie die tatsächliche X-Client-Request-ID und die vollständige Antwort auf. Lesen Sie die ursprünglichen, Ihnen zugeordneten Assets und deren exakte signierte Inhalts-URLs; übermitteln Sie eine Erstellung mit unklarem Ergebnis niemals erneut.</p></div><details class=\"card-about\" data-output-fields><summary>Antwortfelder</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Feld</th><th>Typ</th></tr></thead><tbody><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">text (when present)</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span></td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span></td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Fehler und nächste Schritte</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Antwort</th><th>Bedingung</th><th>Nächster Schritt</th></tr></thead><tbody><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Der JSON-Inhalt oder die explizite kanonische Modell-ID ist ungültig.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Bewahren Sie die Antwort auf und korrigieren Sie das angegebene Anfragefeld.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Der Ailoot API-Schlüssel ist ungültig.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Verwenden Sie Ihren autorisierten Ailoot API-Schlüssel.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>403 · <code>permission_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Die Schlüsselgruppe lässt diese Methode nicht zu.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Bewahren Sie die zurückgegebenen Fehlerdetails auf.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Für die ausgewählte Methode ist keine Route zugelassen.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Bewahren Sie die zurückgegebenen Fehlerdetails auf.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Der akzeptierte Tarif kann seine erforderliche Eingabemenge oder Obergrenze nicht ermitteln.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Bewahren Sie die Antwort auf; verwenden Sie die vom akzeptierten Tarif erforderte Eingabedarstellung.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>503 · <code></code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Erforderlicher Speicher, Route, Methodenpreis oder Reservierung ist nicht verfügbar.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Bewahren Sie die vollständige ursprüngliche Antwort auf. Eine unklare Reservierung berechtigt nicht zur erneuten Übermittlung.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>502 · <code>server_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Das ursprüngliche Ergebnis, der Verbrauch oder die Abrechnung muss geprüft werden.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Bewahren Sie die tatsächliche Anfrage-ID und die ursprüngliche Antwort auf. Lesen Sie den bestehenden, Ihnen zugeordneten Datensatz; übermitteln Sie die Erstellung nicht erneut.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasnamen</h3><h4>Modellaliasnamen</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=fish-audio%2Ftranscribe-1&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1</code></a></span></p><h4>Aliasnamen für Methodenpfade</h4><p class=\"note-s\">Verwenden Sie die oben angezeigten Methodenpfade.</p><h4>Zugehörige Aufrufer-IDs</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Ftranscribe-1&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/transcribe-1",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1",
      "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": "Der JSON-Inhalt oder die explizite kanonische Modell-ID ist ungültig.",
                "http_status": 400,
                "recovery": "Bewahren Sie die Antwort auf und korrigieren Sie das angegebene Anfragefeld.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Der Ailoot API-Schlüssel ist ungültig.",
                "http_status": 401,
                "recovery": "Verwenden Sie Ihren autorisierten Ailoot API-Schlüssel.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Die Schlüsselgruppe lässt diese Methode nicht zu.",
                "http_status": 403,
                "recovery": "Bewahren Sie die zurückgegebenen Fehlerdetails auf.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Für die ausgewählte Methode ist keine Route zugelassen.",
                "http_status": 404,
                "recovery": "Bewahren Sie die zurückgegebenen Fehlerdetails auf.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Der akzeptierte Tarif kann seine erforderliche Eingabemenge oder Obergrenze nicht ermitteln.",
                "http_status": 422,
                "recovery": "Bewahren Sie die Antwort auf; verwenden Sie die vom akzeptierten Tarif erforderte Eingabedarstellung.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Erforderlicher Speicher, Route, Methodenpreis oder Reservierung ist nicht verfügbar.",
                "http_status": 503,
                "recovery": "Bewahren Sie die vollständige ursprüngliche Antwort auf. Eine unklare Reservierung berechtigt nicht zur erneuten Übermittlung.",
                "type": null
              },
              {
                "code": null,
                "condition": "Das ursprüngliche Ergebnis, der Verbrauch oder die Abrechnung muss geprüft werden.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Bewahren Sie die tatsächliche Anfrage-ID und die ursprüngliche Antwort auf. Lesen Sie den bestehenden, Ihnen zugeordneten Datensatz; übermitteln Sie die Erstellung nicht erneut.",
                "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": "Bewahren Sie die tatsächliche X-Client-Request-ID und die vollständige Antwort auf. Lesen Sie die ursprünglichen, Ihnen zugeordneten Assets und deren exakte signierte Inhalts-URLs; übermitteln Sie eine Erstellung mit unklarem Ergebnis niemals erneut."
            },
            "outputs": {
              "all_results": "Die vollständige Antwort und ihre Header, jede tatsächliche Ausgabe, die ursprünglich zurückgegebenen Kennungen und alle Nutzungsfelder aufbewahren. Den ursprünglichen Vorgang wiederaufnehmen, ohne die Erstellung erneut anzufordern.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Vollständiger ursprünglicher Antwortinhalt, Status und weitergeleitete Header. Dieser Handler fügt weder ein allgemeingültiges JSON-Format noch ein Textfeld oder eine äußere Aufgabenstruktur hinzu."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1"
                ],
                "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": [
                    "fish-audio/transcribe-1"
                  ],
                  "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": "fish-audio/transcribe-1"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Das Beispiel liest Ihre tatsächliche, nicht leere PCM-WAV-Datei, kodiert die vollständigen Dateibytes als base64 und übermittelt input_audio.format als wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "exakte task_id aus einem bestehenden, Ihnen zugeordneten Mediendatensatz",
                "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.0002",
                "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.0002",
                "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': 'fish-audio/transcribe-1', '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": "Transkription",
        "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.0002
          }
        },
        "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.0002",
                "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.0002",
                "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": "fish-audio/transcribe-1",
        "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.0002",
            "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.0002",
            "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": "fish-audio/transcribe-1",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "4aca439a3f86eda87a60cd12af460ac0dada3aedda040ffe66b7d0cd5e3555ab",
    "input_html_sha256": "65fab53839489ad6f1efd58dc7ff4594fab50e3f26a4f17d3d02cb6405aae16d",
    "private_audit_sha256": "abf77d2413fd9a79b4e6e241f1101d11dda382dc0b151d48be6c84757a123417",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/de-at/fish-audio-transcribe-1/",
    "description": "Transcribe 1 wandelt kurze Audioaufnahmen mit automatischer Erkennung der Sprache und optionalen Zeitstempeln auf Wortebene in Text um. Nutzen Sie die Transkription für Sprachnotizen, durchsuchbare Clips oder die Untertitelvorbereitung und halten Sie zeitlich zugeordnete Segmente vom lesbaren Volltext getrennt.",
    "locale": "de-at",
    "md_url": "https://ailoot.ai/models/de-at/fish-audio-transcribe-1/index.md",
    "title": "Fish Audio: Transcribe 1 — Ailoot",
    "url": "https://ailoot.ai/models/de-at/fish-audio-transcribe-1/"
  },
  "rawModel": {
    "about": "Transcribe 1 ist Fish Audios allgemeines Speech-to-Text-Modell für kurze Aufnahmen. Es nimmt eine Audiodatei entgegen und gibt die erkannten Wörter als Text zurück, zusammen mit der Aufnahmedauer, optionalen zeitlich zugeordneten Segmenten und Sprachinformationen, sofern diese bekannt sind. Das Modell eignet sich für eine kurze Sprachnotiz, eine gesprochene Anweisung, einen Aufnahmeausschnitt oder einen Audioclip, der eine lesbare Textdarstellung benötigt.\n\nEin beispielhafter Ablauf für Sprachnotizen bewahrt die Aufnahme gemeinsam mit ihrer vollständigen Transkription und einer Kennung des ursprünglichen Clips auf. Ein späterer Anwendungsschritt kann diesen Text durchsuchen, die Notiz ordnen oder eine Zusammenfassung erstellen und dabei die gesprochene Quelle erhalten. Bei einem Befehl liefert die Transkription der Anwendung die erkannten Wörter; jede Handlung ist ein gesonderter Interpretations- und Ausführungsschritt. Erfassen Sie bei einem Interviewausschnitt die Position des Clips im vollständigen Audio, damit ein Zitat an der richtigen Stelle überprüft werden kann.\n\nDer Hersteller akzeptiert WAV, MP3, AAC einschließlich M4A/MP4, FLAC sowie Ogg mit Opus oder Vorbis. Browseraufnahmen in WebM sollten für dieses Modell in Ogg/Opus, MP3 oder WAV umgewandelt werden; Pro dokumentiert native Unterstützung weiterer Container. Stellen Sie pro Anfrage eine Audiodatei bereit. Das dokumentierte Anfragebudget des Basismodells beträgt bis zu 50 MiB, wobei MP3- und Opus-Dateien unter 25 MiB bleiben müssen. Dateigröße und Aufnahmelänge sind unterschiedliche Aspekte: Eine komprimierte Datei kann innerhalb des Uploadlimits liegen und trotzdem zu lange für die Verarbeitung benötigen.\n\nTranscribe 1 ist für kurze Aufnahmen ausgelegt. Für Audio, das länger als einige Minuten dauert, empfiehlt der Hersteller Pro; eine lange Anfrage an das Basismodell kann scheitern, wenn sie das Verarbeitungslimit überschreitet. Bewahren Sie beim Vorbereiten einer längeren Quelle für die Transkription kurzer Clips den Anfangsversatz jedes Clips auf und bestätigen Sie vor dem Zusammenführen, dass die zurückgegebene Transkription den vollständigen Clip abdeckt. Addieren Sie den ursprünglichen Versatz zu lokalen Segmentzeiten, damit die Navigation mit der vollständigen Aufnahme verbunden bleibt. Die Empfehlungen für das Basismodell sollten nicht als das separate 60-Minuten-Budget von Pro verstanden werden.\n\nDie Herstellerantwort umfasst Text, Dauer und Segmente. Die Dauer wird in Sekunden ausgedrückt, und die lesbare vollständige Transkription sollte als primärer Wortlaut des Clips erhalten bleiben. Zeitstempel sind optional: ignore_timestamps ist in der Hersteller-API standardmäßig true, während false Segmente auf Wortebene mit Text sowie Start- und Endzeiten in Sekunden anfordert. Die Anforderung der zeitlichen Ausrichtung verlängert die Verarbeitung. Ein leeres segments-Array kann auf übersprungene Zeitangaben, fehlende Sprache oder vorübergehend nicht verfügbare Ausrichtung zurückgehen und sollte daher nicht automatisch als leere vollständige Transkription verstanden werden.\n\nSegmente sind im Allgemeinen Wörter oder bei Chinesisch und Japanisch ein oder wenige Zeichen. Ihr Text enthält keine Satzzeichen und kann einen Wert anders normalisieren als die vollständige Transkription; er ist keine zeichengetreue Kopie der lesbaren Antwort. Ein Segment kann dieselbe Start- und Endzeit haben. Verwenden Sie Segmente zum Auffinden einer Position in der Aufnahme oder zur Vorbereitung einer zeitgesteuerten Anzeige und den Volltext, wenn Wortlaut und Zeichensetzung wichtig sind. Halten Sie diese beiden Darstellungen im entstehenden Ergebnis getrennt.\n\nDie Sprache wird automatisch erkannt, unabhängig davon, ob ein optionaler Sprachhinweis mitgegeben wird. Der Hersteller dokumentiert kleingeschriebene ISO-639-1-Codes für Hinweise und gibt, sofern bekannt, einen Sprachcode für die Anwendungslogik sowie einen Sprachnamen zur Anzeige zurück. Die Antwort meldet eine Sprache und nicht jede Sprache einer Aufnahme mit Sprachwechseln. Bewahren Sie den Quellwortlaut und die verfügbaren Sprachmetadaten beim Ergebnis auf, statt die Transkriptionsanfrage als Übersetzungsvorgang zu behandeln.\n\nGruppieren Sie für einen Untertitelablauf aufeinanderfolgende zeitlich zugeordnete Segmente zu lesbaren Einblendungen, statt jeweils nur ein Wort zu zeigen. Ein nützliches Ergebnis ist eine mit dem ursprünglichen Clip verknüpfte SRT- oder WebVTT-Datei, deren Untertitelgrenzen zu Pausen passen und deren Textmenge am Bildschirm überschaubar bleibt. Prüfen Sie auf fehlende Zeitangaben und stellen Sie sicher, dass das Ende jeder Einblendung nach ihrem Beginn liegt. Untertitelgruppierung und Dateiformatierung sind Anwendungsschritte auf Grundlage der zurückgegebenen Ausrichtung; die Anzeige sollte zum Player und zur Zielgruppe passen.\n\nDie dokumentierten Regler von Transcribe 1 sind Audio, ein Sprachhinweis und die Zeitstempelauswahl. Sprechermarkierungen, strukturierte Sprecherwechsel, Regler für Emotionsereignisse und Hinweise zur Sprecheranzahl von Pro sind separate Funktionen; sie gehören nicht zum dokumentierten Antwortvertrag dieses Basismodells. Wählen Sie vor der Verarbeitung das benötigte Ergebnis: einfachen lesbaren Text für eine Notiz oder Text mit zeitlicher Ausrichtung für Wiedergabenavigation und Untertitel. Durch das Bewahren von Clipkennung, Transkription und allen verfügbaren Zeitangaben bleibt das Ergebnis für die nächste Anwendungsstufe nützlich.",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0002",
            "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.0002",
            "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": "Die vollständigen Preisangaben zur Konfiguration finden Sie in den Details."
      }
    ],
    "ctx": null,
    "formats": [
      "transcriptions"
    ],
    "id": "fish-audio/transcribe-1",
    "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": "Der JSON-Inhalt oder die explizite kanonische Modell-ID ist ungültig.",
                "http_status": 400,
                "recovery": "Bewahren Sie die Antwort auf und korrigieren Sie das angegebene Anfragefeld.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Der Ailoot API-Schlüssel ist ungültig.",
                "http_status": 401,
                "recovery": "Verwenden Sie Ihren autorisierten Ailoot API-Schlüssel.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Die Schlüsselgruppe lässt diese Methode nicht zu.",
                "http_status": 403,
                "recovery": "Bewahren Sie die zurückgegebenen Fehlerdetails auf.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Für die ausgewählte Methode ist keine Route zugelassen.",
                "http_status": 404,
                "recovery": "Bewahren Sie die zurückgegebenen Fehlerdetails auf.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Der akzeptierte Tarif kann seine erforderliche Eingabemenge oder Obergrenze nicht ermitteln.",
                "http_status": 422,
                "recovery": "Bewahren Sie die Antwort auf; verwenden Sie die vom akzeptierten Tarif erforderte Eingabedarstellung.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Erforderlicher Speicher, Route, Methodenpreis oder Reservierung ist nicht verfügbar.",
                "http_status": 503,
                "recovery": "Bewahren Sie die vollständige ursprüngliche Antwort auf. Eine unklare Reservierung berechtigt nicht zur erneuten Übermittlung.",
                "type": null
              },
              {
                "code": null,
                "condition": "Das ursprüngliche Ergebnis, der Verbrauch oder die Abrechnung muss geprüft werden.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Bewahren Sie die tatsächliche Anfrage-ID und die ursprüngliche Antwort auf. Lesen Sie den bestehenden, Ihnen zugeordneten Datensatz; übermitteln Sie die Erstellung nicht erneut.",
                "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": "Bewahren Sie die tatsächliche X-Client-Request-ID und die vollständige Antwort auf. Lesen Sie die ursprünglichen, Ihnen zugeordneten Assets und deren exakte signierte Inhalts-URLs; übermitteln Sie eine Erstellung mit unklarem Ergebnis niemals erneut."
            },
            "outputs": {
              "all_results": "Die vollständige Antwort und ihre Header, jede tatsächliche Ausgabe, die ursprünglich zurückgegebenen Kennungen und alle Nutzungsfelder aufbewahren. Den ursprünglichen Vorgang wiederaufnehmen, ohne die Erstellung erneut anzufordern.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Vollständiger ursprünglicher Antwortinhalt, Status und weitergeleitete Header. Dieser Handler fügt weder ein allgemeingültiges JSON-Format noch ein Textfeld oder eine äußere Aufgabenstruktur hinzu."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1"
                ],
                "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": [
                    "fish-audio/transcribe-1"
                  ],
                  "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": "fish-audio/transcribe-1"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Das Beispiel liest Ihre tatsächliche, nicht leere PCM-WAV-Datei, kodiert die vollständigen Dateibytes als base64 und übermittelt input_audio.format als wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "exakte task_id aus einem bestehenden, Ihnen zugeordneten Mediendatensatz",
                "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.0002",
                "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.0002",
                "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': 'fish-audio/transcribe-1', '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": "Transkription",
        "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.0002
          }
        },
        "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.0002",
                "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.0002",
                "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": "fish-audio/transcribe-1",
        "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.0002",
            "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.0002",
            "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": "fish-audio/transcribe-1",
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: Transcribe 1",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Transcribe 1 wandelt kurze Audioaufnahmen mit automatischer Erkennung der Sprache und optionalen Zeitstempeln auf Wortebene in Text um. Nutzen Sie die Transkription für Sprachnotizen, durchsuchbare Clips oder die Untertitelvorbereitung und halten Sie zeitlich zugeordnete Segmente vom lesbaren Volltext getrennt."
  },
  "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": "Transcribe 1 wandelt kurze Audioaufnahmen mit automatischer Erkennung der Sprache und optionalen Zeitstempeln auf Wortebene in Text um. Nutzen Sie die Transkription für Sprachnotizen, durchsuchbare Clips oder die Untertitelvorbereitung und halten Sie zeitlich zugeordnete Segmente vom lesbaren Volltext getrennt.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "eaa5e267c73f63f1351efa1f335e7bbbbd6d58cdf6e28c342e9d99d9bb5810a0",
    "renderer_sha256": "4915581496a34d8a27d706c57a04aa12aa22b4b136560828b2e1b9b8437d1eb0"
  },
  "sourceRevision": "984e188d935979b2e1e5e298b299d3c6e9338472a52ba993a66f5577b02b73af"
}
