{
  "aboutHtml": "<p>Universal-3.5 Pro är AssemblyAI:s taligenkänningsmodell för att omvandla inspelat tal till text. I Sync-profilen ger ett kort ljudklipp en färdig transkription i ett svar. Detta passar röstmeddelanden, push-to-talk-indata och avgränsade samtalsturer där applikationen redan vet när inspelningen ska sluta.</p><p>Förbered ljudet som ett avgränsat klipp. AssemblyAI:s Sync-krav accepterar längder från 80 millisekunder till 120 sekunder, med en maximal filstorlek på 40 MB. De stödda formaten är WAV eller rå PCM med 16-bitars heltal med tecken och little-endian-byteordning. Ljudet kan vara mono eller stereo, där stereo mixas ned internt. Stödda samplingsfrekvenser är 8, 16, 22,05, 24, 32, 44,1 och 48 kHz. En WAV-header tillhandahåller samplingsfrekvens och kanalantal; rå PCM behöver dessa värden separat i transkriptionskonfigurationen.</p><p>Spela in hela yttrandet och håll talets början och slut intakta. En användbar egen uppgift är ett kort röstmeddelande till produktsupport med ett produktnamn, en orderidentifierare och en begäran. Behåll källklippet så att transkriptionen kan kontrolleras mot dessa viktiga detaljer. För en längre inspelning förbereder du ett arbetsflöde lämpligt för långformatstranskription i stället för att behandla kortklippets längdgräns som ett påstående om modellens övergripande ljudkapacitet.</p><p>Resultatet innehåller hela transkriptionen, en ordlista med konfidens per ord och en övergripande konfidens mellan noll och ett. Det tillhandahåller också den inskickade ljudlängden och en identifierare för begäran, vilket gör det möjligt att hålla texten kopplad till dess ursprungliga klipp. Använd ordkonfidens för att lokalisera avsnitt som bör granskas genom lyssning, särskilt namn, siffror och domänordförråd som är viktiga för applikationen.</p><p>Tidsstämplar för ord är valfria och avstängda som standard. När de begärs kan varje tidsjusterat ord ha sin start och sitt slut i millisekunder relativt klippets början. Tillverkarens profil lämnar dessa värden frånvarande när ett ord inte kan tidsjusteras i stället för att hitta på en ungefärlig tid. Tidsstämpelprecisionen är bäst för engelskt ljud. Behåll saknade tider uttryckligen när du förbereder ordmarkering, en sökbar vågform eller undertextjustering och jämför texten med inspelningen innan du använder den som ett färdigt undertextspår.</p><p>En kontextprompt beskriver vad inspelningen handlar om. Den kan ange en domän, ett scenario eller specifika detaljer som applikationen redan känner till, och dess maximala längd är 6000 tecken. Börja med en kort beskrivning som passar ljudet, som ett tekniskt supportsamtal om en viss enhet. Prompten ger igenkänningssammanhang; den är inte en begäran att skriva om talarens meddelande till ett annat dokument.</p><p>En separat lista med nyckeltermer styr igenkänningen mot specifikt ordförråd. Sync-profilen tar emot upp till 100 termer och 8000 tecken över hela listan. Använd exakt stavning för ovanliga namn, akronymer eller produkttermer och lämna vanliga väl igenkända ord utanför listan. Stora eller onödiga termlistor kan orsaka överkorrigeringar, så fokusera listan på ord som är viktiga i inspelningen. Kontextbeskrivningen och ordförrådslistan kan användas tillsammans.</p><p>Tidigare konversation kan också hjälpa till att tolka ett kort svar. Tillhandahåll tidigare yttranden i kronologisk ordning, från äldst till nyast, medan det aktuella ljudet förblir den tur som transkriberas. Den dokumenterade kontexttilldelningen är 500 turer eller totalt 16 000 tecken. Om den överskrider dessa tak eller den tillgängliga modellkontexten tas de äldsta posterna bort först. Detta är användbart när ett kort svar innehåller en identifierare eller en hänvisning vars betydelse kommer från föregående fråga.</p><p>Språkval styr igenkänningen mot ett eller flera förväntade språk. Det aktuella Sync-gränssnittet tar emot 32 språkkoder och använder engelska som standard när inget val anges. För ljud med språkväxling listar du de förväntade språken. En egen kontextprompt ersätter den hanterade standarden och åsidosätter den separata styrningen med språkkoder, så ange de förväntade språken inne i prompten när både språk- och scenariosammanhang behövs. Håll transkriptionen på de språk som faktiskt talas i stället för att behandla transkription som en översättningsinstruktion.</p><p>Modellen förekommer också i andra transkriptionsflöden från AssemblyAI, medan Sync-profilens kortklippskrav och resultatfält hör till just detta gränssnitt. Tillverkarens Dictation-flöde lägger till ett separat steg för textrensning; en transkription och ett omskrivet meddelande är olika artefakter. Bevara det igenkända talet om ett senare redigerings- eller sammanfattningssteg producerar en rensad version, så att den ursprungliga formuleringen finns kvar för jämförelse.</p><p>Användbara leveranser omfattar ett transkriberat röstmeddelande, en färdig tur för en assistent, kort sökbar ljudtext eller en tidsatt ordlista för ett granskningsgränssnitt. Kontrollera de avgörande orden mot inspelningen, bevara eventuella saknade tidsjusteringar och håll klippet länkat till den returnerade texten. Igenkänningsresultatet ger nästa applikationssteg en källunderbyggd transkription; att besvara begäran eller redigera meddelandet hör till det omgivande arbetsflödet.</p>",
  "aboutText": "Universal-3.5 Pro är AssemblyAI:s taligenkänningsmodell för att omvandla inspelat tal till text. I Sync-profilen ger ett kort ljudklipp en färdig transkription i ett svar. Detta passar röstmeddelanden, push-to-talk-indata och avgränsade samtalsturer där applikationen redan vet när inspelningen ska sluta.\n\nFörbered ljudet som ett avgränsat klipp. AssemblyAI:s Sync-krav accepterar längder från 80 millisekunder till 120 sekunder, med en maximal filstorlek på 40 MB. De stödda formaten är WAV eller rå PCM med 16-bitars heltal med tecken och little-endian-byteordning. Ljudet kan vara mono eller stereo, där stereo mixas ned internt. Stödda samplingsfrekvenser är 8, 16, 22,05, 24, 32, 44,1 och 48 kHz. En WAV-header tillhandahåller samplingsfrekvens och kanalantal; rå PCM behöver dessa värden separat i transkriptionskonfigurationen.\n\nSpela in hela yttrandet och håll talets början och slut intakta. En användbar egen uppgift är ett kort röstmeddelande till produktsupport med ett produktnamn, en orderidentifierare och en begäran. Behåll källklippet så att transkriptionen kan kontrolleras mot dessa viktiga detaljer. För en längre inspelning förbereder du ett arbetsflöde lämpligt för långformatstranskription i stället för att behandla kortklippets längdgräns som ett påstående om modellens övergripande ljudkapacitet.\n\nResultatet innehåller hela transkriptionen, en ordlista med konfidens per ord och en övergripande konfidens mellan noll och ett. Det tillhandahåller också den inskickade ljudlängden och en identifierare för begäran, vilket gör det möjligt att hålla texten kopplad till dess ursprungliga klipp. Använd ordkonfidens för att lokalisera avsnitt som bör granskas genom lyssning, särskilt namn, siffror och domänordförråd som är viktiga för applikationen.\n\nTidsstämplar för ord är valfria och avstängda som standard. När de begärs kan varje tidsjusterat ord ha sin start och sitt slut i millisekunder relativt klippets början. Tillverkarens profil lämnar dessa värden frånvarande när ett ord inte kan tidsjusteras i stället för att hitta på en ungefärlig tid. Tidsstämpelprecisionen är bäst för engelskt ljud. Behåll saknade tider uttryckligen när du förbereder ordmarkering, en sökbar vågform eller undertextjustering och jämför texten med inspelningen innan du använder den som ett färdigt undertextspår.\n\nEn kontextprompt beskriver vad inspelningen handlar om. Den kan ange en domän, ett scenario eller specifika detaljer som applikationen redan känner till, och dess maximala längd är 6000 tecken. Börja med en kort beskrivning som passar ljudet, som ett tekniskt supportsamtal om en viss enhet. Prompten ger igenkänningssammanhang; den är inte en begäran att skriva om talarens meddelande till ett annat dokument.\n\nEn separat lista med nyckeltermer styr igenkänningen mot specifikt ordförråd. Sync-profilen tar emot upp till 100 termer och 8000 tecken över hela listan. Använd exakt stavning för ovanliga namn, akronymer eller produkttermer och lämna vanliga väl igenkända ord utanför listan. Stora eller onödiga termlistor kan orsaka överkorrigeringar, så fokusera listan på ord som är viktiga i inspelningen. Kontextbeskrivningen och ordförrådslistan kan användas tillsammans.\n\nTidigare konversation kan också hjälpa till att tolka ett kort svar. Tillhandahåll tidigare yttranden i kronologisk ordning, från äldst till nyast, medan det aktuella ljudet förblir den tur som transkriberas. Den dokumenterade kontexttilldelningen är 500 turer eller totalt 16 000 tecken. Om den överskrider dessa tak eller den tillgängliga modellkontexten tas de äldsta posterna bort först. Detta är användbart när ett kort svar innehåller en identifierare eller en hänvisning vars betydelse kommer från föregående fråga.\n\nSpråkval styr igenkänningen mot ett eller flera förväntade språk. Det aktuella Sync-gränssnittet tar emot 32 språkkoder och använder engelska som standard när inget val anges. För ljud med språkväxling listar du de förväntade språken. En egen kontextprompt ersätter den hanterade standarden och åsidosätter den separata styrningen med språkkoder, så ange de förväntade språken inne i prompten när både språk- och scenariosammanhang behövs. Håll transkriptionen på de språk som faktiskt talas i stället för att behandla transkription som en översättningsinstruktion.\n\nModellen förekommer också i andra transkriptionsflöden från AssemblyAI, medan Sync-profilens kortklippskrav och resultatfält hör till just detta gränssnitt. Tillverkarens Dictation-flöde lägger till ett separat steg för textrensning; en transkription och ett omskrivet meddelande är olika artefakter. Bevara det igenkända talet om ett senare redigerings- eller sammanfattningssteg producerar en rensad version, så att den ursprungliga formuleringen finns kvar för jämförelse.\n\nAnvändbara leveranser omfattar ett transkriberat röstmeddelande, en färdig tur för en assistent, kort sökbar ljudtext eller en tidsatt ordlista för ett granskningsgränssnitt. Kontrollera de avgörande orden mot inspelningen, bevara eventuella saknade tidsjusteringar och håll klippet länkat till den returnerade texten. Igenkänningsresultatet ger nästa applikationssteg en källunderbyggd transkription; att besvara begäran eller redigera meddelandet hör till det omgivande arbetsflödet.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "2c7eeadb856eef0c30cd5678857ec9acfefb95196162a4561a746ded5a1d2e6a",
    "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\">AssemblyAI: Universal-3.5 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Stäng\">×</button></div><div class=\"idline\"><span>AssemblyAI /</span><code>assemblyai/universal-3-5-pro</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|assemblyai%2Funiversal-3-5-pro\">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\">Universal-3.5 Pro är AssemblyAI:s tal-till-text-modell för att omvandla ett kort ljudklipp till en färdig transkription i ett svar. Dess Sync-profil lägger till ordkonfidens, valfria tidsstämplar för ord, ordförrådshjälp och sammanhang från tidigare konversation för röstindata och push-to-talk-flöden.</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>Universal-3.5 Pro är AssemblyAI:s taligenkänningsmodell för att omvandla inspelat tal till text. I Sync-profilen ger ett kort ljudklipp en färdig transkription i ett svar. Detta passar röstmeddelanden, push-to-talk-indata och avgränsade samtalsturer där applikationen redan vet när inspelningen ska sluta.</p><p>Förbered ljudet som ett avgränsat klipp. AssemblyAI:s Sync-krav accepterar längder från 80 millisekunder till 120 sekunder, med en maximal filstorlek på 40 MB. De stödda formaten är WAV eller rå PCM med 16-bitars heltal med tecken och little-endian-byteordning. Ljudet kan vara mono eller stereo, där stereo mixas ned internt. Stödda samplingsfrekvenser är 8, 16, 22,05, 24, 32, 44,1 och 48 kHz. En WAV-header tillhandahåller samplingsfrekvens och kanalantal; rå PCM behöver dessa värden separat i transkriptionskonfigurationen.</p><p>Spela in hela yttrandet och håll talets början och slut intakta. En användbar egen uppgift är ett kort röstmeddelande till produktsupport med ett produktnamn, en orderidentifierare och en begäran. Behåll källklippet så att transkriptionen kan kontrolleras mot dessa viktiga detaljer. För en längre inspelning förbereder du ett arbetsflöde lämpligt för långformatstranskription i stället för att behandla kortklippets längdgräns som ett påstående om modellens övergripande ljudkapacitet.</p><p>Resultatet innehåller hela transkriptionen, en ordlista med konfidens per ord och en övergripande konfidens mellan noll och ett. Det tillhandahåller också den inskickade ljudlängden och en identifierare för begäran, vilket gör det möjligt att hålla texten kopplad till dess ursprungliga klipp. Använd ordkonfidens för att lokalisera avsnitt som bör granskas genom lyssning, särskilt namn, siffror och domänordförråd som är viktiga för applikationen.</p><p>Tidsstämplar för ord är valfria och avstängda som standard. När de begärs kan varje tidsjusterat ord ha sin start och sitt slut i millisekunder relativt klippets början. Tillverkarens profil lämnar dessa värden frånvarande när ett ord inte kan tidsjusteras i stället för att hitta på en ungefärlig tid. Tidsstämpelprecisionen är bäst för engelskt ljud. Behåll saknade tider uttryckligen när du förbereder ordmarkering, en sökbar vågform eller undertextjustering och jämför texten med inspelningen innan du använder den som ett färdigt undertextspår.</p><p>En kontextprompt beskriver vad inspelningen handlar om. Den kan ange en domän, ett scenario eller specifika detaljer som applikationen redan känner till, och dess maximala längd är 6000 tecken. Börja med en kort beskrivning som passar ljudet, som ett tekniskt supportsamtal om en viss enhet. Prompten ger igenkänningssammanhang; den är inte en begäran att skriva om talarens meddelande till ett annat dokument.</p><p>En separat lista med nyckeltermer styr igenkänningen mot specifikt ordförråd. Sync-profilen tar emot upp till 100 termer och 8000 tecken över hela listan. Använd exakt stavning för ovanliga namn, akronymer eller produkttermer och lämna vanliga väl igenkända ord utanför listan. Stora eller onödiga termlistor kan orsaka överkorrigeringar, så fokusera listan på ord som är viktiga i inspelningen. Kontextbeskrivningen och ordförrådslistan kan användas tillsammans.</p><p>Tidigare konversation kan också hjälpa till att tolka ett kort svar. Tillhandahåll tidigare yttranden i kronologisk ordning, från äldst till nyast, medan det aktuella ljudet förblir den tur som transkriberas. Den dokumenterade kontexttilldelningen är 500 turer eller totalt 16 000 tecken. Om den överskrider dessa tak eller den tillgängliga modellkontexten tas de äldsta posterna bort först. Detta är användbart när ett kort svar innehåller en identifierare eller en hänvisning vars betydelse kommer från föregående fråga.</p><p>Språkval styr igenkänningen mot ett eller flera förväntade språk. Det aktuella Sync-gränssnittet tar emot 32 språkkoder och använder engelska som standard när inget val anges. För ljud med språkväxling listar du de förväntade språken. En egen kontextprompt ersätter den hanterade standarden och åsidosätter den separata styrningen med språkkoder, så ange de förväntade språken inne i prompten när både språk- och scenariosammanhang behövs. Håll transkriptionen på de språk som faktiskt talas i stället för att behandla transkription som en översättningsinstruktion.</p><p>Modellen förekommer också i andra transkriptionsflöden från AssemblyAI, medan Sync-profilens kortklippskrav och resultatfält hör till just detta gränssnitt. Tillverkarens Dictation-flöde lägger till ett separat steg för textrensning; en transkription och ett omskrivet meddelande är olika artefakter. Bevara det igenkända talet om ett senare redigerings- eller sammanfattningssteg producerar en rensad version, så att den ursprungliga formuleringen finns kvar för jämförelse.</p><p>Användbara leveranser omfattar ett transkriberat röstmeddelande, en färdig tur för en assistent, kort sökbar ljudtext eller en tidsatt ordlista för ett granskningsgränssnitt. Kontrollera de avgörande orden mot inspelningen, bevara eventuella saknade tidsjusteringar och håll klippet länkat till den returnerade texten. Igenkänningsresultatet ger nästa applikationssteg en källunderbyggd transkription; att besvara begäran eller redigera meddelandet hör till det omgivande arbetsflödet.</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>assemblyai/universal-3-5-pro</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.00025</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-1073-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1073-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-1073-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1073-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;assemblyai/universal-3-5-pro&#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=assemblyai%2Funiversal-3-5-pro&amp;route=Ultra&amp;caller=assemblyai%2Funiversal-3-5-pro&amp;fmt=transcriptions\"><code>assemblyai/universal-3-5-pro</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=assemblyai%2Funiversal-3-5-pro&amp;route=Ultra&amp;caller=assemblyai%2Funiversal-3-5-pro&amp;fmt=transcriptions\"><code>assemblyai/universal-3-5-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "assemblyai/universal-3-5-pro",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|assemblyai%2Funiversal-3-5-pro",
      "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": [
                  "assemblyai/universal-3-5-pro"
                ],
                "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": [
                    "assemblyai/universal-3-5-pro"
                  ],
                  "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": "assemblyai/universal-3-5-pro"
              },
              "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.00025",
                "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.00025",
                "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': 'assemblyai/universal-3-5-pro', '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.00025
          }
        },
        "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.00025",
                "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.00025",
                "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": "assemblyai/universal-3-5-pro",
        "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.00025",
            "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.00025",
            "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": "assemblyai/universal-3-5-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "012fd977aa142b0336fcb2152df52aa1da18748d1c63b0363524eeac01bff43c",
    "input_html_sha256": "6474b7e74dd7e79442731d5e1e32065fd517483f1a11d49fea34b368341af0a1",
    "private_audit_sha256": "2fc8918804ae8f7668922028b542da96a8b0aa06593e25bcc801306b13e4585f",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sv/assemblyai-universal-3-5-pro/",
    "description": "Universal-3.5 Pro är AssemblyAI:s tal-till-text-modell för att omvandla ett kort ljudklipp till en färdig transkription i ett svar. Dess Sync-profil lägger till ordkonfidens, valfria tidsstämplar för ord, ordförrådshjälp och sammanhang från tidigare konversation för röstindata och push-to-talk-flöden.",
    "locale": "sv",
    "md_url": "https://ailoot.ai/models/sv/assemblyai-universal-3-5-pro/index.md",
    "title": "AssemblyAI: Universal-3.5 Pro — Ailoot",
    "url": "https://ailoot.ai/models/sv/assemblyai-universal-3-5-pro/"
  },
  "rawModel": {
    "about": "Universal-3.5 Pro är AssemblyAI:s taligenkänningsmodell för att omvandla inspelat tal till text. I Sync-profilen ger ett kort ljudklipp en färdig transkription i ett svar. Detta passar röstmeddelanden, push-to-talk-indata och avgränsade samtalsturer där applikationen redan vet när inspelningen ska sluta.\n\nFörbered ljudet som ett avgränsat klipp. AssemblyAI:s Sync-krav accepterar längder från 80 millisekunder till 120 sekunder, med en maximal filstorlek på 40 MB. De stödda formaten är WAV eller rå PCM med 16-bitars heltal med tecken och little-endian-byteordning. Ljudet kan vara mono eller stereo, där stereo mixas ned internt. Stödda samplingsfrekvenser är 8, 16, 22,05, 24, 32, 44,1 och 48 kHz. En WAV-header tillhandahåller samplingsfrekvens och kanalantal; rå PCM behöver dessa värden separat i transkriptionskonfigurationen.\n\nSpela in hela yttrandet och håll talets början och slut intakta. En användbar egen uppgift är ett kort röstmeddelande till produktsupport med ett produktnamn, en orderidentifierare och en begäran. Behåll källklippet så att transkriptionen kan kontrolleras mot dessa viktiga detaljer. För en längre inspelning förbereder du ett arbetsflöde lämpligt för långformatstranskription i stället för att behandla kortklippets längdgräns som ett påstående om modellens övergripande ljudkapacitet.\n\nResultatet innehåller hela transkriptionen, en ordlista med konfidens per ord och en övergripande konfidens mellan noll och ett. Det tillhandahåller också den inskickade ljudlängden och en identifierare för begäran, vilket gör det möjligt att hålla texten kopplad till dess ursprungliga klipp. Använd ordkonfidens för att lokalisera avsnitt som bör granskas genom lyssning, särskilt namn, siffror och domänordförråd som är viktiga för applikationen.\n\nTidsstämplar för ord är valfria och avstängda som standard. När de begärs kan varje tidsjusterat ord ha sin start och sitt slut i millisekunder relativt klippets början. Tillverkarens profil lämnar dessa värden frånvarande när ett ord inte kan tidsjusteras i stället för att hitta på en ungefärlig tid. Tidsstämpelprecisionen är bäst för engelskt ljud. Behåll saknade tider uttryckligen när du förbereder ordmarkering, en sökbar vågform eller undertextjustering och jämför texten med inspelningen innan du använder den som ett färdigt undertextspår.\n\nEn kontextprompt beskriver vad inspelningen handlar om. Den kan ange en domän, ett scenario eller specifika detaljer som applikationen redan känner till, och dess maximala längd är 6000 tecken. Börja med en kort beskrivning som passar ljudet, som ett tekniskt supportsamtal om en viss enhet. Prompten ger igenkänningssammanhang; den är inte en begäran att skriva om talarens meddelande till ett annat dokument.\n\nEn separat lista med nyckeltermer styr igenkänningen mot specifikt ordförråd. Sync-profilen tar emot upp till 100 termer och 8000 tecken över hela listan. Använd exakt stavning för ovanliga namn, akronymer eller produkttermer och lämna vanliga väl igenkända ord utanför listan. Stora eller onödiga termlistor kan orsaka överkorrigeringar, så fokusera listan på ord som är viktiga i inspelningen. Kontextbeskrivningen och ordförrådslistan kan användas tillsammans.\n\nTidigare konversation kan också hjälpa till att tolka ett kort svar. Tillhandahåll tidigare yttranden i kronologisk ordning, från äldst till nyast, medan det aktuella ljudet förblir den tur som transkriberas. Den dokumenterade kontexttilldelningen är 500 turer eller totalt 16 000 tecken. Om den överskrider dessa tak eller den tillgängliga modellkontexten tas de äldsta posterna bort först. Detta är användbart när ett kort svar innehåller en identifierare eller en hänvisning vars betydelse kommer från föregående fråga.\n\nSpråkval styr igenkänningen mot ett eller flera förväntade språk. Det aktuella Sync-gränssnittet tar emot 32 språkkoder och använder engelska som standard när inget val anges. För ljud med språkväxling listar du de förväntade språken. En egen kontextprompt ersätter den hanterade standarden och åsidosätter den separata styrningen med språkkoder, så ange de förväntade språken inne i prompten när både språk- och scenariosammanhang behövs. Håll transkriptionen på de språk som faktiskt talas i stället för att behandla transkription som en översättningsinstruktion.\n\nModellen förekommer också i andra transkriptionsflöden från AssemblyAI, medan Sync-profilens kortklippskrav och resultatfält hör till just detta gränssnitt. Tillverkarens Dictation-flöde lägger till ett separat steg för textrensning; en transkription och ett omskrivet meddelande är olika artefakter. Bevara det igenkända talet om ett senare redigerings- eller sammanfattningssteg producerar en rensad version, så att den ursprungliga formuleringen finns kvar för jämförelse.\n\nAnvändbara leveranser omfattar ett transkriberat röstmeddelande, en färdig tur för en assistent, kort sökbar ljudtext eller en tidsatt ordlista för ett granskningsgränssnitt. Kontrollera de avgörande orden mot inspelningen, bevara eventuella saknade tidsjusteringar och håll klippet länkat till den returnerade texten. Igenkänningsresultatet ger nästa applikationssteg en källunderbyggd transkription; att besvara begäran eller redigera meddelandet hör till det omgivande arbetsflödet.",
    "alias_of": null,
    "aliases": [],
    "author": "AssemblyAI",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00025",
            "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.00025",
            "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": "assemblyai/universal-3-5-pro",
    "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": [
                  "assemblyai/universal-3-5-pro"
                ],
                "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": [
                    "assemblyai/universal-3-5-pro"
                  ],
                  "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": "assemblyai/universal-3-5-pro"
              },
              "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.00025",
                "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.00025",
                "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': 'assemblyai/universal-3-5-pro', '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.00025
          }
        },
        "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.00025",
                "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.00025",
                "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": "assemblyai/universal-3-5-pro",
        "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.00025",
            "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.00025",
            "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": "assemblyai/universal-3-5-pro",
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "AssemblyAI: Universal-3.5 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Universal-3.5 Pro är AssemblyAI:s tal-till-text-modell för att omvandla ett kort ljudklipp till en färdig transkription i ett svar. Dess Sync-profil lägger till ordkonfidens, valfria tidsstämplar för ord, ordförrådshjälp och sammanhang från tidigare konversation för röstindata och push-to-talk-flöden."
  },
  "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": "Universal-3.5 Pro är AssemblyAI:s tal-till-text-modell för att omvandla ett kort ljudklipp till en färdig transkription i ett svar. Dess Sync-profil lägger till ordkonfidens, valfria tidsstämplar för ord, ordförrådshjälp och sammanhang från tidigare konversation för röstindata och push-to-talk-flöden.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "da5d76c23d778207de1d86fc37d32a43d3d2647b8b0066ac91993ac1fb57fcf2",
    "renderer_sha256": "8a45bb31b83d2551e6d975cf4683518c7cb445a54b9394a01947f4dd103f1051"
  },
  "sourceRevision": "ac1ddbe5921a27cb5fb2cae6792daa374d76a196304687dba66d574f1d6715cc"
}
