{
  "aboutHtml": "<p>Transcribe 1 är Fish Audios allmänna tal-till-text-modell för korta inspelningar. Den tar emot en ljudfil och returnerar de identifierade orden som text, tillsammans med inspelningens längd, valfria tidsatta segment och språkinformation när den är känd. Modellen är användbar för en kort röstanteckning, en talad instruktion, ett utdrag ur en inspelning eller ett ljudklipp som behöver en läsbar textrepresentation.</p><p>Ett illustrativt arbetsflöde för röstanteckningar bevarar inspelningen tillsammans med dess fullständiga transkription och en identifierare för originalklippet. Ett senare applikationssteg kan söka i texten, ordna anteckningen eller ta fram en sammanfattning samtidigt som den talade källan bevaras. För ett kommando levererar transkriptionen identifierade ord till applikationen; varje åtgärd är ett separat steg för tolkning och utförande. För ett intervjuutdrag registrerar du klippets position i hela ljudinspelningen så att ett citat kan kontrolleras på rätt ställe.</p><p>Tillverkaren accepterar WAV, MP3, AAC inklusive M4A/MP4, FLAC och Ogg med Opus eller Vorbis. Webbläsarinspelningar i WebM bör konverteras till Ogg/Opus, MP3 eller WAV för denna modell; Pro dokumenterar inbyggt stöd för ytterligare behållarformat. Ange en ljudfil per begäran. Basmodellens dokumenterade begäransgräns är upp till 50 MiB, med MP3- och Opus-filer under 25 MiB. Filstorlek och inspelningslängd är olika hänsyn: en komprimerad fil kan rymmas inom uppladdningsgränsen men ändå ta för lång tid att bearbeta.</p><p>Transcribe 1 är utformad för korta inspelningar. Tillverkaren rekommenderar Pro för ljud som är längre än några minuter; en lång begäran till basmodellen kan misslyckas om den överskrider bearbetningens tidsgräns. När en längre källa förbereds för transkription av korta klipp bevarar du varje klipps startförskjutning och bekräftar att den returnerade transkriptionen täcker hela klippet innan resultaten slås samman. Lägg till den ursprungliga förskjutningen till lokala segmenttider för att behålla navigeringens koppling till hela inspelningen. Basmodellens vägledning bör inte tolkas som Pros separata gräns på 60 minuter.</p><p>Tillverkarens svar innehåller fälten text, duration och segments. Längden uttrycks i sekunder, och den läsbara fullständiga transkriptionen bör bevaras som klippets primära ordalydelse. Tidsstämplar är valfria: ignore_timestamps har standardvärdet true i tillverkarens API, medan false begär segment på ordnivå med text samt start- och sluttider i sekunder. Att begära tidsjustering ökar bearbetningstiden. En tom segments-array kan bero på att tidsangivelser hoppats över, att tal saknas eller att tidsjustering tillfälligt är otillgänglig och bör därför inte automatiskt tolkas som en tom fullständig transkription.</p><p>Segment är i allmänhet ord, eller ett eller några få tecken på kinesiska och japanska. Deras text utelämnar skiljetecken och kan normalisera ett värde annorlunda än den fullständiga transkriptionen; den är inte en kopia tecken för tecken av det läsbara svaret. Ett segment kan ha samma start- och sluttid. Använd segment för att hitta en position i inspelningen eller förbereda tidsatt visning, och använd fulltexten när ordalydelse och skiljetecken är viktiga. Håll dessa två representationer åtskilda i det resulterande materialet.</p><p>Språket identifieras automatiskt oavsett om en valfri språkledtråd anges. Tillverkaren dokumenterar ISO 639-1-koder med gemener för ledtrådar och returnerar en språkkod för applikationslogik tillsammans med ett språknamn för visning när det är känt. Svaret rapporterar ett språk snarare än varje språk i en inspelning som växlar mellan språk. Behåll källans ordalydelse och tillgängliga språkmetadata med resultatet i stället för att behandla transkriptionsbegäran som en översättning.</p><p>För ett undertextflöde grupperar du på varandra följande tidsatta segment till läsbara textrutor i stället för att visa ett ord åt gången. Ett användbart resultat är en SRT- eller WebVTT-fil kopplad till originalklippet, med gränser som passar pauserna och en hanterbar mängd text på skärmen. Kontrollera om tidsangivelser saknas och säkerställ att varje textrutas sluttid följer dess starttid. Gruppering av undertexter och filformatering är applikationssteg som bygger på den returnerade tidsjusteringen, och visningsvalen bör passa spelaren och publiken.</p><p>Transcribe 1:s dokumenterade kontroller är ljud, en språkledtråd och valet av tidsstämplar. Pros talarmarkörer, strukturerade talarturer, kontroller för känslohändelser och ledtrådar om antalet talare är separata funktioner; de ingår inte i denna basmodells dokumenterade svarskontrakt. Välj önskat resultat före bearbetningen: vanlig läsbar text för en anteckning, eller text tillsammans med tidsjustering för uppspelningsnavigering och undertexter. Genom att bevara klippidentifieraren, transkriptionen och eventuella tidsangivelser blir resultatet användbart för nästa applikationssteg.</p>",
  "aboutText": "Transcribe 1 är Fish Audios allmänna tal-till-text-modell för korta inspelningar. Den tar emot en ljudfil och returnerar de identifierade orden som text, tillsammans med inspelningens längd, valfria tidsatta segment och språkinformation när den är känd. Modellen är användbar för en kort röstanteckning, en talad instruktion, ett utdrag ur en inspelning eller ett ljudklipp som behöver en läsbar textrepresentation.\n\nEtt illustrativt arbetsflöde för röstanteckningar bevarar inspelningen tillsammans med dess fullständiga transkription och en identifierare för originalklippet. Ett senare applikationssteg kan söka i texten, ordna anteckningen eller ta fram en sammanfattning samtidigt som den talade källan bevaras. För ett kommando levererar transkriptionen identifierade ord till applikationen; varje åtgärd är ett separat steg för tolkning och utförande. För ett intervjuutdrag registrerar du klippets position i hela ljudinspelningen så att ett citat kan kontrolleras på rätt ställe.\n\nTillverkaren accepterar WAV, MP3, AAC inklusive M4A/MP4, FLAC och Ogg med Opus eller Vorbis. Webbläsarinspelningar i WebM bör konverteras till Ogg/Opus, MP3 eller WAV för denna modell; Pro dokumenterar inbyggt stöd för ytterligare behållarformat. Ange en ljudfil per begäran. Basmodellens dokumenterade begäransgräns är upp till 50 MiB, med MP3- och Opus-filer under 25 MiB. Filstorlek och inspelningslängd är olika hänsyn: en komprimerad fil kan rymmas inom uppladdningsgränsen men ändå ta för lång tid att bearbeta.\n\nTranscribe 1 är utformad för korta inspelningar. Tillverkaren rekommenderar Pro för ljud som är längre än några minuter; en lång begäran till basmodellen kan misslyckas om den överskrider bearbetningens tidsgräns. När en längre källa förbereds för transkription av korta klipp bevarar du varje klipps startförskjutning och bekräftar att den returnerade transkriptionen täcker hela klippet innan resultaten slås samman. Lägg till den ursprungliga förskjutningen till lokala segmenttider för att behålla navigeringens koppling till hela inspelningen. Basmodellens vägledning bör inte tolkas som Pros separata gräns på 60 minuter.\n\nTillverkarens svar innehåller fälten text, duration och segments. Längden uttrycks i sekunder, och den läsbara fullständiga transkriptionen bör bevaras som klippets primära ordalydelse. Tidsstämplar är valfria: ignore_timestamps har standardvärdet true i tillverkarens API, medan false begär segment på ordnivå med text samt start- och sluttider i sekunder. Att begära tidsjustering ökar bearbetningstiden. En tom segments-array kan bero på att tidsangivelser hoppats över, att tal saknas eller att tidsjustering tillfälligt är otillgänglig och bör därför inte automatiskt tolkas som en tom fullständig transkription.\n\nSegment är i allmänhet ord, eller ett eller några få tecken på kinesiska och japanska. Deras text utelämnar skiljetecken och kan normalisera ett värde annorlunda än den fullständiga transkriptionen; den är inte en kopia tecken för tecken av det läsbara svaret. Ett segment kan ha samma start- och sluttid. Använd segment för att hitta en position i inspelningen eller förbereda tidsatt visning, och använd fulltexten när ordalydelse och skiljetecken är viktiga. Håll dessa två representationer åtskilda i det resulterande materialet.\n\nSpråket identifieras automatiskt oavsett om en valfri språkledtråd anges. Tillverkaren dokumenterar ISO 639-1-koder med gemener för ledtrådar och returnerar en språkkod för applikationslogik tillsammans med ett språknamn för visning när det är känt. Svaret rapporterar ett språk snarare än varje språk i en inspelning som växlar mellan språk. Behåll källans ordalydelse och tillgängliga språkmetadata med resultatet i stället för att behandla transkriptionsbegäran som en översättning.\n\nFör ett undertextflöde grupperar du på varandra följande tidsatta segment till läsbara textrutor i stället för att visa ett ord åt gången. Ett användbart resultat är en SRT- eller WebVTT-fil kopplad till originalklippet, med gränser som passar pauserna och en hanterbar mängd text på skärmen. Kontrollera om tidsangivelser saknas och säkerställ att varje textrutas sluttid följer dess starttid. Gruppering av undertexter och filformatering är applikationssteg som bygger på den returnerade tidsjusteringen, och visningsvalen bör passa spelaren och publiken.\n\nTranscribe 1:s dokumenterade kontroller är ljud, en språkledtråd och valet av tidsstämplar. Pros talarmarkörer, strukturerade talarturer, kontroller för känslohändelser och ledtrådar om antalet talare är separata funktioner; de ingår inte i denna basmodells dokumenterade svarskontrakt. Välj önskat resultat före bearbetningen: vanlig läsbar text för en anteckning, eller text tillsammans med tidsjustering för uppspelningsnavigering och undertexter. Genom att bevara klippidentifieraren, transkriptionen och eventuella tidsangivelser blir resultatet användbart för nästa applikationssteg.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "0c0f009292a6ae21e6409d0cefcb9e28616adc0e9f254f3fdbe5f56ba14cc7ed",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "sv",
  "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=\"Stäng\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/transcribe-1</code><button type=\"button\" id=\"copy-id\">Kopiera ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Modellkortets avsnitt\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Indata &amp; metoder</button><button type=\"button\" data-card-jump=\"pricing\">Priser</button><button type=\"button\" data-card-jump=\"examples\">Exempel</button><button type=\"button\" data-card-jump=\"results\">Resultat</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-metoder\"><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\">Igenkänning</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\">Start</h3><p class=\"mdesc-full\">Transcribe 1 omvandlar korta ljudinspelningar till text med automatisk språkidentifiering och valfria tidsstämplar på ordnivå. Använd transkriptionen för röstanteckningar, sökbara klipp eller förberedelse av undertexter och håll tidsatta segment åtskilda från den läsbara fulltexten.</p><dl class=\"card-io\" data-card-io><div><dt>Godkända indata</dt><dd>Ljud</dd></div><div><dt>Resultat</dt><dd>Text</dd></div></dl><details class=\"card-about\"><summary>Om modellen</summary><p class=\"note-s\" data-model-method-boundary>Den här beskrivningen omfattar modellens förmågor. Tillgängliga indata, utdata och alternativ i Ailoot anges nedan för den valda metoden.</p><div class=\"mabout\" id=\"m-about\"><p>Transcribe 1 är Fish Audios allmänna tal-till-text-modell för korta inspelningar. Den tar emot en ljudfil och returnerar de identifierade orden som text, tillsammans med inspelningens längd, valfria tidsatta segment och språkinformation när den är känd. Modellen är användbar för en kort röstanteckning, en talad instruktion, ett utdrag ur en inspelning eller ett ljudklipp som behöver en läsbar textrepresentation.</p><p>Ett illustrativt arbetsflöde för röstanteckningar bevarar inspelningen tillsammans med dess fullständiga transkription och en identifierare för originalklippet. Ett senare applikationssteg kan söka i texten, ordna anteckningen eller ta fram en sammanfattning samtidigt som den talade källan bevaras. För ett kommando levererar transkriptionen identifierade ord till applikationen; varje åtgärd är ett separat steg för tolkning och utförande. För ett intervjuutdrag registrerar du klippets position i hela ljudinspelningen så att ett citat kan kontrolleras på rätt ställe.</p><p>Tillverkaren accepterar WAV, MP3, AAC inklusive M4A/MP4, FLAC och Ogg med Opus eller Vorbis. Webbläsarinspelningar i WebM bör konverteras till Ogg/Opus, MP3 eller WAV för denna modell; Pro dokumenterar inbyggt stöd för ytterligare behållarformat. Ange en ljudfil per begäran. Basmodellens dokumenterade begäransgräns är upp till 50 MiB, med MP3- och Opus-filer under 25 MiB. Filstorlek och inspelningslängd är olika hänsyn: en komprimerad fil kan rymmas inom uppladdningsgränsen men ändå ta för lång tid att bearbeta.</p><p>Transcribe 1 är utformad för korta inspelningar. Tillverkaren rekommenderar Pro för ljud som är längre än några minuter; en lång begäran till basmodellen kan misslyckas om den överskrider bearbetningens tidsgräns. När en längre källa förbereds för transkription av korta klipp bevarar du varje klipps startförskjutning och bekräftar att den returnerade transkriptionen täcker hela klippet innan resultaten slås samman. Lägg till den ursprungliga förskjutningen till lokala segmenttider för att behålla navigeringens koppling till hela inspelningen. Basmodellens vägledning bör inte tolkas som Pros separata gräns på 60 minuter.</p><p>Tillverkarens svar innehåller fälten text, duration och segments. Längden uttrycks i sekunder, och den läsbara fullständiga transkriptionen bör bevaras som klippets primära ordalydelse. Tidsstämplar är valfria: ignore_timestamps har standardvärdet true i tillverkarens API, medan false begär segment på ordnivå med text samt start- och sluttider i sekunder. Att begära tidsjustering ökar bearbetningstiden. En tom segments-array kan bero på att tidsangivelser hoppats över, att tal saknas eller att tidsjustering tillfälligt är otillgänglig och bör därför inte automatiskt tolkas som en tom fullständig transkription.</p><p>Segment är i allmänhet ord, eller ett eller några få tecken på kinesiska och japanska. Deras text utelämnar skiljetecken och kan normalisera ett värde annorlunda än den fullständiga transkriptionen; den är inte en kopia tecken för tecken av det läsbara svaret. Ett segment kan ha samma start- och sluttid. Använd segment för att hitta en position i inspelningen eller förbereda tidsatt visning, och använd fulltexten när ordalydelse och skiljetecken är viktiga. Håll dessa två representationer åtskilda i det resulterande materialet.</p><p>Språket identifieras automatiskt oavsett om en valfri språkledtråd anges. Tillverkaren dokumenterar ISO 639-1-koder med gemener för ledtrådar och returnerar en språkkod för applikationslogik tillsammans med ett språknamn för visning när det är känt. Svaret rapporterar ett språk snarare än varje språk i en inspelning som växlar mellan språk. Behåll källans ordalydelse och tillgängliga språkmetadata med resultatet i stället för att behandla transkriptionsbegäran som en översättning.</p><p>För ett undertextflöde grupperar du på varandra följande tidsatta segment till läsbara textrutor i stället för att visa ett ord åt gången. Ett användbart resultat är en SRT- eller WebVTT-fil kopplad till originalklippet, med gränser som passar pauserna och en hanterbar mängd text på skärmen. Kontrollera om tidsangivelser saknas och säkerställ att varje textrutas sluttid följer dess starttid. Gruppering av undertexter och filformatering är applikationssteg som bygger på den returnerade tidsjusteringen, och visningsvalen bör passa spelaren och publiken.</p><p>Transcribe 1:s dokumenterade kontroller är ljud, en språkledtråd och valet av tidsstämplar. Pros talarmarkörer, strukturerade talarturer, kontroller för känslohändelser och ledtrådar om antalet talare är separata funktioner; de ingår inte i denna basmodells dokumenterade svarskontrakt. Välj önskat resultat före bearbetningen: vanlig läsbar text för en anteckning, eller text tillsammans med tidsjustering för uppspelningsnavigering och undertexter. Genom att bevara klippidentifieraren, transkriptionen och eventuella tidsangivelser blir resultatet användbart för nästa applikationssteg.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tillgängligt i Ailoot · indata &amp; metoder</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Transkribering</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Indatatyper</dt><dd><code>audio</code></dd></div><div><dt>Utdatatyper</dt><dd><code>text</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Fält</th><th>Typ</th><th>Krav</th><th>Värden &amp; gränser</th><th>Standard</th></tr></thead><tbody><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Obligatoriskt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</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=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</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=\"Krav\"><span class=\"card-cell-label\">Krav</span>Obligatoriskt</td><td data-cell-label=\"Värden &amp; gränser\"><span class=\"card-cell-label\">Värden &amp; gränser</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>Metodparametrar och livscykel</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Avtal</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=\"Avtal\"><span class=\"card-cell-label\">Avtal</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=\"Avtal\"><span class=\"card-cell-label\">Avtal</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=\"Avtal\"><span class=\"card-cell-label\">Avtal</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=\"Avtal\"><span class=\"card-cell-label\">Avtal</span>Exemplet läser din faktiska, icke-tomma PCM WAV-fil, kodar filens samtliga byte som base64 och skickar input_audio.format som wav.</td></tr></tbody></table></div><p>Livscykel: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · exakt task_id från en befintlig mediepost som du äger</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\">Priser</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.</p><dl data-price-conditions><dt>Snabbt läge</dt><dd>Ej angivet <span class=\"note-s\">När snabbt läge är valt</span></dd><dt>Flex-läge</dt><dd>Ej angivet <span class=\"note-s\">När läget flex är valt</span></dd><dt>Högsta resonemangsnivå</dt><dd>Ej angivet <span class=\"note-s\">När den högsta resonemangsnivån använder standardjusteringen (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-priser</h4><h4>Priser efter konfiguration</h4><p class=\"note-s\">Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Prislista</th><th>Debiteringsenhet</th><th>Avgift</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Grundpriser för token</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>Grundpris</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>—</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Indata · Indatatoken</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Utdata · Utdatatoken</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Indata · Cacheläsning</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Indata · Skrivning till cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Indata · Skrivning till cache, 1 tim</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>sekund inkommande ljud</th><td data-cell-label=\"Prislista\"><span class=\"card-cell-label\">Prislista</span>—</td><td data-cell-label=\"Debiteringsenhet\"><span class=\"card-cell-label\">Debiteringsenhet</span>per sekund indataljud</td><td data-cell-label=\"Avgift\"><span class=\"card-cell-label\">Avgift</span><div><span>Indata · sekund inkommande ljud</span> <b>$0.0002</b> <span class=\"price-unit\">per sekund indataljud</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. <a href=\"/docs/sv/billing/reserve/\">Så fungerar reservation och slutreglering →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Exempelbegäranden</h3><h4>Ailoot Ultra · Transkribering</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodvarianter\"><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 · faktisk WAV-fil och hela det ursprungliga resultatet</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiera kod\"><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\">Ta emot och spara resultat</h3><h4>Ailoot Ultra · Transkribering</h4><p class=\"note-s\">Hela den ursprungliga svarskroppen, statusen och vidarebefordrade svarshuvuden. Denna hanterare lägger inte till någon universell JSON-struktur, något textfält eller något uppgiftshölje.</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>Behåll alla färdiga resultat</h5><p class=\"note-s\">Behåll varje fullständigt returnerat svar, fil och innehållsdel.</p><p class=\"note-s\">Spara hela svaret med headers, samtliga faktiska resultat, de ursprungliga returnerade identifierarna och alla användningsfält. Hämta den ursprungliga operationen utan att skicka skapandeförfrågan igen.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Om det ursprungliga svaret behöver kontrolleras</h5><p class=\"note-s\">Behåll faktiskt X-Client-Request-ID och hela svaret. Läs de ursprungliga tillgångarna som du äger och deras exakta signerade innehållslänkar; skicka aldrig en osäker skapandebegäran igen.</p></div><details class=\"card-about\" data-output-fields><summary>Svarsfält</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Fält</th><th>Typ</th></tr></thead><tbody><tr><th data-cell-label=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</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=\"Fält\" scope=\"row\"><span class=\"card-cell-label\">Fält</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>Fel och nästa steg</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Svar</th><th>Villkor</th><th>Nästa steg</th></tr></thead><tbody><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>JSON-kroppen eller det uttryckliga kanoniska modell-ID:t är ogiltigt.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Behåll svaret och korrigera det angivna fältet i begäran.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>API-nyckeln för Ailoot är ogiltig.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Använd din behöriga API-nyckel för Ailoot.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>403 · <code>permission_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Nyckelgruppen ger inte tillträde till denna metod.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Behåll de returnerade feluppgifterna.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Den valda metoden har ingen tillåten rutt.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Behåll de returnerade feluppgifterna.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Den accepterade tariffen kan inte fastställa den mängd eller gräns för indata som krävs.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Behåll svaret; använd den representation av indata som den accepterade tariffen kräver.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>503 · <code></code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Nödvändig lagring, rutt, metodpris eller reservation är inte tillgänglig.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Behåll hela det ursprungliga svaret. En osäker reservation ger inte tillstånd att skicka in igen.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>502 · <code>server_error</code></th><td data-cell-label=\"Villkor\"><span class=\"card-cell-label\">Villkor</span>Det ursprungliga resultatet, förbrukningen eller avräkningen kräver kontroll.</td><td data-cell-label=\"Nästa steg\"><span class=\"card-cell-label\">Nästa steg</span>Behåll det faktiska begärans-ID:t och det ursprungliga svaret. Läs den befintliga posten som du äger; skicka inte skapandebegäran igen.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Modellalias</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>Alias för metodsökvägar</h4><p class=\"note-s\">Använd metodsökvägarna som visas ovan.</p><h4>Relaterade anropar-ID:n</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": "JSON-kroppen eller det uttryckliga kanoniska modell-ID:t är ogiltigt.",
                "http_status": 400,
                "recovery": "Behåll svaret och korrigera det angivna fältet i begäran.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "API-nyckeln för Ailoot är ogiltig.",
                "http_status": 401,
                "recovery": "Använd din behöriga API-nyckel för Ailoot.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Nyckelgruppen ger inte tillträde till denna metod.",
                "http_status": 403,
                "recovery": "Behåll de returnerade feluppgifterna.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Den valda metoden har ingen tillåten rutt.",
                "http_status": 404,
                "recovery": "Behåll de returnerade feluppgifterna.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Den accepterade tariffen kan inte fastställa den mängd eller gräns för indata som krävs.",
                "http_status": 422,
                "recovery": "Behåll svaret; använd den representation av indata som den accepterade tariffen kräver.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Nödvändig lagring, rutt, metodpris eller reservation är inte tillgänglig.",
                "http_status": 503,
                "recovery": "Behåll hela det ursprungliga svaret. En osäker reservation ger inte tillstånd att skicka in igen.",
                "type": null
              },
              {
                "code": null,
                "condition": "Det ursprungliga resultatet, förbrukningen eller avräkningen kräver kontroll.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Behåll det faktiska begärans-ID:t och det ursprungliga svaret. Läs den befintliga posten som du äger; skicka inte skapandebegäran igen.",
                "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": "Behåll faktiskt X-Client-Request-ID och hela svaret. Läs de ursprungliga tillgångarna som du äger och deras exakta signerade innehållslänkar; skicka aldrig en osäker skapandebegäran igen."
            },
            "outputs": {
              "all_results": "Spara hela svaret med headers, samtliga faktiska resultat, de ursprungliga returnerade identifierarna och alla användningsfält. Hämta den ursprungliga operationen utan att skicka skapandeförfrågan igen.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Hela den ursprungliga svarskroppen, statusen och vidarebefordrade svarshuvuden. Denna hanterare lägger inte till någon universell JSON-struktur, något textfält eller något uppgiftshölje."
            },
            "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": [
              "Exemplet läser din faktiska, icke-tomma PCM WAV-fil, kodar filens samtliga byte som base64 och skickar input_audio.format som 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": "exakt task_id från en befintlig mediepost som du äger",
                "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": "Transkribering",
        "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": "8f6b6f39bdab4f9b09c525b12e3d3e7b9381d89bfbe85b464b9aa6e4fed2cdb4",
    "input_html_sha256": "632ee366c9516a8c7b6383717daf54defd9acdcfaaf298cadc26564b1a788142",
    "private_audit_sha256": "2eef24523f65b1f3ab827bc3d4afda2d80a916bc7668cb581612eef1da9f3ada",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sv/fish-audio-transcribe-1/",
    "description": "Transcribe 1 omvandlar korta ljudinspelningar till text med automatisk språkidentifiering och valfria tidsstämplar på ordnivå. Använd transkriptionen för röstanteckningar, sökbara klipp eller förberedelse av undertexter och håll tidsatta segment åtskilda från den läsbara fulltexten.",
    "locale": "sv",
    "md_url": "https://ailoot.ai/models/sv/fish-audio-transcribe-1/index.md",
    "title": "Fish Audio: Transcribe 1 — Ailoot",
    "url": "https://ailoot.ai/models/sv/fish-audio-transcribe-1/"
  },
  "rawModel": {
    "about": "Transcribe 1 är Fish Audios allmänna tal-till-text-modell för korta inspelningar. Den tar emot en ljudfil och returnerar de identifierade orden som text, tillsammans med inspelningens längd, valfria tidsatta segment och språkinformation när den är känd. Modellen är användbar för en kort röstanteckning, en talad instruktion, ett utdrag ur en inspelning eller ett ljudklipp som behöver en läsbar textrepresentation.\n\nEtt illustrativt arbetsflöde för röstanteckningar bevarar inspelningen tillsammans med dess fullständiga transkription och en identifierare för originalklippet. Ett senare applikationssteg kan söka i texten, ordna anteckningen eller ta fram en sammanfattning samtidigt som den talade källan bevaras. För ett kommando levererar transkriptionen identifierade ord till applikationen; varje åtgärd är ett separat steg för tolkning och utförande. För ett intervjuutdrag registrerar du klippets position i hela ljudinspelningen så att ett citat kan kontrolleras på rätt ställe.\n\nTillverkaren accepterar WAV, MP3, AAC inklusive M4A/MP4, FLAC och Ogg med Opus eller Vorbis. Webbläsarinspelningar i WebM bör konverteras till Ogg/Opus, MP3 eller WAV för denna modell; Pro dokumenterar inbyggt stöd för ytterligare behållarformat. Ange en ljudfil per begäran. Basmodellens dokumenterade begäransgräns är upp till 50 MiB, med MP3- och Opus-filer under 25 MiB. Filstorlek och inspelningslängd är olika hänsyn: en komprimerad fil kan rymmas inom uppladdningsgränsen men ändå ta för lång tid att bearbeta.\n\nTranscribe 1 är utformad för korta inspelningar. Tillverkaren rekommenderar Pro för ljud som är längre än några minuter; en lång begäran till basmodellen kan misslyckas om den överskrider bearbetningens tidsgräns. När en längre källa förbereds för transkription av korta klipp bevarar du varje klipps startförskjutning och bekräftar att den returnerade transkriptionen täcker hela klippet innan resultaten slås samman. Lägg till den ursprungliga förskjutningen till lokala segmenttider för att behålla navigeringens koppling till hela inspelningen. Basmodellens vägledning bör inte tolkas som Pros separata gräns på 60 minuter.\n\nTillverkarens svar innehåller fälten text, duration och segments. Längden uttrycks i sekunder, och den läsbara fullständiga transkriptionen bör bevaras som klippets primära ordalydelse. Tidsstämplar är valfria: ignore_timestamps har standardvärdet true i tillverkarens API, medan false begär segment på ordnivå med text samt start- och sluttider i sekunder. Att begära tidsjustering ökar bearbetningstiden. En tom segments-array kan bero på att tidsangivelser hoppats över, att tal saknas eller att tidsjustering tillfälligt är otillgänglig och bör därför inte automatiskt tolkas som en tom fullständig transkription.\n\nSegment är i allmänhet ord, eller ett eller några få tecken på kinesiska och japanska. Deras text utelämnar skiljetecken och kan normalisera ett värde annorlunda än den fullständiga transkriptionen; den är inte en kopia tecken för tecken av det läsbara svaret. Ett segment kan ha samma start- och sluttid. Använd segment för att hitta en position i inspelningen eller förbereda tidsatt visning, och använd fulltexten när ordalydelse och skiljetecken är viktiga. Håll dessa två representationer åtskilda i det resulterande materialet.\n\nSpråket identifieras automatiskt oavsett om en valfri språkledtråd anges. Tillverkaren dokumenterar ISO 639-1-koder med gemener för ledtrådar och returnerar en språkkod för applikationslogik tillsammans med ett språknamn för visning när det är känt. Svaret rapporterar ett språk snarare än varje språk i en inspelning som växlar mellan språk. Behåll källans ordalydelse och tillgängliga språkmetadata med resultatet i stället för att behandla transkriptionsbegäran som en översättning.\n\nFör ett undertextflöde grupperar du på varandra följande tidsatta segment till läsbara textrutor i stället för att visa ett ord åt gången. Ett användbart resultat är en SRT- eller WebVTT-fil kopplad till originalklippet, med gränser som passar pauserna och en hanterbar mängd text på skärmen. Kontrollera om tidsangivelser saknas och säkerställ att varje textrutas sluttid följer dess starttid. Gruppering av undertexter och filformatering är applikationssteg som bygger på den returnerade tidsjusteringen, och visningsvalen bör passa spelaren och publiken.\n\nTranscribe 1:s dokumenterade kontroller är ljud, en språkledtråd och valet av tidsstämplar. Pros talarmarkörer, strukturerade talarturer, kontroller för känslohändelser och ledtrådar om antalet talare är separata funktioner; de ingår inte i denna basmodells dokumenterade svarskontrakt. Välj önskat resultat före bearbetningen: vanlig läsbar text för en anteckning, eller text tillsammans med tidsjustering för uppspelningsnavigering och undertexter. Genom att bevara klippidentifieraren, transkriptionen och eventuella tidsangivelser blir resultatet användbart för nästa applikationssteg.",
    "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": "Fullständig prissättning för konfigurationen finns i detaljerna."
      }
    ],
    "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": "JSON-kroppen eller det uttryckliga kanoniska modell-ID:t är ogiltigt.",
                "http_status": 400,
                "recovery": "Behåll svaret och korrigera det angivna fältet i begäran.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "API-nyckeln för Ailoot är ogiltig.",
                "http_status": 401,
                "recovery": "Använd din behöriga API-nyckel för Ailoot.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Nyckelgruppen ger inte tillträde till denna metod.",
                "http_status": 403,
                "recovery": "Behåll de returnerade feluppgifterna.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Den valda metoden har ingen tillåten rutt.",
                "http_status": 404,
                "recovery": "Behåll de returnerade feluppgifterna.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Den accepterade tariffen kan inte fastställa den mängd eller gräns för indata som krävs.",
                "http_status": 422,
                "recovery": "Behåll svaret; använd den representation av indata som den accepterade tariffen kräver.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Nödvändig lagring, rutt, metodpris eller reservation är inte tillgänglig.",
                "http_status": 503,
                "recovery": "Behåll hela det ursprungliga svaret. En osäker reservation ger inte tillstånd att skicka in igen.",
                "type": null
              },
              {
                "code": null,
                "condition": "Det ursprungliga resultatet, förbrukningen eller avräkningen kräver kontroll.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Behåll det faktiska begärans-ID:t och det ursprungliga svaret. Läs den befintliga posten som du äger; skicka inte skapandebegäran igen.",
                "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": "Behåll faktiskt X-Client-Request-ID och hela svaret. Läs de ursprungliga tillgångarna som du äger och deras exakta signerade innehållslänkar; skicka aldrig en osäker skapandebegäran igen."
            },
            "outputs": {
              "all_results": "Spara hela svaret med headers, samtliga faktiska resultat, de ursprungliga returnerade identifierarna och alla användningsfält. Hämta den ursprungliga operationen utan att skicka skapandeförfrågan igen.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Hela den ursprungliga svarskroppen, statusen och vidarebefordrade svarshuvuden. Denna hanterare lägger inte till någon universell JSON-struktur, något textfält eller något uppgiftshölje."
            },
            "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": [
              "Exemplet läser din faktiska, icke-tomma PCM WAV-fil, kodar filens samtliga byte som base64 och skickar input_audio.format som 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": "exakt task_id från en befintlig mediepost som du äger",
                "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": "Transkribering",
        "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 omvandlar korta ljudinspelningar till text med automatisk språkidentifiering och valfria tidsstämplar på ordnivå. Använd transkriptionen för röstanteckningar, sökbara klipp eller förberedelse av undertexter och håll tidsatta segment åtskilda från den läsbara fulltexten."
  },
  "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 omvandlar korta ljudinspelningar till text med automatisk språkidentifiering och valfria tidsstämplar på ordnivå. Använd transkriptionen för röstanteckningar, sökbara klipp eller förberedelse av undertexter och håll tidsatta segment åtskilda från den läsbara fulltexten.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "527b5dce282e2798906e8acd1cf8b3bd24982bc98317cf1e51268f6e2f4ce016",
    "renderer_sha256": "8a45bb31b83d2551e6d975cf4683518c7cb445a54b9394a01947f4dd103f1051"
  },
  "sourceRevision": "bb91100f26eaa1e678a613557c9a63285121ac190ea76853a9ea3763634effc9"
}
