{
  "aboutHtml": "<p>Universal-3.5 Pro er AssemblyAIs talegjenkjenningsmodell for å konvertere innspilt tale til tekst. I Sync-profilen gir et kort lydklipp en fullført transkripsjon i ett svar. Dette passer til talemeldinger, trykk-og-snakk-inndata og separate samtaleturer der applikasjonen allerede vet når opptaket skal avsluttes.</p><p>Klargjør lyden som et avgrenset klipp. AssemblyAIs Sync-krav godtar varigheter fra 80 millisekunder til 120 sekunder, med en maksimal filstørrelse på 40 MB. De støttede formatene er WAV eller rå, fortegnet 16-bits little-endian PCM. Lyden kan være mono eller stereo, og stereo mikses ned internt. De støttede samplingsfrekvensene er 8, 16, 22.05, 24, 32, 44.1 og 48 kHz. Et WAV-hode oppgir samplingsfrekvens og kanalantall; rå PCM trenger at disse verdiene angis separat i transkripsjonskonfigurasjonen.</p><p>Ta opp hele ytringen, og behold begynnelsen og slutten av talen intakt. En nyttig selvstendig oppgave er en kort talemelding til produktstøtte som inneholder et produktnavn, en ordreidentifikator og en forespørsel. Behold kildeklippet, slik at transkripsjonen kan kontrolleres mot disse viktige detaljene. For et lengre opptak bør du klargjøre en arbeidsflyt som passer til transkripsjon av lange opptak, i stedet for å behandle varighetsgrensen for korte klipp som en påstand om modellens samlede lydkapasitet.</p><p>Resultatet inneholder den fullstendige transkripsjonen, en ordliste med konfidens per ord og en samlet konfidens mellom null og én. Det oppgir også varigheten til den innsendte lyden og en forespørselsidentifikator, slik at teksten kan holdes knyttet til originalklippet. Bruk konfidens per ord til å finne avsnitt som bør kontrolleres ved lytting, særlig navn, tall og fagord som betyr noe for applikasjonen.</p><p>Ordtidsstempler er valgfrie og avslått som standard. Når de forespørres, kan hvert tidsjusterte ord ha start og slutt i millisekunder relativt til klippets begynnelse. Produsentens profil lar disse verdiene være fraværende når et ord ikke kan tidsjusteres, i stedet for å finne på en omtrentlig tid. Tidsstemplene er mest nøyaktige for engelsk lyd. Bevar manglende tider uttrykkelig når du klargjør ordmarkering, en søkbar bølgeform eller tekstjustering for undertekster, og sammenlign teksten med opptaket før du bruker den som et ferdig undertekstspor.</p><p>En kontekstprompt beskriver hva opptaket handler om. Den kan angi et fagområde, et scenario eller bestemte detaljer som applikasjonen allerede kjenner, og maksimal lengde er 6000 tegn. Begynn med en kort beskrivelse som passer til lyden, som en teknisk støttesamtale om en bestemt enhet. Prompten gir gjenkjenningskontekst; den er ikke en forespørsel om å skrive om talerens melding til et annet dokument.</p><p>En separat liste over nøkkeltermer styrer gjenkjenningen mot et bestemt ordforråd. Sync-profilen godtar opptil 100 termer og 8000 tegn samlet i listen. Bruk nøyaktig stavemåte for uvanlige navn, akronymer eller produkttermer, og la vanlige ord som gjenkjennes godt, stå utenfor listen. Store eller unødvendige termlister kan gi overkorrigeringer, så konsentrer listen om ord som betyr noe i opptaket. Kontekstbeskrivelsen og ordforrådslisten kan brukes sammen.</p><p>Tidligere samtale kan også hjelpe med å tolke et kort svar. Legg ved tidligere ytringer i kronologisk rekkefølge, fra eldst til nyest, mens den gjeldende lyden fortsatt er turen som transkriberes. Den dokumenterte kontekstrammen er 500 turer eller 16 000 tegn totalt. Hvis den overskrider disse takene eller tilgjengelig modellkontekst, fjernes de eldste oppføringene først. Dette er nyttig når et kort svar inneholder en identifikator eller en henvisning som får betydningen sin fra det foregående spørsmålet.</p><p>Språkvalg styrer gjenkjenningen mot ett eller flere forventede språk. Det gjeldende Sync-grensesnittet godtar 32 språkkoder og bruker engelsk som standard når ingen valg oppgis. For lyd med språkbytte bør du liste de forventede språkene. En egendefinert kontekstprompt erstatter den administrerte standarden og overstyrer den separate styringen med språkkoder, så angi de forventede språkene inne i prompten når både språk- og scenariokontekst trengs. Behold transkripsjonen på språkene som faktisk snakkes, i stedet for å behandle transkripsjon som en oversettelsesinstruksjon.</p><p>Modellen finnes også i andre transkripsjonsflyter hos AssemblyAI, mens Sync-profilens krav til korte klipp og resultatfelt tilhører dette bestemte grensesnittet. Produsentens Dictation-flyt legger til et separat trinn for tekstopprydding; en transkripsjon og en omskrevet melding er forskjellige artefakter. Bevar den gjenkjente talen hvis et senere redigerings- eller oppsummeringstrinn produserer en bearbeidet versjon, slik at den opprinnelige ordlyden fortsatt er tilgjengelig for sammenligning.</p><p>Nyttige leveranser omfatter en transkribert talemelding, en fullført tur for en assistent, kort søkbar lydtekst eller en tidsmerket ordliste for et kontrollgrensesnitt. Kontroller de avgjørende ordene mot opptaket, bevar eventuelle manglende tidsjusteringer, og hold klippet knyttet til den returnerte teksten. Gjenkjenningsresultatet gir neste applikasjonstrinn en kildebasert transkripsjon; besvaring av forespørselen eller redigering av meldingen tilhører den omkringliggende arbeidsflyten.</p>",
  "aboutText": "Universal-3.5 Pro er AssemblyAIs talegjenkjenningsmodell for å konvertere innspilt tale til tekst. I Sync-profilen gir et kort lydklipp en fullført transkripsjon i ett svar. Dette passer til talemeldinger, trykk-og-snakk-inndata og separate samtaleturer der applikasjonen allerede vet når opptaket skal avsluttes.\n\nKlargjør lyden som et avgrenset klipp. AssemblyAIs Sync-krav godtar varigheter fra 80 millisekunder til 120 sekunder, med en maksimal filstørrelse på 40 MB. De støttede formatene er WAV eller rå, fortegnet 16-bits little-endian PCM. Lyden kan være mono eller stereo, og stereo mikses ned internt. De støttede samplingsfrekvensene er 8, 16, 22.05, 24, 32, 44.1 og 48 kHz. Et WAV-hode oppgir samplingsfrekvens og kanalantall; rå PCM trenger at disse verdiene angis separat i transkripsjonskonfigurasjonen.\n\nTa opp hele ytringen, og behold begynnelsen og slutten av talen intakt. En nyttig selvstendig oppgave er en kort talemelding til produktstøtte som inneholder et produktnavn, en ordreidentifikator og en forespørsel. Behold kildeklippet, slik at transkripsjonen kan kontrolleres mot disse viktige detaljene. For et lengre opptak bør du klargjøre en arbeidsflyt som passer til transkripsjon av lange opptak, i stedet for å behandle varighetsgrensen for korte klipp som en påstand om modellens samlede lydkapasitet.\n\nResultatet inneholder den fullstendige transkripsjonen, en ordliste med konfidens per ord og en samlet konfidens mellom null og én. Det oppgir også varigheten til den innsendte lyden og en forespørselsidentifikator, slik at teksten kan holdes knyttet til originalklippet. Bruk konfidens per ord til å finne avsnitt som bør kontrolleres ved lytting, særlig navn, tall og fagord som betyr noe for applikasjonen.\n\nOrdtidsstempler er valgfrie og avslått som standard. Når de forespørres, kan hvert tidsjusterte ord ha start og slutt i millisekunder relativt til klippets begynnelse. Produsentens profil lar disse verdiene være fraværende når et ord ikke kan tidsjusteres, i stedet for å finne på en omtrentlig tid. Tidsstemplene er mest nøyaktige for engelsk lyd. Bevar manglende tider uttrykkelig når du klargjør ordmarkering, en søkbar bølgeform eller tekstjustering for undertekster, og sammenlign teksten med opptaket før du bruker den som et ferdig undertekstspor.\n\nEn kontekstprompt beskriver hva opptaket handler om. Den kan angi et fagområde, et scenario eller bestemte detaljer som applikasjonen allerede kjenner, og maksimal lengde er 6000 tegn. Begynn med en kort beskrivelse som passer til lyden, som en teknisk støttesamtale om en bestemt enhet. Prompten gir gjenkjenningskontekst; den er ikke en forespørsel om å skrive om talerens melding til et annet dokument.\n\nEn separat liste over nøkkeltermer styrer gjenkjenningen mot et bestemt ordforråd. Sync-profilen godtar opptil 100 termer og 8000 tegn samlet i listen. Bruk nøyaktig stavemåte for uvanlige navn, akronymer eller produkttermer, og la vanlige ord som gjenkjennes godt, stå utenfor listen. Store eller unødvendige termlister kan gi overkorrigeringer, så konsentrer listen om ord som betyr noe i opptaket. Kontekstbeskrivelsen og ordforrådslisten kan brukes sammen.\n\nTidligere samtale kan også hjelpe med å tolke et kort svar. Legg ved tidligere ytringer i kronologisk rekkefølge, fra eldst til nyest, mens den gjeldende lyden fortsatt er turen som transkriberes. Den dokumenterte kontekstrammen er 500 turer eller 16 000 tegn totalt. Hvis den overskrider disse takene eller tilgjengelig modellkontekst, fjernes de eldste oppføringene først. Dette er nyttig når et kort svar inneholder en identifikator eller en henvisning som får betydningen sin fra det foregående spørsmålet.\n\nSpråkvalg styrer gjenkjenningen mot ett eller flere forventede språk. Det gjeldende Sync-grensesnittet godtar 32 språkkoder og bruker engelsk som standard når ingen valg oppgis. For lyd med språkbytte bør du liste de forventede språkene. En egendefinert kontekstprompt erstatter den administrerte standarden og overstyrer den separate styringen med språkkoder, så angi de forventede språkene inne i prompten når både språk- og scenariokontekst trengs. Behold transkripsjonen på språkene som faktisk snakkes, i stedet for å behandle transkripsjon som en oversettelsesinstruksjon.\n\nModellen finnes også i andre transkripsjonsflyter hos AssemblyAI, mens Sync-profilens krav til korte klipp og resultatfelt tilhører dette bestemte grensesnittet. Produsentens Dictation-flyt legger til et separat trinn for tekstopprydding; en transkripsjon og en omskrevet melding er forskjellige artefakter. Bevar den gjenkjente talen hvis et senere redigerings- eller oppsummeringstrinn produserer en bearbeidet versjon, slik at den opprinnelige ordlyden fortsatt er tilgjengelig for sammenligning.\n\nNyttige leveranser omfatter en transkribert talemelding, en fullført tur for en assistent, kort søkbar lydtekst eller en tidsmerket ordliste for et kontrollgrensesnitt. Kontroller de avgjørende ordene mot opptaket, bevar eventuelle manglende tidsjusteringer, og hold klippet knyttet til den returnerte teksten. Gjenkjenningsresultatet gir neste applikasjonstrinn en kildebasert transkripsjon; besvaring av forespørselen eller redigering av meldingen tilhører den omkringliggende arbeidsflyten.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "a3359ba8b6661d09048c8e88dd266ca7b06846ffde9dd1ef2e03d7acaa589a46",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "nb",
  "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=\"Lukk\">×</button></div><div class=\"idline\"><span>AssemblyAI /</span><code>assemblyai/universal-3-5-pro</code><button type=\"button\" id=\"copy-id\">Kopier ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Seksjoner i modellkortet\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Inndata &amp; metoder</button><button type=\"button\" data-card-jump=\"pricing\">Priser</button><button type=\"button\" data-card-jump=\"examples\">Eksempler</button><button type=\"button\" data-card-jump=\"results\">Resultater</button><button type=\"button\" data-card-jump=\"aliases\">Aliaser</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\">Gjenkjenning</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 er AssemblyAIs tale-til-tekst-modell for å gjøre et kort lydklipp til en fullført transkripsjon i ett svar. Sync-profilen legger til konfidens per ord, valgfrie ordtidsstempler, ordforrådshint og kontekst fra tidligere samtale for stemmeinndata og trykk-og-snakk-flyter.</p><dl class=\"card-io\" data-card-io><div><dt>Godkjente inndata</dt><dd>Lyd</dd></div><div><dt>Resultater</dt><dd>Tekst</dd></div></dl><details class=\"card-about\"><summary>Om modellen</summary><p class=\"note-s\" data-model-method-boundary>Denne beskrivelsen dekker modellens funksjoner. Tilgjengelige inndata, utdata og alternativer i Ailoot er oppført nedenfor for den valgte metoden.</p><div class=\"mabout\" id=\"m-about\"><p>Universal-3.5 Pro er AssemblyAIs talegjenkjenningsmodell for å konvertere innspilt tale til tekst. I Sync-profilen gir et kort lydklipp en fullført transkripsjon i ett svar. Dette passer til talemeldinger, trykk-og-snakk-inndata og separate samtaleturer der applikasjonen allerede vet når opptaket skal avsluttes.</p><p>Klargjør lyden som et avgrenset klipp. AssemblyAIs Sync-krav godtar varigheter fra 80 millisekunder til 120 sekunder, med en maksimal filstørrelse på 40 MB. De støttede formatene er WAV eller rå, fortegnet 16-bits little-endian PCM. Lyden kan være mono eller stereo, og stereo mikses ned internt. De støttede samplingsfrekvensene er 8, 16, 22.05, 24, 32, 44.1 og 48 kHz. Et WAV-hode oppgir samplingsfrekvens og kanalantall; rå PCM trenger at disse verdiene angis separat i transkripsjonskonfigurasjonen.</p><p>Ta opp hele ytringen, og behold begynnelsen og slutten av talen intakt. En nyttig selvstendig oppgave er en kort talemelding til produktstøtte som inneholder et produktnavn, en ordreidentifikator og en forespørsel. Behold kildeklippet, slik at transkripsjonen kan kontrolleres mot disse viktige detaljene. For et lengre opptak bør du klargjøre en arbeidsflyt som passer til transkripsjon av lange opptak, i stedet for å behandle varighetsgrensen for korte klipp som en påstand om modellens samlede lydkapasitet.</p><p>Resultatet inneholder den fullstendige transkripsjonen, en ordliste med konfidens per ord og en samlet konfidens mellom null og én. Det oppgir også varigheten til den innsendte lyden og en forespørselsidentifikator, slik at teksten kan holdes knyttet til originalklippet. Bruk konfidens per ord til å finne avsnitt som bør kontrolleres ved lytting, særlig navn, tall og fagord som betyr noe for applikasjonen.</p><p>Ordtidsstempler er valgfrie og avslått som standard. Når de forespørres, kan hvert tidsjusterte ord ha start og slutt i millisekunder relativt til klippets begynnelse. Produsentens profil lar disse verdiene være fraværende når et ord ikke kan tidsjusteres, i stedet for å finne på en omtrentlig tid. Tidsstemplene er mest nøyaktige for engelsk lyd. Bevar manglende tider uttrykkelig når du klargjør ordmarkering, en søkbar bølgeform eller tekstjustering for undertekster, og sammenlign teksten med opptaket før du bruker den som et ferdig undertekstspor.</p><p>En kontekstprompt beskriver hva opptaket handler om. Den kan angi et fagområde, et scenario eller bestemte detaljer som applikasjonen allerede kjenner, og maksimal lengde er 6000 tegn. Begynn med en kort beskrivelse som passer til lyden, som en teknisk støttesamtale om en bestemt enhet. Prompten gir gjenkjenningskontekst; den er ikke en forespørsel om å skrive om talerens melding til et annet dokument.</p><p>En separat liste over nøkkeltermer styrer gjenkjenningen mot et bestemt ordforråd. Sync-profilen godtar opptil 100 termer og 8000 tegn samlet i listen. Bruk nøyaktig stavemåte for uvanlige navn, akronymer eller produkttermer, og la vanlige ord som gjenkjennes godt, stå utenfor listen. Store eller unødvendige termlister kan gi overkorrigeringer, så konsentrer listen om ord som betyr noe i opptaket. Kontekstbeskrivelsen og ordforrådslisten kan brukes sammen.</p><p>Tidligere samtale kan også hjelpe med å tolke et kort svar. Legg ved tidligere ytringer i kronologisk rekkefølge, fra eldst til nyest, mens den gjeldende lyden fortsatt er turen som transkriberes. Den dokumenterte kontekstrammen er 500 turer eller 16 000 tegn totalt. Hvis den overskrider disse takene eller tilgjengelig modellkontekst, fjernes de eldste oppføringene først. Dette er nyttig når et kort svar inneholder en identifikator eller en henvisning som får betydningen sin fra det foregående spørsmålet.</p><p>Språkvalg styrer gjenkjenningen mot ett eller flere forventede språk. Det gjeldende Sync-grensesnittet godtar 32 språkkoder og bruker engelsk som standard når ingen valg oppgis. For lyd med språkbytte bør du liste de forventede språkene. En egendefinert kontekstprompt erstatter den administrerte standarden og overstyrer den separate styringen med språkkoder, så angi de forventede språkene inne i prompten når både språk- og scenariokontekst trengs. Behold transkripsjonen på språkene som faktisk snakkes, i stedet for å behandle transkripsjon som en oversettelsesinstruksjon.</p><p>Modellen finnes også i andre transkripsjonsflyter hos AssemblyAI, mens Sync-profilens krav til korte klipp og resultatfelt tilhører dette bestemte grensesnittet. Produsentens Dictation-flyt legger til et separat trinn for tekstopprydding; en transkripsjon og en omskrevet melding er forskjellige artefakter. Bevar den gjenkjente talen hvis et senere redigerings- eller oppsummeringstrinn produserer en bearbeidet versjon, slik at den opprinnelige ordlyden fortsatt er tilgjengelig for sammenligning.</p><p>Nyttige leveranser omfatter en transkribert talemelding, en fullført tur for en assistent, kort søkbar lydtekst eller en tidsmerket ordliste for et kontrollgrensesnitt. Kontroller de avgjørende ordene mot opptaket, bevar eventuelle manglende tidsjusteringer, og hold klippet knyttet til den returnerte teksten. Gjenkjenningsresultatet gir neste applikasjonstrinn en kildebasert transkripsjon; besvaring av forespørselen eller redigering av meldingen tilhører den omkringliggende arbeidsflyten.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tilgjengelig i Ailoot · inndata &amp; metoder</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Transkripsjon</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Inndatatyper</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>Felt</th><th>Type</th><th>Krav</th><th>Verdier &amp; grenser</th><th>Standard</th></tr></thead><tbody><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrevd</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</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=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>object</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrevd</td><td data-cell-label=\"Verdier &amp; grenser\"><span class=\"card-cell-label\">Verdier &amp; grenser</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>Metodeparametere og livssyklus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Avtale</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=\"Avtale\"><span class=\"card-cell-label\">Avtale</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=\"Avtale\"><span class=\"card-cell-label\">Avtale</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=\"Avtale\"><span class=\"card-cell-label\">Avtale</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=\"Avtale\"><span class=\"card-cell-label\">Avtale</span>Eksemplet leser den faktiske PCM WAV-filen din, som må ha innhold, koder alle filens byte som base64 og sender input_audio.format som wav.</td></tr></tbody></table></div><p>Livssyklus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · Eksakt task_id fra en eksisterende medieoppføring du eier</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>Tariffopplysninger legger ikke til forespørselsvalg. Støttede parametere står ved den valgte metoden.</p><dl data-price-conditions><dt>Hurtigmodus</dt><dd>Ikke angitt <span class=\"note-s\">Når hurtigmodus er valgt</span></dd><dt>Flex-modus</dt><dd>Ikke angitt <span class=\"note-s\">Når flex-modus er valgt</span></dd><dt>Maksimal resonneringsinnsats</dt><dd>Ikke angitt <span class=\"note-s\">Når justeringen «default» brukes for maksimal resonneringsinnsats</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-satser</h4><h4>Priser etter konfigurasjon</h4><p class=\"note-s\">Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasjon</th><th>Prisplan</th><th>Faktureringsenhet</th><th>Kostnad</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasjon\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasjon</span>Grunnpriser for tokener</th><td data-cell-label=\"Prisplan\"><span class=\"card-cell-label\">Prisplan</span>Grunnsats</td><td data-cell-label=\"Faktureringsenhet\"><span class=\"card-cell-label\">Faktureringsenhet</span>—</td><td data-cell-label=\"Kostnad\"><span class=\"card-cell-label\">Kostnad</span><div><span>Inndata · Inngående tokener</span> <b>—</b> <span class=\"price-unit\">/ 1K tokener</span></div><div><span>Utdata · Utgående tokener</span> <b>—</b> <span class=\"price-unit\">/ 1K tokener</span></div><div><span>Inndata · Lesing fra hurtigbuffer</span> <b>—</b> <span class=\"price-unit\">/ 1K tokener</span></div><div><span>Inndata · Skriving til hurtigbuffer</span> <b>—</b> <span class=\"price-unit\">/ 1K tokener</span></div><div><span>Inndata · Skriving til hurtigbuffer, 1 time</span> <b>—</b> <span class=\"price-unit\">/ 1K tokener</span></div></td></tr><tr><th data-cell-label=\"Konfigurasjon\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasjon</span>lydsekund i inndata</th><td data-cell-label=\"Prisplan\"><span class=\"card-cell-label\">Prisplan</span>—</td><td data-cell-label=\"Faktureringsenhet\"><span class=\"card-cell-label\">Faktureringsenhet</span>per sekund inndatalyd</td><td data-cell-label=\"Kostnad\"><span class=\"card-cell-label\">Kostnad</span><div><span>Inndata · lydsekund i inndata</span> <b>$0.00025</b> <span class=\"price-unit\">per sekund inndatalyd</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. <a href=\"/docs/nb/billing/reserve/\">Slik fungerer reservasjon og oppgjør →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Eksempelforespørsler</h3><h4>Ailoot Ultra · Transkripsjon</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodevarianter\"><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 og hele det opprinnelige resultatet</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopier kode\"><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\">Motta og lagre resultater</h3><h4>Ailoot Ultra · Transkripsjon</h4><p class=\"note-s\">Hele den opprinnelige svarkroppen, statusen og videresendte svarhoder. Denne behandleren legger ikke til noen universell JSON-struktur, noe tekstfelt eller noen oppgaveinnpakning.</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>Behold alle ferdige resultater</h5><p class=\"note-s\">Behold alle fullstendige returnerte svar, filer og innholdsdeler.</p><p class=\"note-s\">Bevar hele svaret og svarhodene, alle faktiske utdata, de opprinnelige returnerte identifikatorene og alle bruksfeltene. Hent den opprinnelige operasjonen igjen uten å sende opprettelsesforespørselen på nytt.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Hvis det opprinnelige svaret må kontrolleres</h5><p class=\"note-s\">Behold den faktiske X-Client-Request-ID og hele svaret. Les de opprinnelige ressursene du eier, og deres eksakte signerte innholdsadresser; send aldri en usikker opprettelse på nytt.</p></div><details class=\"card-about\" data-output-fields><summary>Svarfelter</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Felt</th><th>Type</th></tr></thead><tbody><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">text (when present)</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span></td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span></td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Feil og neste trinn</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Svar</th><th>Vilkår</th><th>Neste trinn</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>JSON-kroppen eller den eksplisitte kanoniske modell-ID-en er ugyldig.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Behold svaret og korriger det angitte forespørselsfeltet.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Ailoot API-nøkkelen er ugyldig.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Bruk den autoriserte Ailoot API-nøkkelen din.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Nøkkelgruppen gir ikke tilgang til denne metoden.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Behold de returnerte feildetaljene.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Den valgte metoden har ingen godkjent rute.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Behold de returnerte feildetaljene.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Den godtatte tariffen kan ikke hente den nødvendige inndatamengden eller grensen.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Behold svaret; bruk inndatarepresentasjonen som den godtatte tariffen krever.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Nødvendig lagring, rute, metodepris eller reservasjon er utilgjengelig.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Behold hele det opprinnelige svaret. En usikker reservasjon gir ikke tillatelse til å sende inn på nytt.</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=\"Vilkår\"><span class=\"card-cell-label\">Vilkår</span>Det opprinnelige resultatet, forbruket eller oppgjøret må kontrolleres.</td><td data-cell-label=\"Neste trinn\"><span class=\"card-cell-label\">Neste trinn</span>Behold den faktiske forespørsels-ID-en og det opprinnelige svaret. Les den eksisterende oppføringen du eier; ikke send opprettelsen på nytt.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliaser</h3><h4>Modellaliaser</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>Aliaser for metodestier</h4><p class=\"note-s\">Bruk metodestiene som vises ovenfor.</p><h4>Tilknyttede anroper-ID-er</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 den eksplisitte kanoniske modell-ID-en er ugyldig.",
                "http_status": 400,
                "recovery": "Behold svaret og korriger det angitte forespørselsfeltet.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Ailoot API-nøkkelen er ugyldig.",
                "http_status": 401,
                "recovery": "Bruk den autoriserte Ailoot API-nøkkelen din.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Nøkkelgruppen gir ikke tilgang til denne metoden.",
                "http_status": 403,
                "recovery": "Behold de returnerte feildetaljene.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Den valgte metoden har ingen godkjent rute.",
                "http_status": 404,
                "recovery": "Behold de returnerte feildetaljene.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Den godtatte tariffen kan ikke hente den nødvendige inndatamengden eller grensen.",
                "http_status": 422,
                "recovery": "Behold svaret; bruk inndatarepresentasjonen som den godtatte tariffen krever.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Nødvendig lagring, rute, metodepris eller reservasjon er utilgjengelig.",
                "http_status": 503,
                "recovery": "Behold hele det opprinnelige svaret. En usikker reservasjon gir ikke tillatelse til å sende inn på nytt.",
                "type": null
              },
              {
                "code": null,
                "condition": "Det opprinnelige resultatet, forbruket eller oppgjøret må kontrolleres.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Behold den faktiske forespørsels-ID-en og det opprinnelige svaret. Les den eksisterende oppføringen du eier; ikke send opprettelsen på nytt.",
                "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": "Behold den faktiske X-Client-Request-ID og hele svaret. Les de opprinnelige ressursene du eier, og deres eksakte signerte innholdsadresser; send aldri en usikker opprettelse på nytt."
            },
            "outputs": {
              "all_results": "Bevar hele svaret og svarhodene, alle faktiske utdata, de opprinnelige returnerte identifikatorene og alle bruksfeltene. Hent den opprinnelige operasjonen igjen uten å sende opprettelsesforespørselen på nytt.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Hele den opprinnelige svarkroppen, statusen og videresendte svarhoder. Denne behandleren legger ikke til noen universell JSON-struktur, noe tekstfelt eller noen oppgaveinnpakning."
            },
            "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": [
              "Eksemplet leser den faktiske PCM WAV-filen din, som må ha innhold, koder alle filens byte som base64 og sender 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": "Eksakt task_id fra en eksisterende medieoppføring du eier",
                "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": "Transkripsjon",
        "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": "e30d4852170d83ff6bc7d83438a128eae7b134bb85dbc81225157fbc617d6aee",
    "input_html_sha256": "1fb5934d695cb1458b4af8e89663bf8a9b0ee21700b10aaa1468afd53c6e57f8",
    "private_audit_sha256": "e50bfef9b3d48ba6f7557f55f5a5b9a855a38d05be34a460079d15dd966c91b9",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/nb/assemblyai-universal-3-5-pro/",
    "description": "Universal-3.5 Pro er AssemblyAIs tale-til-tekst-modell for å gjøre et kort lydklipp til en fullført transkripsjon i ett svar. Sync-profilen legger til konfidens per ord, valgfrie ordtidsstempler, ordforrådshint og kontekst fra tidligere samtale for stemmeinndata og trykk-og-snakk-flyter.",
    "locale": "nb",
    "md_url": "https://ailoot.ai/models/nb/assemblyai-universal-3-5-pro/index.md",
    "title": "AssemblyAI: Universal-3.5 Pro — Ailoot",
    "url": "https://ailoot.ai/models/nb/assemblyai-universal-3-5-pro/"
  },
  "rawModel": {
    "about": "Universal-3.5 Pro er AssemblyAIs talegjenkjenningsmodell for å konvertere innspilt tale til tekst. I Sync-profilen gir et kort lydklipp en fullført transkripsjon i ett svar. Dette passer til talemeldinger, trykk-og-snakk-inndata og separate samtaleturer der applikasjonen allerede vet når opptaket skal avsluttes.\n\nKlargjør lyden som et avgrenset klipp. AssemblyAIs Sync-krav godtar varigheter fra 80 millisekunder til 120 sekunder, med en maksimal filstørrelse på 40 MB. De støttede formatene er WAV eller rå, fortegnet 16-bits little-endian PCM. Lyden kan være mono eller stereo, og stereo mikses ned internt. De støttede samplingsfrekvensene er 8, 16, 22.05, 24, 32, 44.1 og 48 kHz. Et WAV-hode oppgir samplingsfrekvens og kanalantall; rå PCM trenger at disse verdiene angis separat i transkripsjonskonfigurasjonen.\n\nTa opp hele ytringen, og behold begynnelsen og slutten av talen intakt. En nyttig selvstendig oppgave er en kort talemelding til produktstøtte som inneholder et produktnavn, en ordreidentifikator og en forespørsel. Behold kildeklippet, slik at transkripsjonen kan kontrolleres mot disse viktige detaljene. For et lengre opptak bør du klargjøre en arbeidsflyt som passer til transkripsjon av lange opptak, i stedet for å behandle varighetsgrensen for korte klipp som en påstand om modellens samlede lydkapasitet.\n\nResultatet inneholder den fullstendige transkripsjonen, en ordliste med konfidens per ord og en samlet konfidens mellom null og én. Det oppgir også varigheten til den innsendte lyden og en forespørselsidentifikator, slik at teksten kan holdes knyttet til originalklippet. Bruk konfidens per ord til å finne avsnitt som bør kontrolleres ved lytting, særlig navn, tall og fagord som betyr noe for applikasjonen.\n\nOrdtidsstempler er valgfrie og avslått som standard. Når de forespørres, kan hvert tidsjusterte ord ha start og slutt i millisekunder relativt til klippets begynnelse. Produsentens profil lar disse verdiene være fraværende når et ord ikke kan tidsjusteres, i stedet for å finne på en omtrentlig tid. Tidsstemplene er mest nøyaktige for engelsk lyd. Bevar manglende tider uttrykkelig når du klargjør ordmarkering, en søkbar bølgeform eller tekstjustering for undertekster, og sammenlign teksten med opptaket før du bruker den som et ferdig undertekstspor.\n\nEn kontekstprompt beskriver hva opptaket handler om. Den kan angi et fagområde, et scenario eller bestemte detaljer som applikasjonen allerede kjenner, og maksimal lengde er 6000 tegn. Begynn med en kort beskrivelse som passer til lyden, som en teknisk støttesamtale om en bestemt enhet. Prompten gir gjenkjenningskontekst; den er ikke en forespørsel om å skrive om talerens melding til et annet dokument.\n\nEn separat liste over nøkkeltermer styrer gjenkjenningen mot et bestemt ordforråd. Sync-profilen godtar opptil 100 termer og 8000 tegn samlet i listen. Bruk nøyaktig stavemåte for uvanlige navn, akronymer eller produkttermer, og la vanlige ord som gjenkjennes godt, stå utenfor listen. Store eller unødvendige termlister kan gi overkorrigeringer, så konsentrer listen om ord som betyr noe i opptaket. Kontekstbeskrivelsen og ordforrådslisten kan brukes sammen.\n\nTidligere samtale kan også hjelpe med å tolke et kort svar. Legg ved tidligere ytringer i kronologisk rekkefølge, fra eldst til nyest, mens den gjeldende lyden fortsatt er turen som transkriberes. Den dokumenterte kontekstrammen er 500 turer eller 16 000 tegn totalt. Hvis den overskrider disse takene eller tilgjengelig modellkontekst, fjernes de eldste oppføringene først. Dette er nyttig når et kort svar inneholder en identifikator eller en henvisning som får betydningen sin fra det foregående spørsmålet.\n\nSpråkvalg styrer gjenkjenningen mot ett eller flere forventede språk. Det gjeldende Sync-grensesnittet godtar 32 språkkoder og bruker engelsk som standard når ingen valg oppgis. For lyd med språkbytte bør du liste de forventede språkene. En egendefinert kontekstprompt erstatter den administrerte standarden og overstyrer den separate styringen med språkkoder, så angi de forventede språkene inne i prompten når både språk- og scenariokontekst trengs. Behold transkripsjonen på språkene som faktisk snakkes, i stedet for å behandle transkripsjon som en oversettelsesinstruksjon.\n\nModellen finnes også i andre transkripsjonsflyter hos AssemblyAI, mens Sync-profilens krav til korte klipp og resultatfelt tilhører dette bestemte grensesnittet. Produsentens Dictation-flyt legger til et separat trinn for tekstopprydding; en transkripsjon og en omskrevet melding er forskjellige artefakter. Bevar den gjenkjente talen hvis et senere redigerings- eller oppsummeringstrinn produserer en bearbeidet versjon, slik at den opprinnelige ordlyden fortsatt er tilgjengelig for sammenligning.\n\nNyttige leveranser omfatter en transkribert talemelding, en fullført tur for en assistent, kort søkbar lydtekst eller en tidsmerket ordliste for et kontrollgrensesnitt. Kontroller de avgjørende ordene mot opptaket, bevar eventuelle manglende tidsjusteringer, og hold klippet knyttet til den returnerte teksten. Gjenkjenningsresultatet gir neste applikasjonstrinn en kildebasert transkripsjon; besvaring av forespørselen eller redigering av meldingen tilhører den omkringliggende arbeidsflyten.",
    "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": "Fullstendige priser for konfigurasjonen finnes i detaljene."
      }
    ],
    "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 den eksplisitte kanoniske modell-ID-en er ugyldig.",
                "http_status": 400,
                "recovery": "Behold svaret og korriger det angitte forespørselsfeltet.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Ailoot API-nøkkelen er ugyldig.",
                "http_status": 401,
                "recovery": "Bruk den autoriserte Ailoot API-nøkkelen din.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Nøkkelgruppen gir ikke tilgang til denne metoden.",
                "http_status": 403,
                "recovery": "Behold de returnerte feildetaljene.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Den valgte metoden har ingen godkjent rute.",
                "http_status": 404,
                "recovery": "Behold de returnerte feildetaljene.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Den godtatte tariffen kan ikke hente den nødvendige inndatamengden eller grensen.",
                "http_status": 422,
                "recovery": "Behold svaret; bruk inndatarepresentasjonen som den godtatte tariffen krever.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Nødvendig lagring, rute, metodepris eller reservasjon er utilgjengelig.",
                "http_status": 503,
                "recovery": "Behold hele det opprinnelige svaret. En usikker reservasjon gir ikke tillatelse til å sende inn på nytt.",
                "type": null
              },
              {
                "code": null,
                "condition": "Det opprinnelige resultatet, forbruket eller oppgjøret må kontrolleres.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Behold den faktiske forespørsels-ID-en og det opprinnelige svaret. Les den eksisterende oppføringen du eier; ikke send opprettelsen på nytt.",
                "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": "Behold den faktiske X-Client-Request-ID og hele svaret. Les de opprinnelige ressursene du eier, og deres eksakte signerte innholdsadresser; send aldri en usikker opprettelse på nytt."
            },
            "outputs": {
              "all_results": "Bevar hele svaret og svarhodene, alle faktiske utdata, de opprinnelige returnerte identifikatorene og alle bruksfeltene. Hent den opprinnelige operasjonen igjen uten å sende opprettelsesforespørselen på nytt.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Hele den opprinnelige svarkroppen, statusen og videresendte svarhoder. Denne behandleren legger ikke til noen universell JSON-struktur, noe tekstfelt eller noen oppgaveinnpakning."
            },
            "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": [
              "Eksemplet leser den faktiske PCM WAV-filen din, som må ha innhold, koder alle filens byte som base64 og sender 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": "Eksakt task_id fra en eksisterende medieoppføring du eier",
                "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": "Transkripsjon",
        "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 er AssemblyAIs tale-til-tekst-modell for å gjøre et kort lydklipp til en fullført transkripsjon i ett svar. Sync-profilen legger til konfidens per ord, valgfrie ordtidsstempler, ordforrådshint og kontekst fra tidligere samtale for stemmeinndata og trykk-og-snakk-flyter."
  },
  "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 er AssemblyAIs tale-til-tekst-modell for å gjøre et kort lydklipp til en fullført transkripsjon i ett svar. Sync-profilen legger til konfidens per ord, valgfrie ordtidsstempler, ordforrådshint og kontekst fra tidligere samtale for stemmeinndata og trykk-og-snakk-flyter.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "18a11ffcf976602cb339aea4c5d8461e0fc928f6a1aa208f7d09d953aa679f76",
    "renderer_sha256": "c8cb5a92c10b47373d294dee7465d66796cd4710c6626fd81459dc0625fc6d26"
  },
  "sourceRevision": "e31fe0637cb1d6e94e1475c961603a31826e0d92b4f6cee4e0ec1dd348cdf704"
}
