{
  "aboutHtml": "<p>Universal-3.5 Pro is het spraakherkenningsmodel van AssemblyAI voor het omzetten van opgenomen spraak in tekst. In het Sync-profiel levert een korte audioclip in één antwoord een volledig transcript op. Dit is geschikt voor spraakberichten, push-to-talk-invoer en afzonderlijke gespreksbeurten waarbij de toepassing al weet wanneer de opname moet eindigen.</p><p>Bereid de audio als een afgebakende clip voor. De Sync-vereisten van AssemblyAI aanvaarden een duur van 80 milliseconden tot 120 seconden, met een maximale bestandsgrootte van 40 MB. De ondersteunde formaten zijn WAV of ruwe signed 16-bit little-endian PCM. Audio kan mono of stereo zijn, waarbij stereo intern wordt teruggemengd. Ondersteunde samplefrequenties zijn 8, 16, 22,05, 24, 32, 44,1 en 48 kHz. Een WAV-header levert de samplefrequentie en het aantal kanalen; bij ruwe PCM moeten die waarden afzonderlijk in de transcriptieconfiguratie worden opgegeven.</p><p>Neem de volledige uiting op en houd het begin en einde van de spraak intact. Een bruikbare eigen taak is een kort spraakbericht voor productondersteuning met een productnaam, een bestel-ID en een verzoek. Bewaar de bronclip, zodat het transcript aan die belangrijke details kan worden getoetst. Bereid voor een langere opname een workflow voor die geschikt is voor lange transcriptie, in plaats van de duurlimiet voor korte clips als een modelbrede claim over audiocapaciteit te beschouwen.</p><p>Het resultaat bevat het volledige transcript, een woordenlijst met betrouwbaarheid per woord en een algemene betrouwbaarheid tussen nul en één. Het geeft ook de duur van de ingediende audio en een verzoek-ID, waardoor de tekst met de oorspronkelijke clip verbonden kan blijven. Gebruik woordbetrouwbaarheid om passages te vinden die een luistercontrole verdienen, vooral namen, cijfers en domeinwoordenschat die voor de toepassing van belang zijn.</p><p>Woordtijdstempels zijn optioneel en standaard uitgeschakeld. Wanneer ze worden gevraagd, kan elk uitgelijnd woord zijn begin en einde in milliseconden ten opzichte van het begin van de clip bevatten. Het profiel van de fabrikant laat die waarden weg wanneer een woord niet kan worden uitgelijnd, in plaats van een geschatte timing te verzinnen. Tijdstempels zijn het nauwkeurigst voor Engelstalige audio. Behoud ontbrekende timings expliciet bij het voorbereiden van woordmarkering, een doorzoekbare golfvorm of ondertiteluitlijning en vergelijk de tekst met de opname voordat je die als een afgewerkt ondertitelspoor gebruikt.</p><p>Een contextuele prompt beschrijft waarover de opname gaat. Die kan een domein, scenario of specifieke details benoemen die de toepassing al kent en heeft een maximale lengte van 6.000 tekens. Begin met een korte beschrijving die bij de audio past, zoals een technisch ondersteuningsgesprek over een bepaald toestel. De prompt levert herkenningscontext; het is geen verzoek om de boodschap van de spreker naar een ander document te herschrijven.</p><p>Een afzonderlijke lijst met sleuteltermen stuurt de herkenning naar specifieke woordenschat. Het Sync-profiel aanvaardt maximaal 100 termen en 8.000 tekens voor die volledige lijst. Gebruik exacte spellingen voor ongebruikelijke namen, afkortingen of producttermen en laat gewone, goed herkende woorden uit de lijst. Grote of overbodige termenlijsten kunnen overcorrecties veroorzaken. Richt de lijst dus op woorden die in de opname van belang zijn. De contextbeschrijving en woordenlijst kunnen samen worden gebruikt.</p><p>Eerder gesprek kan ook helpen om een kort antwoord te interpreteren. Lever eerdere uitingen in chronologische volgorde aan, van oud naar nieuw, terwijl de huidige audio de te transcriberen beurt blijft. Het gedocumenteerde contextbudget is 500 beurten of in totaal 16.000 tekens. Als het die grenzen of de beschikbare modelcontext overschrijdt, worden de oudste vermeldingen eerst verwijderd. Dit is nuttig wanneer een kort antwoord een identificatie of verwijzing bevat waarvan de betekenis uit de voorafgaande vraag komt.</p><p>Taalkeuze stuurt de herkenning naar één of meerdere verwachte talen. De huidige Sync-interface aanvaardt 32 taalcodes en gebruikt standaard Engels als geen keuze is opgegeven. Som voor audio met taalwisselingen de verwachte talen op. Een eigen contextuele prompt vervangt de beheerde standaard en krijgt voorrang op de afzonderlijke sturing via taalcodes. Benoem de verwachte talen dus in die prompt wanneer zowel taal- als scenariocontext nodig is. Behoud het transcript in de werkelijk gesproken talen, in plaats van transcriptie als een vertaalinstructie te behandelen.</p><p>Het model komt ook voor in andere transcriptieworkflows van AssemblyAI, terwijl de vereisten voor korte clips en resultaatvelden van het Sync-profiel bij deze specifieke interface horen. De Dictation-workflow van de fabrikant voegt een afzonderlijke tekstopschoningsstap toe; een transcript en een herschreven bericht zijn verschillende resultaten. Behoud de herkende spraak wanneer een latere bewerkings- of samenvattingsstap een opgeschoonde versie produceert, zodat de oorspronkelijke bewoordingen voor vergelijking beschikbaar blijven.</p><p>Bruikbare opleveringen omvatten een getranscribeerd spraakbericht, een volledige beurt voor een assistent, korte doorzoekbare audiotekst of een getimede woordenlijst voor een beoordelingsinterface. Controleer de doorslaggevende woorden aan de hand van de opname, behoud ontbrekende uitlijningen en houd de clip verbonden met de teruggestuurde tekst. Het herkenningsresultaat geeft de volgende toepassingsstap een op de bron gebaseerde transcriptie; het verzoek beantwoorden of het bericht bewerken behoort tot de omringende workflow.</p>",
  "aboutText": "Universal-3.5 Pro is het spraakherkenningsmodel van AssemblyAI voor het omzetten van opgenomen spraak in tekst. In het Sync-profiel levert een korte audioclip in één antwoord een volledig transcript op. Dit is geschikt voor spraakberichten, push-to-talk-invoer en afzonderlijke gespreksbeurten waarbij de toepassing al weet wanneer de opname moet eindigen.\n\nBereid de audio als een afgebakende clip voor. De Sync-vereisten van AssemblyAI aanvaarden een duur van 80 milliseconden tot 120 seconden, met een maximale bestandsgrootte van 40 MB. De ondersteunde formaten zijn WAV of ruwe signed 16-bit little-endian PCM. Audio kan mono of stereo zijn, waarbij stereo intern wordt teruggemengd. Ondersteunde samplefrequenties zijn 8, 16, 22,05, 24, 32, 44,1 en 48 kHz. Een WAV-header levert de samplefrequentie en het aantal kanalen; bij ruwe PCM moeten die waarden afzonderlijk in de transcriptieconfiguratie worden opgegeven.\n\nNeem de volledige uiting op en houd het begin en einde van de spraak intact. Een bruikbare eigen taak is een kort spraakbericht voor productondersteuning met een productnaam, een bestel-ID en een verzoek. Bewaar de bronclip, zodat het transcript aan die belangrijke details kan worden getoetst. Bereid voor een langere opname een workflow voor die geschikt is voor lange transcriptie, in plaats van de duurlimiet voor korte clips als een modelbrede claim over audiocapaciteit te beschouwen.\n\nHet resultaat bevat het volledige transcript, een woordenlijst met betrouwbaarheid per woord en een algemene betrouwbaarheid tussen nul en één. Het geeft ook de duur van de ingediende audio en een verzoek-ID, waardoor de tekst met de oorspronkelijke clip verbonden kan blijven. Gebruik woordbetrouwbaarheid om passages te vinden die een luistercontrole verdienen, vooral namen, cijfers en domeinwoordenschat die voor de toepassing van belang zijn.\n\nWoordtijdstempels zijn optioneel en standaard uitgeschakeld. Wanneer ze worden gevraagd, kan elk uitgelijnd woord zijn begin en einde in milliseconden ten opzichte van het begin van de clip bevatten. Het profiel van de fabrikant laat die waarden weg wanneer een woord niet kan worden uitgelijnd, in plaats van een geschatte timing te verzinnen. Tijdstempels zijn het nauwkeurigst voor Engelstalige audio. Behoud ontbrekende timings expliciet bij het voorbereiden van woordmarkering, een doorzoekbare golfvorm of ondertiteluitlijning en vergelijk de tekst met de opname voordat je die als een afgewerkt ondertitelspoor gebruikt.\n\nEen contextuele prompt beschrijft waarover de opname gaat. Die kan een domein, scenario of specifieke details benoemen die de toepassing al kent en heeft een maximale lengte van 6.000 tekens. Begin met een korte beschrijving die bij de audio past, zoals een technisch ondersteuningsgesprek over een bepaald toestel. De prompt levert herkenningscontext; het is geen verzoek om de boodschap van de spreker naar een ander document te herschrijven.\n\nEen afzonderlijke lijst met sleuteltermen stuurt de herkenning naar specifieke woordenschat. Het Sync-profiel aanvaardt maximaal 100 termen en 8.000 tekens voor die volledige lijst. Gebruik exacte spellingen voor ongebruikelijke namen, afkortingen of producttermen en laat gewone, goed herkende woorden uit de lijst. Grote of overbodige termenlijsten kunnen overcorrecties veroorzaken. Richt de lijst dus op woorden die in de opname van belang zijn. De contextbeschrijving en woordenlijst kunnen samen worden gebruikt.\n\nEerder gesprek kan ook helpen om een kort antwoord te interpreteren. Lever eerdere uitingen in chronologische volgorde aan, van oud naar nieuw, terwijl de huidige audio de te transcriberen beurt blijft. Het gedocumenteerde contextbudget is 500 beurten of in totaal 16.000 tekens. Als het die grenzen of de beschikbare modelcontext overschrijdt, worden de oudste vermeldingen eerst verwijderd. Dit is nuttig wanneer een kort antwoord een identificatie of verwijzing bevat waarvan de betekenis uit de voorafgaande vraag komt.\n\nTaalkeuze stuurt de herkenning naar één of meerdere verwachte talen. De huidige Sync-interface aanvaardt 32 taalcodes en gebruikt standaard Engels als geen keuze is opgegeven. Som voor audio met taalwisselingen de verwachte talen op. Een eigen contextuele prompt vervangt de beheerde standaard en krijgt voorrang op de afzonderlijke sturing via taalcodes. Benoem de verwachte talen dus in die prompt wanneer zowel taal- als scenariocontext nodig is. Behoud het transcript in de werkelijk gesproken talen, in plaats van transcriptie als een vertaalinstructie te behandelen.\n\nHet model komt ook voor in andere transcriptieworkflows van AssemblyAI, terwijl de vereisten voor korte clips en resultaatvelden van het Sync-profiel bij deze specifieke interface horen. De Dictation-workflow van de fabrikant voegt een afzonderlijke tekstopschoningsstap toe; een transcript en een herschreven bericht zijn verschillende resultaten. Behoud de herkende spraak wanneer een latere bewerkings- of samenvattingsstap een opgeschoonde versie produceert, zodat de oorspronkelijke bewoordingen voor vergelijking beschikbaar blijven.\n\nBruikbare opleveringen omvatten een getranscribeerd spraakbericht, een volledige beurt voor een assistent, korte doorzoekbare audiotekst of een getimede woordenlijst voor een beoordelingsinterface. Controleer de doorslaggevende woorden aan de hand van de opname, behoud ontbrekende uitlijningen en houd de clip verbonden met de teruggestuurde tekst. Het herkenningsresultaat geeft de volgende toepassingsstap een op de bron gebaseerde transcriptie; het verzoek beantwoorden of het bericht bewerken behoort tot de omringende workflow.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "9c74d46a00bd4fb69d296d31d93a3333d1db453fa26c9177086bc3d6164ab033",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "nl-be",
  "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=\"Sluiten\">×</button></div><div class=\"idline\"><span>AssemblyAI /</span><code>assemblyai/universal-3-5-pro</code><button type=\"button\" id=\"copy-id\">ID kopiëren</button></div><nav class=\"card-jump-nav\" aria-label=\"Onderdelen van de modelkaart\"><button type=\"button\" data-card-jump=\"overview\">Aan de slag</button><button type=\"button\" data-card-jump=\"methods\">Invoer en methoden</button><button type=\"button\" data-card-jump=\"pricing\">Tarieven</button><button type=\"button\" data-card-jump=\"examples\">Voorbeelden</button><button type=\"button\" data-card-jump=\"results\">Resultaten</button><button type=\"button\" data-card-jump=\"aliases\">Aliasnamen</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-methoden\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|transcriptions|/v1/audio/transcriptions|assemblyai%2Funiversal-3-5-pro\">Herkenning</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\">Aan de slag</h3><p class=\"mdesc-full\">Universal-3.5 Pro is het spraak-naar-tekstmodel van AssemblyAI dat een korte audioclip in één antwoord omzet in een volledig transcript. Het Sync-profiel voegt woordbetrouwbaarheid, optionele woordtijdstempels, woordenschathints en context uit eerdere gesprekken toe voor spraakinvoer en push-to-talk-workflows.</p><dl class=\"card-io\" data-card-io><div><dt>Toegestane invoer</dt><dd>Audio</dd></div><div><dt>Resultaten</dt><dd>Tekst</dd></div></dl><details class=\"card-about\"><summary>Over het model</summary><p class=\"note-s\" data-model-method-boundary>Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.</p><div class=\"mabout\" id=\"m-about\"><p>Universal-3.5 Pro is het spraakherkenningsmodel van AssemblyAI voor het omzetten van opgenomen spraak in tekst. In het Sync-profiel levert een korte audioclip in één antwoord een volledig transcript op. Dit is geschikt voor spraakberichten, push-to-talk-invoer en afzonderlijke gespreksbeurten waarbij de toepassing al weet wanneer de opname moet eindigen.</p><p>Bereid de audio als een afgebakende clip voor. De Sync-vereisten van AssemblyAI aanvaarden een duur van 80 milliseconden tot 120 seconden, met een maximale bestandsgrootte van 40 MB. De ondersteunde formaten zijn WAV of ruwe signed 16-bit little-endian PCM. Audio kan mono of stereo zijn, waarbij stereo intern wordt teruggemengd. Ondersteunde samplefrequenties zijn 8, 16, 22,05, 24, 32, 44,1 en 48 kHz. Een WAV-header levert de samplefrequentie en het aantal kanalen; bij ruwe PCM moeten die waarden afzonderlijk in de transcriptieconfiguratie worden opgegeven.</p><p>Neem de volledige uiting op en houd het begin en einde van de spraak intact. Een bruikbare eigen taak is een kort spraakbericht voor productondersteuning met een productnaam, een bestel-ID en een verzoek. Bewaar de bronclip, zodat het transcript aan die belangrijke details kan worden getoetst. Bereid voor een langere opname een workflow voor die geschikt is voor lange transcriptie, in plaats van de duurlimiet voor korte clips als een modelbrede claim over audiocapaciteit te beschouwen.</p><p>Het resultaat bevat het volledige transcript, een woordenlijst met betrouwbaarheid per woord en een algemene betrouwbaarheid tussen nul en één. Het geeft ook de duur van de ingediende audio en een verzoek-ID, waardoor de tekst met de oorspronkelijke clip verbonden kan blijven. Gebruik woordbetrouwbaarheid om passages te vinden die een luistercontrole verdienen, vooral namen, cijfers en domeinwoordenschat die voor de toepassing van belang zijn.</p><p>Woordtijdstempels zijn optioneel en standaard uitgeschakeld. Wanneer ze worden gevraagd, kan elk uitgelijnd woord zijn begin en einde in milliseconden ten opzichte van het begin van de clip bevatten. Het profiel van de fabrikant laat die waarden weg wanneer een woord niet kan worden uitgelijnd, in plaats van een geschatte timing te verzinnen. Tijdstempels zijn het nauwkeurigst voor Engelstalige audio. Behoud ontbrekende timings expliciet bij het voorbereiden van woordmarkering, een doorzoekbare golfvorm of ondertiteluitlijning en vergelijk de tekst met de opname voordat je die als een afgewerkt ondertitelspoor gebruikt.</p><p>Een contextuele prompt beschrijft waarover de opname gaat. Die kan een domein, scenario of specifieke details benoemen die de toepassing al kent en heeft een maximale lengte van 6.000 tekens. Begin met een korte beschrijving die bij de audio past, zoals een technisch ondersteuningsgesprek over een bepaald toestel. De prompt levert herkenningscontext; het is geen verzoek om de boodschap van de spreker naar een ander document te herschrijven.</p><p>Een afzonderlijke lijst met sleuteltermen stuurt de herkenning naar specifieke woordenschat. Het Sync-profiel aanvaardt maximaal 100 termen en 8.000 tekens voor die volledige lijst. Gebruik exacte spellingen voor ongebruikelijke namen, afkortingen of producttermen en laat gewone, goed herkende woorden uit de lijst. Grote of overbodige termenlijsten kunnen overcorrecties veroorzaken. Richt de lijst dus op woorden die in de opname van belang zijn. De contextbeschrijving en woordenlijst kunnen samen worden gebruikt.</p><p>Eerder gesprek kan ook helpen om een kort antwoord te interpreteren. Lever eerdere uitingen in chronologische volgorde aan, van oud naar nieuw, terwijl de huidige audio de te transcriberen beurt blijft. Het gedocumenteerde contextbudget is 500 beurten of in totaal 16.000 tekens. Als het die grenzen of de beschikbare modelcontext overschrijdt, worden de oudste vermeldingen eerst verwijderd. Dit is nuttig wanneer een kort antwoord een identificatie of verwijzing bevat waarvan de betekenis uit de voorafgaande vraag komt.</p><p>Taalkeuze stuurt de herkenning naar één of meerdere verwachte talen. De huidige Sync-interface aanvaardt 32 taalcodes en gebruikt standaard Engels als geen keuze is opgegeven. Som voor audio met taalwisselingen de verwachte talen op. Een eigen contextuele prompt vervangt de beheerde standaard en krijgt voorrang op de afzonderlijke sturing via taalcodes. Benoem de verwachte talen dus in die prompt wanneer zowel taal- als scenariocontext nodig is. Behoud het transcript in de werkelijk gesproken talen, in plaats van transcriptie als een vertaalinstructie te behandelen.</p><p>Het model komt ook voor in andere transcriptieworkflows van AssemblyAI, terwijl de vereisten voor korte clips en resultaatvelden van het Sync-profiel bij deze specifieke interface horen. De Dictation-workflow van de fabrikant voegt een afzonderlijke tekstopschoningsstap toe; een transcript en een herschreven bericht zijn verschillende resultaten. Behoud de herkende spraak wanneer een latere bewerkings- of samenvattingsstap een opgeschoonde versie produceert, zodat de oorspronkelijke bewoordingen voor vergelijking beschikbaar blijven.</p><p>Bruikbare opleveringen omvatten een getranscribeerd spraakbericht, een volledige beurt voor een assistent, korte doorzoekbare audiotekst of een getimede woordenlijst voor een beoordelingsinterface. Controleer de doorslaggevende woorden aan de hand van de opname, behoud ontbrekende uitlijningen en houd de clip verbonden met de teruggestuurde tekst. Het herkenningsresultaat geeft de volgende toepassingsstap een op de bron gebaseerde transcriptie; het verzoek beantwoorden of het bericht bewerken behoort tot de omringende workflow.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Beschikbaar in Ailoot · invoer en methoden</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Transcriptie</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Invoer</dt><dd><code>audio</code></dd></div><div><dt>Uitvoer</dt><dd><code>text</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Veld</th><th>Type</th><th>Vereiste</th><th>Waarden en limieten</th><th>Standaard</th></tr></thead><tbody><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</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=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span><div>assemblyai/universal-3-5-pro</div></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</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=\"Vereiste\"><span class=\"card-cell-label\">Vereiste</span>Vereist</td><td data-cell-label=\"Waarden en limieten\"><span class=\"card-cell-label\">Waarden en limieten</span></td><td data-cell-label=\"Standaard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standaard</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Methodeparameters en levenscyclus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Contract</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=\"Contract\"><span class=\"card-cell-label\">Contract</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=\"Contract\"><span class=\"card-cell-label\">Contract</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=\"Contract\"><span class=\"card-cell-label\">Contract</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=\"Contract\"><span class=\"card-cell-label\">Contract</span>Het voorbeeld leest je werkelijke, niet-lege PCM WAV-bestand, codeert alle bytes van het bestand als base64 en verstuurt input_audio.format als wav.</td></tr></tbody></table></div><p>Levenscyclus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · exacte task_id uit een bestaande mediaregistratie die je toebehoort</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\">Tarieven</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.</p><dl data-price-conditions><dt>Snelle modus</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer de snelle modus geselecteerd is</span></dd><dt>Flex-modus</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer de flex-modus geselecteerd is</span></dd><dt>Maximale redeneerinspanning</dt><dd>Niet opgegeven <span class=\"note-s\">Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-tarieven</h4><h4>Prijzen per configuratie</h4><p class=\"note-s\">Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuratie</th><th>Tariefstaffel</th><th>Rekeneenheid</th><th>Kosten</th></tr></thead><tbody><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>Basistarieven voor tokens</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>Basistarief</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>—</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Invoer · Invoertokens</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Uitvoer · Uitvoertokens</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache lezen</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache schrijven</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Invoer · Cache schrijven, 1 uur</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuratie\" scope=\"row\"><span class=\"card-cell-label\">Configuratie</span>seconde audio-invoer</th><td data-cell-label=\"Tariefstaffel\"><span class=\"card-cell-label\">Tariefstaffel</span>—</td><td data-cell-label=\"Rekeneenheid\"><span class=\"card-cell-label\">Rekeneenheid</span>per seconde audio-invoer</td><td data-cell-label=\"Kosten\"><span class=\"card-cell-label\">Kosten</span><div><span>Invoer · seconde audio-invoer</span> <b>$0.00025</b> <span class=\"price-unit\">per seconde audio-invoer</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. <a href=\"/docs/nl-be/billing/reserve/\">Zo werken reservering en afrekening →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Voorbeeldverzoeken</h3><h4>Ailoot Ultra · Transcriptie</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1073-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1073-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · daadwerkelijk WAV-bestand en volledig oorspronkelijk resultaat</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopiëren\"><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\">Resultaten ophalen en opslaan</h3><h4>Ailoot Ultra · Transcriptie</h4><p class=\"note-s\">Volledige oorspronkelijke antwoordinhoud, status en doorgestuurde headers. Deze handler voegt geen universele JSON-structuur, tekstveld of taakomhulling toe.</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Alle voltooide resultaten bewaren</h5><p class=\"note-s\">Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.</p><p class=\"note-s\">Bewaar de volledige respons en headers, iedere daadwerkelijke uitvoer, de oorspronkelijk teruggegeven identificatoren en alle verbruiksvelden. Herstel de oorspronkelijke bewerking zonder de aanmaakaanvraag opnieuw in te dienen.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Als het oorspronkelijke antwoord moet worden gecontroleerd</h5><p class=\"note-s\">Bewaar de werkelijke X-Client-Request-ID en het volledige antwoord. Raadpleeg de oorspronkelijke assets die je toebehoren en hun exacte ondertekende inhouds-URL&#39;s; dien een aanmaakaanvraag met onzekere uitkomst nooit opnieuw in.</p></div><details class=\"card-about\" data-output-fields><summary>Antwoordvelden</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Veld</th><th>Type</th></tr></thead><tbody><tr><th data-cell-label=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</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=\"Veld\" scope=\"row\"><span class=\"card-cell-label\">Veld</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>Fouten en vervolgstappen</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Antwoord</th><th>Voorwaarde</th><th>Volgende stap</th></tr></thead><tbody><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De JSON-inhoud of de expliciete canonieke model-ID is ongeldig.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Bewaar het antwoord en corrigeer het aangegeven aanvraagveld.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De Ailoot API-sleutel is ongeldig.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Gebruik je geautoriseerde Ailoot API-sleutel.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>403 · <code>permission_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De groep van de sleutel heeft geen toegang tot deze methode.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Bewaar de teruggestuurde foutdetails.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De geselecteerde methode heeft geen toegelaten route.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Bewaar de teruggestuurde foutdetails.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Voor het geaccepteerde tarief kan de vereiste invoerhoeveelheid of grenswaarde niet worden bepaald.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Bewaar het antwoord; gebruik de invoerweergave die het geaccepteerde tarief vereist.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>503 · <code></code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>De vereiste opslag, route, methodeprijs of reservering is niet beschikbaar.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Bewaar het volledige oorspronkelijke antwoord. Een onzekere reservering geeft geen toestemming om opnieuw in te dienen.</td></tr><tr><th data-cell-label=\"Antwoord\" scope=\"row\"><span class=\"card-cell-label\">Antwoord</span>502 · <code>server_error</code></th><td data-cell-label=\"Voorwaarde\"><span class=\"card-cell-label\">Voorwaarde</span>Het oorspronkelijke resultaat, het verbruik of de afrekening moet worden gecontroleerd.</td><td data-cell-label=\"Volgende stap\"><span class=\"card-cell-label\">Volgende stap</span>Bewaar de werkelijke aanvraag-ID en het oorspronkelijke antwoord. Raadpleeg de bestaande registratie die je toebehoort; dien de aanmaakaanvraag niet opnieuw in.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasnamen</h3><h4>Modelaliasnamen</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>Aliasnamen voor methodepaden</h4><p class=\"note-s\">Gebruik de hierboven getoonde methodepaden.</p><h4>Gerelateerde aanroeper-ID’s</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": "De JSON-inhoud of de expliciete canonieke model-ID is ongeldig.",
                "http_status": 400,
                "recovery": "Bewaar het antwoord en corrigeer het aangegeven aanvraagveld.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "De Ailoot API-sleutel is ongeldig.",
                "http_status": 401,
                "recovery": "Gebruik je geautoriseerde Ailoot API-sleutel.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "De groep van de sleutel heeft geen toegang tot deze methode.",
                "http_status": 403,
                "recovery": "Bewaar de teruggestuurde foutdetails.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "De geselecteerde methode heeft geen toegelaten route.",
                "http_status": 404,
                "recovery": "Bewaar de teruggestuurde foutdetails.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Voor het geaccepteerde tarief kan de vereiste invoerhoeveelheid of grenswaarde niet worden bepaald.",
                "http_status": 422,
                "recovery": "Bewaar het antwoord; gebruik de invoerweergave die het geaccepteerde tarief vereist.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "De vereiste opslag, route, methodeprijs of reservering is niet beschikbaar.",
                "http_status": 503,
                "recovery": "Bewaar het volledige oorspronkelijke antwoord. Een onzekere reservering geeft geen toestemming om opnieuw in te dienen.",
                "type": null
              },
              {
                "code": null,
                "condition": "Het oorspronkelijke resultaat, het verbruik of de afrekening moet worden gecontroleerd.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Bewaar de werkelijke aanvraag-ID en het oorspronkelijke antwoord. Raadpleeg de bestaande registratie die je toebehoort; dien de aanmaakaanvraag niet opnieuw in.",
                "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": "Bewaar de werkelijke X-Client-Request-ID en het volledige antwoord. Raadpleeg de oorspronkelijke assets die je toebehoren en hun exacte ondertekende inhouds-URL's; dien een aanmaakaanvraag met onzekere uitkomst nooit opnieuw in."
            },
            "outputs": {
              "all_results": "Bewaar de volledige respons en headers, iedere daadwerkelijke uitvoer, de oorspronkelijk teruggegeven identificatoren en alle verbruiksvelden. Herstel de oorspronkelijke bewerking zonder de aanmaakaanvraag opnieuw in te dienen.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Volledige oorspronkelijke antwoordinhoud, status en doorgestuurde headers. Deze handler voegt geen universele JSON-structuur, tekstveld of taakomhulling toe."
            },
            "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": [
              "Het voorbeeld leest je werkelijke, niet-lege PCM WAV-bestand, codeert alle bytes van het bestand als base64 en verstuurt input_audio.format als wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "exacte task_id uit een bestaande mediaregistratie die je toebehoort",
                "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": "Transcriptie",
        "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": "64ead22bc8f5854f86229685f9459c3a1b3bf9424d2a284029624b34ae24f6d9",
    "input_html_sha256": "6549e8ebe213c5c93e0af96340b1c14c81d8fed92b21c46b3caebcec290b4a63",
    "private_audit_sha256": "0cfa02d332756bb181abbb7240b2686383bce97c8ee1d969385286ce3da07676",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/nl-be/assemblyai-universal-3-5-pro/",
    "description": "Universal-3.5 Pro is het spraak-naar-tekstmodel van AssemblyAI dat een korte audioclip in één antwoord omzet in een volledig transcript. Het Sync-profiel voegt woordbetrouwbaarheid, optionele woordtijdstempels, woordenschathints en context uit eerdere gesprekken toe voor spraakinvoer en push-to-talk-workflows.",
    "locale": "nl-be",
    "md_url": "https://ailoot.ai/models/nl-be/assemblyai-universal-3-5-pro/index.md",
    "title": "AssemblyAI: Universal-3.5 Pro — Ailoot",
    "url": "https://ailoot.ai/models/nl-be/assemblyai-universal-3-5-pro/"
  },
  "rawModel": {
    "about": "Universal-3.5 Pro is het spraakherkenningsmodel van AssemblyAI voor het omzetten van opgenomen spraak in tekst. In het Sync-profiel levert een korte audioclip in één antwoord een volledig transcript op. Dit is geschikt voor spraakberichten, push-to-talk-invoer en afzonderlijke gespreksbeurten waarbij de toepassing al weet wanneer de opname moet eindigen.\n\nBereid de audio als een afgebakende clip voor. De Sync-vereisten van AssemblyAI aanvaarden een duur van 80 milliseconden tot 120 seconden, met een maximale bestandsgrootte van 40 MB. De ondersteunde formaten zijn WAV of ruwe signed 16-bit little-endian PCM. Audio kan mono of stereo zijn, waarbij stereo intern wordt teruggemengd. Ondersteunde samplefrequenties zijn 8, 16, 22,05, 24, 32, 44,1 en 48 kHz. Een WAV-header levert de samplefrequentie en het aantal kanalen; bij ruwe PCM moeten die waarden afzonderlijk in de transcriptieconfiguratie worden opgegeven.\n\nNeem de volledige uiting op en houd het begin en einde van de spraak intact. Een bruikbare eigen taak is een kort spraakbericht voor productondersteuning met een productnaam, een bestel-ID en een verzoek. Bewaar de bronclip, zodat het transcript aan die belangrijke details kan worden getoetst. Bereid voor een langere opname een workflow voor die geschikt is voor lange transcriptie, in plaats van de duurlimiet voor korte clips als een modelbrede claim over audiocapaciteit te beschouwen.\n\nHet resultaat bevat het volledige transcript, een woordenlijst met betrouwbaarheid per woord en een algemene betrouwbaarheid tussen nul en één. Het geeft ook de duur van de ingediende audio en een verzoek-ID, waardoor de tekst met de oorspronkelijke clip verbonden kan blijven. Gebruik woordbetrouwbaarheid om passages te vinden die een luistercontrole verdienen, vooral namen, cijfers en domeinwoordenschat die voor de toepassing van belang zijn.\n\nWoordtijdstempels zijn optioneel en standaard uitgeschakeld. Wanneer ze worden gevraagd, kan elk uitgelijnd woord zijn begin en einde in milliseconden ten opzichte van het begin van de clip bevatten. Het profiel van de fabrikant laat die waarden weg wanneer een woord niet kan worden uitgelijnd, in plaats van een geschatte timing te verzinnen. Tijdstempels zijn het nauwkeurigst voor Engelstalige audio. Behoud ontbrekende timings expliciet bij het voorbereiden van woordmarkering, een doorzoekbare golfvorm of ondertiteluitlijning en vergelijk de tekst met de opname voordat je die als een afgewerkt ondertitelspoor gebruikt.\n\nEen contextuele prompt beschrijft waarover de opname gaat. Die kan een domein, scenario of specifieke details benoemen die de toepassing al kent en heeft een maximale lengte van 6.000 tekens. Begin met een korte beschrijving die bij de audio past, zoals een technisch ondersteuningsgesprek over een bepaald toestel. De prompt levert herkenningscontext; het is geen verzoek om de boodschap van de spreker naar een ander document te herschrijven.\n\nEen afzonderlijke lijst met sleuteltermen stuurt de herkenning naar specifieke woordenschat. Het Sync-profiel aanvaardt maximaal 100 termen en 8.000 tekens voor die volledige lijst. Gebruik exacte spellingen voor ongebruikelijke namen, afkortingen of producttermen en laat gewone, goed herkende woorden uit de lijst. Grote of overbodige termenlijsten kunnen overcorrecties veroorzaken. Richt de lijst dus op woorden die in de opname van belang zijn. De contextbeschrijving en woordenlijst kunnen samen worden gebruikt.\n\nEerder gesprek kan ook helpen om een kort antwoord te interpreteren. Lever eerdere uitingen in chronologische volgorde aan, van oud naar nieuw, terwijl de huidige audio de te transcriberen beurt blijft. Het gedocumenteerde contextbudget is 500 beurten of in totaal 16.000 tekens. Als het die grenzen of de beschikbare modelcontext overschrijdt, worden de oudste vermeldingen eerst verwijderd. Dit is nuttig wanneer een kort antwoord een identificatie of verwijzing bevat waarvan de betekenis uit de voorafgaande vraag komt.\n\nTaalkeuze stuurt de herkenning naar één of meerdere verwachte talen. De huidige Sync-interface aanvaardt 32 taalcodes en gebruikt standaard Engels als geen keuze is opgegeven. Som voor audio met taalwisselingen de verwachte talen op. Een eigen contextuele prompt vervangt de beheerde standaard en krijgt voorrang op de afzonderlijke sturing via taalcodes. Benoem de verwachte talen dus in die prompt wanneer zowel taal- als scenariocontext nodig is. Behoud het transcript in de werkelijk gesproken talen, in plaats van transcriptie als een vertaalinstructie te behandelen.\n\nHet model komt ook voor in andere transcriptieworkflows van AssemblyAI, terwijl de vereisten voor korte clips en resultaatvelden van het Sync-profiel bij deze specifieke interface horen. De Dictation-workflow van de fabrikant voegt een afzonderlijke tekstopschoningsstap toe; een transcript en een herschreven bericht zijn verschillende resultaten. Behoud de herkende spraak wanneer een latere bewerkings- of samenvattingsstap een opgeschoonde versie produceert, zodat de oorspronkelijke bewoordingen voor vergelijking beschikbaar blijven.\n\nBruikbare opleveringen omvatten een getranscribeerd spraakbericht, een volledige beurt voor een assistent, korte doorzoekbare audiotekst of een getimede woordenlijst voor een beoordelingsinterface. Controleer de doorslaggevende woorden aan de hand van de opname, behoud ontbrekende uitlijningen en houd de clip verbonden met de teruggestuurde tekst. Het herkenningsresultaat geeft de volgende toepassingsstap een op de bron gebaseerde transcriptie; het verzoek beantwoorden of het bericht bewerken behoort tot de omringende workflow.",
    "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 volledige prijsinformatie voor de configuratie vindt u bij de details."
      }
    ],
    "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": "De JSON-inhoud of de expliciete canonieke model-ID is ongeldig.",
                "http_status": 400,
                "recovery": "Bewaar het antwoord en corrigeer het aangegeven aanvraagveld.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "De Ailoot API-sleutel is ongeldig.",
                "http_status": 401,
                "recovery": "Gebruik je geautoriseerde Ailoot API-sleutel.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "De groep van de sleutel heeft geen toegang tot deze methode.",
                "http_status": 403,
                "recovery": "Bewaar de teruggestuurde foutdetails.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "De geselecteerde methode heeft geen toegelaten route.",
                "http_status": 404,
                "recovery": "Bewaar de teruggestuurde foutdetails.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Voor het geaccepteerde tarief kan de vereiste invoerhoeveelheid of grenswaarde niet worden bepaald.",
                "http_status": 422,
                "recovery": "Bewaar het antwoord; gebruik de invoerweergave die het geaccepteerde tarief vereist.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "De vereiste opslag, route, methodeprijs of reservering is niet beschikbaar.",
                "http_status": 503,
                "recovery": "Bewaar het volledige oorspronkelijke antwoord. Een onzekere reservering geeft geen toestemming om opnieuw in te dienen.",
                "type": null
              },
              {
                "code": null,
                "condition": "Het oorspronkelijke resultaat, het verbruik of de afrekening moet worden gecontroleerd.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Bewaar de werkelijke aanvraag-ID en het oorspronkelijke antwoord. Raadpleeg de bestaande registratie die je toebehoort; dien de aanmaakaanvraag niet opnieuw in.",
                "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": "Bewaar de werkelijke X-Client-Request-ID en het volledige antwoord. Raadpleeg de oorspronkelijke assets die je toebehoren en hun exacte ondertekende inhouds-URL's; dien een aanmaakaanvraag met onzekere uitkomst nooit opnieuw in."
            },
            "outputs": {
              "all_results": "Bewaar de volledige respons en headers, iedere daadwerkelijke uitvoer, de oorspronkelijk teruggegeven identificatoren en alle verbruiksvelden. Herstel de oorspronkelijke bewerking zonder de aanmaakaanvraag opnieuw in te dienen.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Volledige oorspronkelijke antwoordinhoud, status en doorgestuurde headers. Deze handler voegt geen universele JSON-structuur, tekstveld of taakomhulling toe."
            },
            "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": [
              "Het voorbeeld leest je werkelijke, niet-lege PCM WAV-bestand, codeert alle bytes van het bestand als base64 en verstuurt input_audio.format als wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "exacte task_id uit een bestaande mediaregistratie die je toebehoort",
                "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": "Transcriptie",
        "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 is het spraak-naar-tekstmodel van AssemblyAI dat een korte audioclip in één antwoord omzet in een volledig transcript. Het Sync-profiel voegt woordbetrouwbaarheid, optionele woordtijdstempels, woordenschathints en context uit eerdere gesprekken toe voor spraakinvoer en push-to-talk-workflows."
  },
  "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 is het spraak-naar-tekstmodel van AssemblyAI dat een korte audioclip in één antwoord omzet in een volledig transcript. Het Sync-profiel voegt woordbetrouwbaarheid, optionele woordtijdstempels, woordenschathints en context uit eerdere gesprekken toe voor spraakinvoer en push-to-talk-workflows.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "7b71f9341cbb30717350036a1096a32905c060436e8e2b39b0b62ec64351c196",
    "renderer_sha256": "a5aefc67f30427b283b8d8bf7955908a0216c6e5e4ca3cc1887842431e2b1ee6"
  },
  "sourceRevision": "fb9851d945c4d8de5e03304053348f2542fecf6bb02472e6459866b5c42d4172"
}
