{
  "aboutHtml": "<p>Universal-3.5 Pro er AssemblyAI’s talegenkendelsesmodel til at konvertere optaget tale til tekst. I Sync-profilen producerer et kort lydklip en færdig transskription i ét svar. Det passer til talebeskeder, push-to-talk-input og særskilte samtaleture, hvor applikationen allerede ved, hvornår optagelsen skal slutte.</p><p>Forbered lyden som et afgrænset klip. AssemblyAI’s Sync-krav accepterer varigheder fra 80 millisekunder til 120 sekunder med en maksimal filstørrelse på 40 MB. De understøttede formater er WAV eller rå 16-bit PCM med fortegn i little-endian-format. Lyd kan være mono eller stereo, hvor stereo internt nedmikses. Understøttede samplingfrekvenser er 8, 16, 22,05, 24, 32, 44,1 og 48 kHz. En WAV-header angiver samplingfrekvens og antal kanaler; rå PCM kræver, at disse værdier angives separat i transskriptionskonfigurationen.</p><p>Optag hele ytringen, og bevar begyndelsen og slutningen af talen intakt. En nyttig selvstændig opgave er en kort talebesked til produktsupport med et produktnavn, en ordreidentifikator og en anmodning. Gem kildeklippet, så transskriptionen kan kontrolleres mod disse vigtige detaljer. Til en længere optagelse skal du forberede et forløb egnet til længere transskription frem for at behandle varighedsgrænsen for korte klip som en påstand om modellens samlede lydkapacitet.</p><p>Resultatet indeholder den fulde transskription, en ordliste med konfidens pr. ord og en samlet konfidens mellem nul og én. Det angiver også den indsendte lydvarighed og en anmodningsidentifikator, så teksten kan holdes knyttet til sit oprindelige klip. Brug ordkonfidens til at lokalisere passager, der fortjener gennemlytning, især navne, tal og fagord, der betyder noget for applikationen.</p><p>Ordtidsstempler er valgfrie og slået fra som standard. Når der anmodes om dem, kan hvert tidsjusteret ord have start og slut i millisekunder i forhold til klippets begyndelse. Producentens profil udelader disse værdier, når et ord ikke kan tidsjusteres, frem for at opfinde en omtrentlig timing. Tidsstemplernes nøjagtighed er bedst til engelsk lyd. Bevar manglende tidspunkter eksplicit, når du forbereder ordmarkering, en søgbar bølgeform eller undertekstjustering, og sammenlign teksten med optagelsen, før den bruges som et færdigt undertekstspor.</p><p>En kontekstprompt beskriver, hvad optagelsen handler om. Den kan angive et fagområde, et scenarie eller bestemte detaljer, som applikationen allerede kender, og dens maksimale længde er 6000 tegn. Begynd med en kort beskrivelse, der passer til lyden, såsom en teknisk supportsamtale om en bestemt enhed. Prompten leverer genkendelseskontekst; den er ikke en anmodning om at omskrive talerens besked til et andet dokument.</p><p>En separat keyterm-liste styrer genkendelsen mod bestemt ordforråd. Sync-profilen accepterer op til 100 termer og 8000 tegn på tværs af listen. Brug nøjagtig stavning til usædvanlige navne, akronymer eller produkttermer, og udelad almindelige, velgenkendte ord. Store eller unødvendige termlister kan give overkorrektioner, så fokusér listen på ord, der betyder noget i optagelsen. Kontekstbeskrivelsen og ordforrådslisten kan bruges sammen.</p><p>Tidligere samtale kan også hjælpe med at fortolke et kort svar. Vedlæg tidligere ytringer i kronologisk rækkefølge fra ældst til nyest, mens den aktuelle lyd forbliver turen, der transskriberes. Den dokumenterede kontekstramme er 500 ture eller 16.000 tegn i alt. Hvis den overskrider disse lofter eller den tilgængelige modelkontekst, fjernes de ældste poster først. Det er nyttigt, når et kort svar indeholder en identifikator eller en henvisning, hvis betydning kommer fra det foregående spørgsmål.</p><p>Sprogvalg styrer genkendelsen mod ét eller flere forventede sprog. Den aktuelle Sync-grænseflade accepterer 32 sprogkoder og bruger engelsk som standard, når intet valg angives. Til lyd med sprogskift skal du angive de forventede sprog. En brugerdefineret kontekstprompt erstatter den administrerede standard og tilsidesætter den separate styring med sprogkoder, så angiv de forventede sprog inde i prompten, når både sprog- og scenariekontekst behøves. Bevar transskriptionen på de sprog, der faktisk tales, frem for at behandle transskription som en oversættelsesinstruktion.</p><p>Modellen optræder også i andre AssemblyAI-transskriptionsforløb, mens Sync-profilens krav til korte klip og resultatfelter tilhører netop denne grænseflade. Producentens Dictation-forløb tilføjer et separat trin til tekstoprydning; en transskription og en omskrevet besked er forskellige slutprodukter. Bevar den genkendte tale, hvis et senere redigerings- eller opsummeringstrin producerer en renset version, så den oprindelige ordlyd fortsat er tilgængelig til sammenligning.</p><p>Nyttige leverancer omfatter en transskriberet talebesked, en færdig tur til en assistent, kort søgbar lydtekst eller en tidsangivet ordliste til en gennemgangsgrænseflade. Kontrollér de afgørende ord mod optagelsen, bevar eventuelle manglende tidsjusteringer, og hold klippet knyttet til den returnerede tekst. Genkendelsesresultatet giver næste applikationstrin en kildeunderbygget transskription; besvarelse af anmodningen eller redigering af beskeden tilhører det omgivende forløb.</p>",
  "aboutText": "Universal-3.5 Pro er AssemblyAI’s talegenkendelsesmodel til at konvertere optaget tale til tekst. I Sync-profilen producerer et kort lydklip en færdig transskription i ét svar. Det passer til talebeskeder, push-to-talk-input og særskilte samtaleture, hvor applikationen allerede ved, hvornår optagelsen skal slutte.\n\nForbered lyden som et afgrænset klip. AssemblyAI’s Sync-krav accepterer varigheder fra 80 millisekunder til 120 sekunder med en maksimal filstørrelse på 40 MB. De understøttede formater er WAV eller rå 16-bit PCM med fortegn i little-endian-format. Lyd kan være mono eller stereo, hvor stereo internt nedmikses. Understøttede samplingfrekvenser er 8, 16, 22,05, 24, 32, 44,1 og 48 kHz. En WAV-header angiver samplingfrekvens og antal kanaler; rå PCM kræver, at disse værdier angives separat i transskriptionskonfigurationen.\n\nOptag hele ytringen, og bevar begyndelsen og slutningen af talen intakt. En nyttig selvstændig opgave er en kort talebesked til produktsupport med et produktnavn, en ordreidentifikator og en anmodning. Gem kildeklippet, så transskriptionen kan kontrolleres mod disse vigtige detaljer. Til en længere optagelse skal du forberede et forløb egnet til længere transskription frem for at behandle varighedsgrænsen for korte klip som en påstand om modellens samlede lydkapacitet.\n\nResultatet indeholder den fulde transskription, en ordliste med konfidens pr. ord og en samlet konfidens mellem nul og én. Det angiver også den indsendte lydvarighed og en anmodningsidentifikator, så teksten kan holdes knyttet til sit oprindelige klip. Brug ordkonfidens til at lokalisere passager, der fortjener gennemlytning, især navne, tal og fagord, der betyder noget for applikationen.\n\nOrdtidsstempler er valgfrie og slået fra som standard. Når der anmodes om dem, kan hvert tidsjusteret ord have start og slut i millisekunder i forhold til klippets begyndelse. Producentens profil udelader disse værdier, når et ord ikke kan tidsjusteres, frem for at opfinde en omtrentlig timing. Tidsstemplernes nøjagtighed er bedst til engelsk lyd. Bevar manglende tidspunkter eksplicit, når du forbereder ordmarkering, en søgbar bølgeform eller undertekstjustering, og sammenlign teksten med optagelsen, før den bruges som et færdigt undertekstspor.\n\nEn kontekstprompt beskriver, hvad optagelsen handler om. Den kan angive et fagområde, et scenarie eller bestemte detaljer, som applikationen allerede kender, og dens maksimale længde er 6000 tegn. Begynd med en kort beskrivelse, der passer til lyden, såsom en teknisk supportsamtale om en bestemt enhed. Prompten leverer genkendelseskontekst; den er ikke en anmodning om at omskrive talerens besked til et andet dokument.\n\nEn separat keyterm-liste styrer genkendelsen mod bestemt ordforråd. Sync-profilen accepterer op til 100 termer og 8000 tegn på tværs af listen. Brug nøjagtig stavning til usædvanlige navne, akronymer eller produkttermer, og udelad almindelige, velgenkendte ord. Store eller unødvendige termlister kan give overkorrektioner, så fokusér listen på ord, der betyder noget i optagelsen. Kontekstbeskrivelsen og ordforrådslisten kan bruges sammen.\n\nTidligere samtale kan også hjælpe med at fortolke et kort svar. Vedlæg tidligere ytringer i kronologisk rækkefølge fra ældst til nyest, mens den aktuelle lyd forbliver turen, der transskriberes. Den dokumenterede kontekstramme er 500 ture eller 16.000 tegn i alt. Hvis den overskrider disse lofter eller den tilgængelige modelkontekst, fjernes de ældste poster først. Det er nyttigt, når et kort svar indeholder en identifikator eller en henvisning, hvis betydning kommer fra det foregående spørgsmål.\n\nSprogvalg styrer genkendelsen mod ét eller flere forventede sprog. Den aktuelle Sync-grænseflade accepterer 32 sprogkoder og bruger engelsk som standard, når intet valg angives. Til lyd med sprogskift skal du angive de forventede sprog. En brugerdefineret kontekstprompt erstatter den administrerede standard og tilsidesætter den separate styring med sprogkoder, så angiv de forventede sprog inde i prompten, når både sprog- og scenariekontekst behøves. Bevar transskriptionen på de sprog, der faktisk tales, frem for at behandle transskription som en oversættelsesinstruktion.\n\nModellen optræder også i andre AssemblyAI-transskriptionsforløb, mens Sync-profilens krav til korte klip og resultatfelter tilhører netop denne grænseflade. Producentens Dictation-forløb tilføjer et separat trin til tekstoprydning; en transskription og en omskrevet besked er forskellige slutprodukter. Bevar den genkendte tale, hvis et senere redigerings- eller opsummeringstrin producerer en renset version, så den oprindelige ordlyd fortsat er tilgængelig til sammenligning.\n\nNyttige leverancer omfatter en transskriberet talebesked, en færdig tur til en assistent, kort søgbar lydtekst eller en tidsangivet ordliste til en gennemgangsgrænseflade. Kontrollér de afgørende ord mod optagelsen, bevar eventuelle manglende tidsjusteringer, og hold klippet knyttet til den returnerede tekst. Genkendelsesresultatet giver næste applikationstrin en kildeunderbygget transskription; besvarelse af anmodningen eller redigering af beskeden tilhører det omgivende forløb.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "e581b130956667540a0a2a96b86fa9105f1f51df87cb2d0f3a3a21b1a208f0d8",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "da",
  "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=\"Luk\">×</button></div><div class=\"idline\"><span>AssemblyAI /</span><code>assemblyai/universal-3-5-pro</code><button type=\"button\" id=\"copy-id\">Kopiér ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Modelkortets afsnit\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Input og 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\">Genkendelse</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 AssemblyAI’s tale-til-tekst-model til at omdanne et kort lydklip til en færdig transskription i ét svar. Sync-profilen tilføjer ordkonfidens, valgfrie ordtidsstempler, ordforrådshints og kontekst fra tidligere samtale til stemmeinput og push-to-talk-forløb.</p><dl class=\"card-io\" data-card-io><div><dt>Accepterede input</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 beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.</p><div class=\"mabout\" id=\"m-about\"><p>Universal-3.5 Pro er AssemblyAI’s talegenkendelsesmodel til at konvertere optaget tale til tekst. I Sync-profilen producerer et kort lydklip en færdig transskription i ét svar. Det passer til talebeskeder, push-to-talk-input og særskilte samtaleture, hvor applikationen allerede ved, hvornår optagelsen skal slutte.</p><p>Forbered lyden som et afgrænset klip. AssemblyAI’s Sync-krav accepterer varigheder fra 80 millisekunder til 120 sekunder med en maksimal filstørrelse på 40 MB. De understøttede formater er WAV eller rå 16-bit PCM med fortegn i little-endian-format. Lyd kan være mono eller stereo, hvor stereo internt nedmikses. Understøttede samplingfrekvenser er 8, 16, 22,05, 24, 32, 44,1 og 48 kHz. En WAV-header angiver samplingfrekvens og antal kanaler; rå PCM kræver, at disse værdier angives separat i transskriptionskonfigurationen.</p><p>Optag hele ytringen, og bevar begyndelsen og slutningen af talen intakt. En nyttig selvstændig opgave er en kort talebesked til produktsupport med et produktnavn, en ordreidentifikator og en anmodning. Gem kildeklippet, så transskriptionen kan kontrolleres mod disse vigtige detaljer. Til en længere optagelse skal du forberede et forløb egnet til længere transskription frem for at behandle varighedsgrænsen for korte klip som en påstand om modellens samlede lydkapacitet.</p><p>Resultatet indeholder den fulde transskription, en ordliste med konfidens pr. ord og en samlet konfidens mellem nul og én. Det angiver også den indsendte lydvarighed og en anmodningsidentifikator, så teksten kan holdes knyttet til sit oprindelige klip. Brug ordkonfidens til at lokalisere passager, der fortjener gennemlytning, især navne, tal og fagord, der betyder noget for applikationen.</p><p>Ordtidsstempler er valgfrie og slået fra som standard. Når der anmodes om dem, kan hvert tidsjusteret ord have start og slut i millisekunder i forhold til klippets begyndelse. Producentens profil udelader disse værdier, når et ord ikke kan tidsjusteres, frem for at opfinde en omtrentlig timing. Tidsstemplernes nøjagtighed er bedst til engelsk lyd. Bevar manglende tidspunkter eksplicit, når du forbereder ordmarkering, en søgbar bølgeform eller undertekstjustering, og sammenlign teksten med optagelsen, før den bruges som et færdigt undertekstspor.</p><p>En kontekstprompt beskriver, hvad optagelsen handler om. Den kan angive et fagområde, et scenarie eller bestemte detaljer, som applikationen allerede kender, og dens maksimale længde er 6000 tegn. Begynd med en kort beskrivelse, der passer til lyden, såsom en teknisk supportsamtale om en bestemt enhed. Prompten leverer genkendelseskontekst; den er ikke en anmodning om at omskrive talerens besked til et andet dokument.</p><p>En separat keyterm-liste styrer genkendelsen mod bestemt ordforråd. Sync-profilen accepterer op til 100 termer og 8000 tegn på tværs af listen. Brug nøjagtig stavning til usædvanlige navne, akronymer eller produkttermer, og udelad almindelige, velgenkendte ord. Store eller unødvendige termlister kan give overkorrektioner, så fokusér listen på ord, der betyder noget i optagelsen. Kontekstbeskrivelsen og ordforrådslisten kan bruges sammen.</p><p>Tidligere samtale kan også hjælpe med at fortolke et kort svar. Vedlæg tidligere ytringer i kronologisk rækkefølge fra ældst til nyest, mens den aktuelle lyd forbliver turen, der transskriberes. Den dokumenterede kontekstramme er 500 ture eller 16.000 tegn i alt. Hvis den overskrider disse lofter eller den tilgængelige modelkontekst, fjernes de ældste poster først. Det er nyttigt, når et kort svar indeholder en identifikator eller en henvisning, hvis betydning kommer fra det foregående spørgsmål.</p><p>Sprogvalg styrer genkendelsen mod ét eller flere forventede sprog. Den aktuelle Sync-grænseflade accepterer 32 sprogkoder og bruger engelsk som standard, når intet valg angives. Til lyd med sprogskift skal du angive de forventede sprog. En brugerdefineret kontekstprompt erstatter den administrerede standard og tilsidesætter den separate styring med sprogkoder, så angiv de forventede sprog inde i prompten, når både sprog- og scenariekontekst behøves. Bevar transskriptionen på de sprog, der faktisk tales, frem for at behandle transskription som en oversættelsesinstruktion.</p><p>Modellen optræder også i andre AssemblyAI-transskriptionsforløb, mens Sync-profilens krav til korte klip og resultatfelter tilhører netop denne grænseflade. Producentens Dictation-forløb tilføjer et separat trin til tekstoprydning; en transskription og en omskrevet besked er forskellige slutprodukter. Bevar den genkendte tale, hvis et senere redigerings- eller opsummeringstrin producerer en renset version, så den oprindelige ordlyd fortsat er tilgængelig til sammenligning.</p><p>Nyttige leverancer omfatter en transskriberet talebesked, en færdig tur til en assistent, kort søgbar lydtekst eller en tidsangivet ordliste til en gennemgangsgrænseflade. Kontrollér de afgørende ord mod optagelsen, bevar eventuelle manglende tidsjusteringer, og hold klippet knyttet til den returnerede tekst. Genkendelsesresultatet giver næste applikationstrin en kildeunderbygget transskription; besvarelse af anmodningen eller redigering af beskeden tilhører det omgivende forløb.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tilgængelig i Ailoot · input og metoder</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Transskription</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Inputtyper</dt><dd><code>audio</code></dd></div><div><dt>Outputtyper</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>Værdier og grænser</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åkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>assemblyai/universal-3-5-pro</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr><th data-cell-label=\"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åkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Metodeparametre og livscyklus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</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=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>Eksemplet læser din faktiske, ikke-tomme PCM WAV-fil, koder samtlige bytes i filen som base64 og sender input_audio.format som wav.</td></tr></tbody></table></div><p>Livscyklus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · præcist task_id fra en eksisterende mediepost, du ejer</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>Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.</p><dl data-price-conditions><dt>Hurtig tilstand</dt><dd>Ikke angivet <span class=\"note-s\">Når hurtig tilstand er valgt</span></dd><dt>flex-tilstand</dt><dd>Ikke angivet <span class=\"note-s\">Når flex-tilstanden er valgt</span></dd><dt>Maksimal ræsonneringsindsats</dt><dd>Ikke angivet <span class=\"note-s\">Når default-justeringen anvendes ved maksimal ræsonneringsindsats</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-takster</h4><h4>Priser efter konfiguration</h4><p class=\"note-s\">Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Takstplan</th><th>Afregningsenhed</th><th>Beløb</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Grundpriser for tokens</th><td data-cell-label=\"Takstplan\"><span class=\"card-cell-label\">Takstplan</span>Grundtakst</td><td data-cell-label=\"Afregningsenhed\"><span class=\"card-cell-label\">Afregningsenhed</span>—</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Input · Inputtokens</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Output · Outputtokens</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Input · Cachelæsning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Input · Cacheskrivning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Input · Cacheskrivning, 1 time</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>sekund inputlyd</th><td data-cell-label=\"Takstplan\"><span class=\"card-cell-label\">Takstplan</span>—</td><td data-cell-label=\"Afregningsenhed\"><span class=\"card-cell-label\">Afregningsenhed</span>pr. sekund lydinput</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Input · sekund inputlyd</span> <b>$0.00025</b> <span class=\"price-unit\">pr. sekund lydinput</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. <a href=\"/docs/da/billing/reserve/\">Sådan fungerer reservation og afregning →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Eksempelanmodninger</h3><h4>Ailoot Ultra · Transskription</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 oprindelige resultat</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiér 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\">Hent og gem resultater</h3><h4>Ailoot Ultra · Transskription</h4><p class=\"note-s\">Hele det oprindelige svarindhold, status og videresendte headere. Denne handler tilføjer hverken en universel JSON-struktur, et tekstfelt eller en opgaveindpakning.</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 færdige resultater</h5><p class=\"note-s\">Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.</p><p class=\"note-s\">Gem hele svaret og alle headere, alle faktisk returnerede output, de oprindeligt returnerede identifikatorer og alle felter med forbrugsdata. Gendan den oprindelige operation uden at sende oprettelsesanmodningen igen.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Hvis det oprindelige svar skal kontrolleres</h5><p class=\"note-s\">Behold det faktiske X-Client-Request-ID og hele svaret. Læs de oprindelige aktiver, du ejer, og deres præcise signerede indholds-URL’er; indsend aldrig en oprettelse med usikkert udfald igen.</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>Fejl og næste trin</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Svar</th><th>Betingelse</th><th>Næste trin</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=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>JSON-indholdet eller det eksplicitte kanoniske model-ID er ugyldigt.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Behold svaret, og ret det angivne forespørgselsfelt.</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=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Ailoot API-nøglen er ugyldig.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Brug din autoriserede Ailoot API-nøgle.</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=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Nøglens gruppe giver ikke adgang til denne metode.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Behold de returnerede fejloplysninger.</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=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Den valgte metode har ingen rute med adgangstilladelse.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Behold de returnerede fejloplysninger.</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=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Den accepterede tarif kan ikke hente den påkrævede inputmængde eller grænse.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Behold svaret; brug den inputrepræsentation, som den accepterede tarif kræver.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>503 · <code></code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Påkrævet lager, rute, metodepris eller reservation er utilgængelig.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Behold hele det oprindelige svar. En usikker reservation giver ikke tilladelse til at indsende igen.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>502 · <code>server_error</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Det oprindelige resultat, forbrug eller den oprindelige afregning skal kontrolleres.</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Behold det faktiske forespørgsels-ID og det oprindelige svar. Læs den eksisterende post, du ejer; indsend ikke oprettelsen igen.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliaser</h3><h4>Modelaliaser</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\">Brug metodestierne vist ovenfor.</p><h4>Relaterede kalder-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-indholdet eller det eksplicitte kanoniske model-ID er ugyldigt.",
                "http_status": 400,
                "recovery": "Behold svaret, og ret det angivne forespørgselsfelt.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Ailoot API-nøglen er ugyldig.",
                "http_status": 401,
                "recovery": "Brug din autoriserede Ailoot API-nøgle.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Nøglens gruppe giver ikke adgang til denne metode.",
                "http_status": 403,
                "recovery": "Behold de returnerede fejloplysninger.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Den valgte metode har ingen rute med adgangstilladelse.",
                "http_status": 404,
                "recovery": "Behold de returnerede fejloplysninger.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Den accepterede tarif kan ikke hente den påkrævede inputmængde eller grænse.",
                "http_status": 422,
                "recovery": "Behold svaret; brug den inputrepræsentation, som den accepterede tarif kræver.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Påkrævet lager, rute, metodepris eller reservation er utilgængelig.",
                "http_status": 503,
                "recovery": "Behold hele det oprindelige svar. En usikker reservation giver ikke tilladelse til at indsende igen.",
                "type": null
              },
              {
                "code": null,
                "condition": "Det oprindelige resultat, forbrug eller den oprindelige afregning skal kontrolleres.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Behold det faktiske forespørgsels-ID og det oprindelige svar. Læs den eksisterende post, du ejer; indsend ikke oprettelsen igen.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Behold det faktiske X-Client-Request-ID og hele svaret. Læs de oprindelige aktiver, du ejer, og deres præcise signerede indholds-URL’er; indsend aldrig en oprettelse med usikkert udfald igen."
            },
            "outputs": {
              "all_results": "Gem hele svaret og alle headere, alle faktisk returnerede output, de oprindeligt returnerede identifikatorer og alle felter med forbrugsdata. Gendan den oprindelige operation uden at sende oprettelsesanmodningen igen.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Hele det oprindelige svarindhold, status og videresendte headere. Denne handler tilføjer hverken en universel JSON-struktur, et tekstfelt eller en opgaveindpakning."
            },
            "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 læser din faktiske, ikke-tomme PCM WAV-fil, koder samtlige bytes i filen 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": "præcist task_id fra en eksisterende mediepost, du ejer",
                "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": "Transskription",
        "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": "d0dc1aa3ea7dfe4ee046e03410294420b84bb1b375ad75832848959e6e9ce1d4",
    "input_html_sha256": "cb108b8b4749d378c10d984c09cb4f38e201bd0e8e0917ec6bd8d232ce5de5b5",
    "private_audit_sha256": "247cabc582c5ab9e95d28d3fad8a272b25b28337f2c6f9b48f10ff69b5f4b785",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/da/assemblyai-universal-3-5-pro/",
    "description": "Universal-3.5 Pro er AssemblyAI’s tale-til-tekst-model til at omdanne et kort lydklip til en færdig transskription i ét svar. Sync-profilen tilføjer ordkonfidens, valgfrie ordtidsstempler, ordforrådshints og kontekst fra tidligere samtale til stemmeinput og push-to-talk-forløb.",
    "locale": "da",
    "md_url": "https://ailoot.ai/models/da/assemblyai-universal-3-5-pro/index.md",
    "title": "AssemblyAI: Universal-3.5 Pro — Ailoot",
    "url": "https://ailoot.ai/models/da/assemblyai-universal-3-5-pro/"
  },
  "rawModel": {
    "about": "Universal-3.5 Pro er AssemblyAI’s talegenkendelsesmodel til at konvertere optaget tale til tekst. I Sync-profilen producerer et kort lydklip en færdig transskription i ét svar. Det passer til talebeskeder, push-to-talk-input og særskilte samtaleture, hvor applikationen allerede ved, hvornår optagelsen skal slutte.\n\nForbered lyden som et afgrænset klip. AssemblyAI’s Sync-krav accepterer varigheder fra 80 millisekunder til 120 sekunder med en maksimal filstørrelse på 40 MB. De understøttede formater er WAV eller rå 16-bit PCM med fortegn i little-endian-format. Lyd kan være mono eller stereo, hvor stereo internt nedmikses. Understøttede samplingfrekvenser er 8, 16, 22,05, 24, 32, 44,1 og 48 kHz. En WAV-header angiver samplingfrekvens og antal kanaler; rå PCM kræver, at disse værdier angives separat i transskriptionskonfigurationen.\n\nOptag hele ytringen, og bevar begyndelsen og slutningen af talen intakt. En nyttig selvstændig opgave er en kort talebesked til produktsupport med et produktnavn, en ordreidentifikator og en anmodning. Gem kildeklippet, så transskriptionen kan kontrolleres mod disse vigtige detaljer. Til en længere optagelse skal du forberede et forløb egnet til længere transskription frem for at behandle varighedsgrænsen for korte klip som en påstand om modellens samlede lydkapacitet.\n\nResultatet indeholder den fulde transskription, en ordliste med konfidens pr. ord og en samlet konfidens mellem nul og én. Det angiver også den indsendte lydvarighed og en anmodningsidentifikator, så teksten kan holdes knyttet til sit oprindelige klip. Brug ordkonfidens til at lokalisere passager, der fortjener gennemlytning, især navne, tal og fagord, der betyder noget for applikationen.\n\nOrdtidsstempler er valgfrie og slået fra som standard. Når der anmodes om dem, kan hvert tidsjusteret ord have start og slut i millisekunder i forhold til klippets begyndelse. Producentens profil udelader disse værdier, når et ord ikke kan tidsjusteres, frem for at opfinde en omtrentlig timing. Tidsstemplernes nøjagtighed er bedst til engelsk lyd. Bevar manglende tidspunkter eksplicit, når du forbereder ordmarkering, en søgbar bølgeform eller undertekstjustering, og sammenlign teksten med optagelsen, før den bruges som et færdigt undertekstspor.\n\nEn kontekstprompt beskriver, hvad optagelsen handler om. Den kan angive et fagområde, et scenarie eller bestemte detaljer, som applikationen allerede kender, og dens maksimale længde er 6000 tegn. Begynd med en kort beskrivelse, der passer til lyden, såsom en teknisk supportsamtale om en bestemt enhed. Prompten leverer genkendelseskontekst; den er ikke en anmodning om at omskrive talerens besked til et andet dokument.\n\nEn separat keyterm-liste styrer genkendelsen mod bestemt ordforråd. Sync-profilen accepterer op til 100 termer og 8000 tegn på tværs af listen. Brug nøjagtig stavning til usædvanlige navne, akronymer eller produkttermer, og udelad almindelige, velgenkendte ord. Store eller unødvendige termlister kan give overkorrektioner, så fokusér listen på ord, der betyder noget i optagelsen. Kontekstbeskrivelsen og ordforrådslisten kan bruges sammen.\n\nTidligere samtale kan også hjælpe med at fortolke et kort svar. Vedlæg tidligere ytringer i kronologisk rækkefølge fra ældst til nyest, mens den aktuelle lyd forbliver turen, der transskriberes. Den dokumenterede kontekstramme er 500 ture eller 16.000 tegn i alt. Hvis den overskrider disse lofter eller den tilgængelige modelkontekst, fjernes de ældste poster først. Det er nyttigt, når et kort svar indeholder en identifikator eller en henvisning, hvis betydning kommer fra det foregående spørgsmål.\n\nSprogvalg styrer genkendelsen mod ét eller flere forventede sprog. Den aktuelle Sync-grænseflade accepterer 32 sprogkoder og bruger engelsk som standard, når intet valg angives. Til lyd med sprogskift skal du angive de forventede sprog. En brugerdefineret kontekstprompt erstatter den administrerede standard og tilsidesætter den separate styring med sprogkoder, så angiv de forventede sprog inde i prompten, når både sprog- og scenariekontekst behøves. Bevar transskriptionen på de sprog, der faktisk tales, frem for at behandle transskription som en oversættelsesinstruktion.\n\nModellen optræder også i andre AssemblyAI-transskriptionsforløb, mens Sync-profilens krav til korte klip og resultatfelter tilhører netop denne grænseflade. Producentens Dictation-forløb tilføjer et separat trin til tekstoprydning; en transskription og en omskrevet besked er forskellige slutprodukter. Bevar den genkendte tale, hvis et senere redigerings- eller opsummeringstrin producerer en renset version, så den oprindelige ordlyd fortsat er tilgængelig til sammenligning.\n\nNyttige leverancer omfatter en transskriberet talebesked, en færdig tur til en assistent, kort søgbar lydtekst eller en tidsangivet ordliste til en gennemgangsgrænseflade. Kontrollér de afgørende ord mod optagelsen, bevar eventuelle manglende tidsjusteringer, og hold klippet knyttet til den returnerede tekst. Genkendelsesresultatet giver næste applikationstrin en kildeunderbygget transskription; besvarelse af anmodningen eller redigering af beskeden tilhører det omgivende forløb.",
    "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": "De fulde prisoplysninger for konfigurationen findes under detaljer."
      }
    ],
    "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-indholdet eller det eksplicitte kanoniske model-ID er ugyldigt.",
                "http_status": 400,
                "recovery": "Behold svaret, og ret det angivne forespørgselsfelt.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Ailoot API-nøglen er ugyldig.",
                "http_status": 401,
                "recovery": "Brug din autoriserede Ailoot API-nøgle.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Nøglens gruppe giver ikke adgang til denne metode.",
                "http_status": 403,
                "recovery": "Behold de returnerede fejloplysninger.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Den valgte metode har ingen rute med adgangstilladelse.",
                "http_status": 404,
                "recovery": "Behold de returnerede fejloplysninger.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Den accepterede tarif kan ikke hente den påkrævede inputmængde eller grænse.",
                "http_status": 422,
                "recovery": "Behold svaret; brug den inputrepræsentation, som den accepterede tarif kræver.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Påkrævet lager, rute, metodepris eller reservation er utilgængelig.",
                "http_status": 503,
                "recovery": "Behold hele det oprindelige svar. En usikker reservation giver ikke tilladelse til at indsende igen.",
                "type": null
              },
              {
                "code": null,
                "condition": "Det oprindelige resultat, forbrug eller den oprindelige afregning skal kontrolleres.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Behold det faktiske forespørgsels-ID og det oprindelige svar. Læs den eksisterende post, du ejer; indsend ikke oprettelsen igen.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Behold det faktiske X-Client-Request-ID og hele svaret. Læs de oprindelige aktiver, du ejer, og deres præcise signerede indholds-URL’er; indsend aldrig en oprettelse med usikkert udfald igen."
            },
            "outputs": {
              "all_results": "Gem hele svaret og alle headere, alle faktisk returnerede output, de oprindeligt returnerede identifikatorer og alle felter med forbrugsdata. Gendan den oprindelige operation uden at sende oprettelsesanmodningen igen.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Hele det oprindelige svarindhold, status og videresendte headere. Denne handler tilføjer hverken en universel JSON-struktur, et tekstfelt eller en opgaveindpakning."
            },
            "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 læser din faktiske, ikke-tomme PCM WAV-fil, koder samtlige bytes i filen 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": "præcist task_id fra en eksisterende mediepost, du ejer",
                "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": "Transskription",
        "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 AssemblyAI’s tale-til-tekst-model til at omdanne et kort lydklip til en færdig transskription i ét svar. Sync-profilen tilføjer ordkonfidens, valgfrie ordtidsstempler, ordforrådshints og kontekst fra tidligere samtale til stemmeinput og push-to-talk-forløb."
  },
  "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 AssemblyAI’s tale-til-tekst-model til at omdanne et kort lydklip til en færdig transskription i ét svar. Sync-profilen tilføjer ordkonfidens, valgfrie ordtidsstempler, ordforrådshints og kontekst fra tidligere samtale til stemmeinput og push-to-talk-forløb.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "0733fb3d6f77bb7d5c8d89d1d9e5cb9acf72ab6dd1fdda78e4f620c7ea5ae3ae",
    "renderer_sha256": "2bf9f26ea9bfd57ed53d867671d8f05b41a6ea85089f48039e3365dc2b92ec2c"
  },
  "sourceRevision": "884b1e71ed15c63b557b6912b169c7b1ab3648d5c5917d45edecaff92ecd981e"
}
