{
  "aboutHtml": "<p>Flux TTS er Deepgrams tekst-til-tale-familie til samtaler i realtid og fast talt indhold. Dens afgørende egenskab er samtalekontinuitet: streamingmodellen viderefører prosodien mellem taleture, så fremførelsen kan beholde en ensartet tone, mens interaktionen fortsætter. Den accepterer skriftlig tekst og returnerer talelyd. Flux TTS og den særskilt navngivne Flux-talegenkendelsesmodel udfører forskellige dele af en stemmesamtale.</p><h4>Vælg en engelsk stemme</h4><p>Det dokumenterede Flux-katalog taler engelsk med amerikansk, britisk, irsk, australsk, indisk, singaporeansk og filippinsk accent. Stemmebeskrivelser hjælper med at vælge en taler til kundeservice, telefonmenuer, oplæsning eller uformelle samtaler. Producenten angiver eksempelvis Haley som en rolig amerikansk stemme og Jack som en professionel britisk stemme. Vælg stemmen efter publikum og den type ordlyd, den skal læse, og behold den gennem stykket eller samtalen. Tale på andre sprog hører til et særskilt dokumenteret modelvalg.</p><h4>Taleture i realtid og afbrydelser</h4><p>I producentens streamingforløb kan tekst ankomme, mens applikationen udformer et svar, og lyd returneres gradvist. En taletur har sine egne start- og afslutningshændelser; afslutning af turen færdiggør den resterende syntese. Kontekst på tværs af taleture bevarer prosodien inden for sessionen. Dette er nyttigt til en talt assistent, der først forklarer et valg og derefter besvarer et uddybende spørgsmål uden at ændre stemmens karakter.</p><p>En afbrydelse annullerer den aktive taletur og returnerer den allerede talte del og den resterende tekst. Denne skelnen hjælper applikationen med at fortsætte fra det, lytteren faktisk hørte. Til en praktisk interaktion forberedes et kort svar med den vigtige instruktion først og derefter forklaringen. Hvis lytteren afbryder efter den første instruktion, kan det næste svar forholde sig til det nye spørgsmål frem for at antage, at hele forklaringen blev leveret.</p><h4>Fast lyd og outputformater</h4><p>Batchsyntese modtager en fuld tekstblok og returnerer dens lyd i ét svar. Den bruger samme stemmekatalog som streaming og passer til indtalte telefonbeskeder, notifikationer eller oplæsning forberedt på forhånd. Batchforespørgsler er uafhængige; streamingens tilstand for taleture og afbrydelseshændelser gælder ikke for et fast klip.</p><p>Streamingoutputtet er rå lyd uden en filcontainer: 16-bit PCM, mu-law eller A-law. Producenten dokumenterer PCM-samplefrekvenser på 8, 16, 24, 32, 44.1 og 48 kHz; mu-law og A-law bruger 8 eller 16 kHz. Batchoutput understøtter desuden MP3, Opus, FLAC og AAC. Vælg en kodning og container, som den tilsigtede afspiller eller telefoniforbindelse kan fortolke, frem for at behandle en strøm af rå samples som en almindelig lydfil.</p><h4>Indstillinger for fremførelse og grænser</h4><p>Producenten dokumenterer et talehastighedsinterval fra 0.5 til 1.5 i trin på 0.05. Hastighedsændringer ved streaming anvendes ved en segmentgrænse. En separat betaindstilling for udtryksfuldhed bevæger fremførelsen fra rolig til livlig. Almindelig SSML og genkendte tags fra konkurrenter fjernes frem for at blive brugt som udtryksinstruktioner; de indbyggede Flux-indstillinger har deres egen betydning.</p><p>Indlejrede pauser hører til batchsyntese med varigheder på 500–3.000 ms i trin på 100 ms og højst otte markører pr. forespørgsel. Der skal være tekst mellem tilstødende pauser, og hastigheden begrænses til 1.15, når en pause er til stede. Udtaleoverstyringer bruger IPA og er i Early Access; producenten bemærker, at en ønsket udtale kan variere fra generering til generering. Udtale kan ikke kombineres med en hastighed, der afviger fra standarden, eller med pauseindstillinger. Til et manuskript med særlige fagnavne lyttes til disse termer med den valgte stemme, og den talte ordlyd holdes udtrykkelig.</p><p>Deepgrams dokumenterede streamingsession varer op til én time og lukkes efter tres sekunder uden en indgående meddelelse, medmindre den holdes aktiv via den understøttede forbindelsesmekanisme. Disse sessionsgrænser vedrører forløbet til syntese i realtid. En nyttig leverance er et bevidst stemmevalg, lyttervenlig tekst og lyd tilpasset anvendelsesstedet, hvor applikationer i realtid registrerer, hvad der faktisk blev sagt, når en taletur afbrydes.</p>",
  "aboutText": "Flux TTS er Deepgrams tekst-til-tale-familie til samtaler i realtid og fast talt indhold. Dens afgørende egenskab er samtalekontinuitet: streamingmodellen viderefører prosodien mellem taleture, så fremførelsen kan beholde en ensartet tone, mens interaktionen fortsætter. Den accepterer skriftlig tekst og returnerer talelyd. Flux TTS og den særskilt navngivne Flux-talegenkendelsesmodel udfører forskellige dele af en stemmesamtale.\n\n### Vælg en engelsk stemme\n\nDet dokumenterede Flux-katalog taler engelsk med amerikansk, britisk, irsk, australsk, indisk, singaporeansk og filippinsk accent. Stemmebeskrivelser hjælper med at vælge en taler til kundeservice, telefonmenuer, oplæsning eller uformelle samtaler. Producenten angiver eksempelvis Haley som en rolig amerikansk stemme og Jack som en professionel britisk stemme. Vælg stemmen efter publikum og den type ordlyd, den skal læse, og behold den gennem stykket eller samtalen. Tale på andre sprog hører til et særskilt dokumenteret modelvalg.\n\n### Taleture i realtid og afbrydelser\n\nI producentens streamingforløb kan tekst ankomme, mens applikationen udformer et svar, og lyd returneres gradvist. En taletur har sine egne start- og afslutningshændelser; afslutning af turen færdiggør den resterende syntese. Kontekst på tværs af taleture bevarer prosodien inden for sessionen. Dette er nyttigt til en talt assistent, der først forklarer et valg og derefter besvarer et uddybende spørgsmål uden at ændre stemmens karakter.\n\nEn afbrydelse annullerer den aktive taletur og returnerer den allerede talte del og den resterende tekst. Denne skelnen hjælper applikationen med at fortsætte fra det, lytteren faktisk hørte. Til en praktisk interaktion forberedes et kort svar med den vigtige instruktion først og derefter forklaringen. Hvis lytteren afbryder efter den første instruktion, kan det næste svar forholde sig til det nye spørgsmål frem for at antage, at hele forklaringen blev leveret.\n\n### Fast lyd og outputformater\n\nBatchsyntese modtager en fuld tekstblok og returnerer dens lyd i ét svar. Den bruger samme stemmekatalog som streaming og passer til indtalte telefonbeskeder, notifikationer eller oplæsning forberedt på forhånd. Batchforespørgsler er uafhængige; streamingens tilstand for taleture og afbrydelseshændelser gælder ikke for et fast klip.\n\nStreamingoutputtet er rå lyd uden en filcontainer: 16-bit PCM, mu-law eller A-law. Producenten dokumenterer PCM-samplefrekvenser på 8, 16, 24, 32, 44.1 og 48 kHz; mu-law og A-law bruger 8 eller 16 kHz. Batchoutput understøtter desuden MP3, Opus, FLAC og AAC. Vælg en kodning og container, som den tilsigtede afspiller eller telefoniforbindelse kan fortolke, frem for at behandle en strøm af rå samples som en almindelig lydfil.\n\n### Indstillinger for fremførelse og grænser\n\nProducenten dokumenterer et talehastighedsinterval fra 0.5 til 1.5 i trin på 0.05. Hastighedsændringer ved streaming anvendes ved en segmentgrænse. En separat betaindstilling for udtryksfuldhed bevæger fremførelsen fra rolig til livlig. Almindelig SSML og genkendte tags fra konkurrenter fjernes frem for at blive brugt som udtryksinstruktioner; de indbyggede Flux-indstillinger har deres egen betydning.\n\nIndlejrede pauser hører til batchsyntese med varigheder på 500–3.000 ms i trin på 100 ms og højst otte markører pr. forespørgsel. Der skal være tekst mellem tilstødende pauser, og hastigheden begrænses til 1.15, når en pause er til stede. Udtaleoverstyringer bruger IPA og er i Early Access; producenten bemærker, at en ønsket udtale kan variere fra generering til generering. Udtale kan ikke kombineres med en hastighed, der afviger fra standarden, eller med pauseindstillinger. Til et manuskript med særlige fagnavne lyttes til disse termer med den valgte stemme, og den talte ordlyd holdes udtrykkelig.\n\nDeepgrams dokumenterede streamingsession varer op til én time og lukkes efter tres sekunder uden en indgående meddelelse, medmindre den holdes aktiv via den understøttede forbindelsesmekanisme. Disse sessionsgrænser vedrører forløbet til syntese i realtid. En nyttig leverance er et bevidst stemmevalg, lyttervenlig tekst og lyd tilpasset anvendelsesstedet, hvor applikationer i realtid registrerer, hvad der faktisk blev sagt, når en taletur afbrydes.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "9502e78720bc0766df3bf2cb3c0deec5ae099dd470ec5d41a12e20a9f1ab9ce7",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "da",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Deepgram: Flux TTS</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Luk\">×</button></div><div class=\"idline\"><span>Deepgram /</span><code>deepgram/flux-tts</code><button type=\"button\" id=\"copy-id\">Kopiér ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Modelkortets afsnit\"><button type=\"button\" data-card-jump=\"overview\">Start</button><button type=\"button\" data-card-jump=\"methods\">Input og metoder</button><button type=\"button\" data-card-jump=\"pricing\">Priser</button><button type=\"button\" data-card-jump=\"examples\">Eksempler</button><button type=\"button\" data-card-jump=\"results\">Resultater</button><button type=\"button\" data-card-jump=\"aliases\">Aliaser</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-metoder\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|speech|/v1/audio/speech|deepgram%2Fflux-tts\">Oplæsning</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Start</h3><p class=\"mdesc-full\">Deepgram Flux TTS omdanner engelsk tekst til samtaletale med tone bevaret på tværs af taleture. Streamingtilstanden håndterer afbrydelser; batchsyntese producerer genanvendelig lyd med det samme stemmekatalog.</p><dl class=\"card-io\" data-card-io><div><dt>Accepterede input</dt><dd>Tekst</dd></div><div><dt>Resultater</dt><dd>Lyd</dd></div></dl><details class=\"card-about\"><summary>Om modellen</summary><p class=\"note-s\" data-model-method-boundary>Denne beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.</p><div class=\"mabout\" id=\"m-about\"><p>Flux TTS er Deepgrams tekst-til-tale-familie til samtaler i realtid og fast talt indhold. Dens afgørende egenskab er samtalekontinuitet: streamingmodellen viderefører prosodien mellem taleture, så fremførelsen kan beholde en ensartet tone, mens interaktionen fortsætter. Den accepterer skriftlig tekst og returnerer talelyd. Flux TTS og den særskilt navngivne Flux-talegenkendelsesmodel udfører forskellige dele af en stemmesamtale.</p><h4>Vælg en engelsk stemme</h4><p>Det dokumenterede Flux-katalog taler engelsk med amerikansk, britisk, irsk, australsk, indisk, singaporeansk og filippinsk accent. Stemmebeskrivelser hjælper med at vælge en taler til kundeservice, telefonmenuer, oplæsning eller uformelle samtaler. Producenten angiver eksempelvis Haley som en rolig amerikansk stemme og Jack som en professionel britisk stemme. Vælg stemmen efter publikum og den type ordlyd, den skal læse, og behold den gennem stykket eller samtalen. Tale på andre sprog hører til et særskilt dokumenteret modelvalg.</p><h4>Taleture i realtid og afbrydelser</h4><p>I producentens streamingforløb kan tekst ankomme, mens applikationen udformer et svar, og lyd returneres gradvist. En taletur har sine egne start- og afslutningshændelser; afslutning af turen færdiggør den resterende syntese. Kontekst på tværs af taleture bevarer prosodien inden for sessionen. Dette er nyttigt til en talt assistent, der først forklarer et valg og derefter besvarer et uddybende spørgsmål uden at ændre stemmens karakter.</p><p>En afbrydelse annullerer den aktive taletur og returnerer den allerede talte del og den resterende tekst. Denne skelnen hjælper applikationen med at fortsætte fra det, lytteren faktisk hørte. Til en praktisk interaktion forberedes et kort svar med den vigtige instruktion først og derefter forklaringen. Hvis lytteren afbryder efter den første instruktion, kan det næste svar forholde sig til det nye spørgsmål frem for at antage, at hele forklaringen blev leveret.</p><h4>Fast lyd og outputformater</h4><p>Batchsyntese modtager en fuld tekstblok og returnerer dens lyd i ét svar. Den bruger samme stemmekatalog som streaming og passer til indtalte telefonbeskeder, notifikationer eller oplæsning forberedt på forhånd. Batchforespørgsler er uafhængige; streamingens tilstand for taleture og afbrydelseshændelser gælder ikke for et fast klip.</p><p>Streamingoutputtet er rå lyd uden en filcontainer: 16-bit PCM, mu-law eller A-law. Producenten dokumenterer PCM-samplefrekvenser på 8, 16, 24, 32, 44.1 og 48 kHz; mu-law og A-law bruger 8 eller 16 kHz. Batchoutput understøtter desuden MP3, Opus, FLAC og AAC. Vælg en kodning og container, som den tilsigtede afspiller eller telefoniforbindelse kan fortolke, frem for at behandle en strøm af rå samples som en almindelig lydfil.</p><h4>Indstillinger for fremførelse og grænser</h4><p>Producenten dokumenterer et talehastighedsinterval fra 0.5 til 1.5 i trin på 0.05. Hastighedsændringer ved streaming anvendes ved en segmentgrænse. En separat betaindstilling for udtryksfuldhed bevæger fremførelsen fra rolig til livlig. Almindelig SSML og genkendte tags fra konkurrenter fjernes frem for at blive brugt som udtryksinstruktioner; de indbyggede Flux-indstillinger har deres egen betydning.</p><p>Indlejrede pauser hører til batchsyntese med varigheder på 500–3.000 ms i trin på 100 ms og højst otte markører pr. forespørgsel. Der skal være tekst mellem tilstødende pauser, og hastigheden begrænses til 1.15, når en pause er til stede. Udtaleoverstyringer bruger IPA og er i Early Access; producenten bemærker, at en ønsket udtale kan variere fra generering til generering. Udtale kan ikke kombineres med en hastighed, der afviger fra standarden, eller med pauseindstillinger. Til et manuskript med særlige fagnavne lyttes til disse termer med den valgte stemme, og den talte ordlyd holdes udtrykkelig.</p><p>Deepgrams dokumenterede streamingsession varer op til én time og lukkes efter tres sekunder uden en indgående meddelelse, medmindre den holdes aktiv via den understøttede forbindelsesmekanisme. Disse sessionsgrænser vedrører forløbet til syntese i realtid. En nyttig leverance er et bevidst stemmevalg, lyttervenlig tekst og lyd tilpasset anvendelsesstedet, hvor applikationer i realtid registrerer, hvad der faktisk blev sagt, når en taletur afbrydes.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tilgængelig i Ailoot · input og metoder</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Oplæsning</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Inputtyper</dt><dd><code>text</code></dd></div><div><dt>Outputtyper</dt><dd><code>audio</code></dd></div><div><dt>Outputformat</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Felt</th><th>Type</th><th>Krav</th><th>Værdier og grænser</th><th>Standard</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>deepgram/flux-tts</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>Minimumslængde: 1</div><div>Enhed: Unicode-tegn</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>flux-alexis-en, flux-bree-en, flux-brittany-en, flux-brooke-en, flux-bruce-en, flux-cliff-en, flux-cole-en, flux-colin-en, flux-conor-en, flux-donovan-en, flux-drew-en, flux-elise-en, flux-gemma-en, flux-haley-en, flux-hannah-en, flux-heather-en, flux-jack-en, flux-kai-en, flux-kelsey-en, flux-kit-en, flux-maeve-en, flux-marcelo-en, flux-marcus-en, flux-meena-en, flux-meghan-en, flux-miles-en, flux-naveen-en, flux-paige-en, flux-priya-en, flux-rufus-en, flux-sean-en, flux-sharon-en, flux-sienna-en, flux-tanner-en, flux-wade-en, flux-wes-en</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Krav\"><span class=\"card-cell-label\">Krav</span>Påkrævet</td><td data-cell-label=\"Værdier og grænser\"><span class=\"card-cell-label\">Værdier og grænser</span><div>mp3</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinationer af inputmaterialer</summary><p class=\"note-s\"><b>text_to_speech</b> · Påkrævet: input</p></details><details class=\"note-s\" data-method-contract><summary>Metodeparametre og livscyklus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrakt</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>model, input, voice, response_format</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>voice_ids</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>flux-alexis-en, flux-bree-en, flux-brittany-en, flux-brooke-en, flux-bruce-en, flux-cliff-en, flux-cole-en, flux-colin-en, flux-conor-en, flux-donovan-en, flux-drew-en, flux-elise-en, flux-gemma-en, flux-haley-en, flux-hannah-en, flux-heather-en, flux-jack-en, flux-kai-en, flux-kelsey-en, flux-kit-en, flux-maeve-en, flux-marcelo-en, flux-marcus-en, flux-meena-en, flux-meghan-en, flux-miles-en, flux-naveen-en, flux-paige-en, flux-priya-en, flux-rufus-en, flux-sean-en, flux-sharon-en, flux-sienna-en, flux-tanner-en, flux-wade-en, flux-wes-en</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>response_format</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>mp3</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>max_input_characters</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>other_options</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>false</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>input</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>præcis UTF-8-tekst; antal Unicode-tegn uden normalisering</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Kontrakt\"><span class=\"card-cell-label\">Kontrakt</span>text</td></tr></tbody></table></div><p>Livscyklus: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · det faktisk returnerede task_id eller posten i mediebiblioteket</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><p class=\"note-s\">Vælg den præcise stemme fra denne modelprofil.</p><p class=\"note-s\">Inputtegn og lydsekunder er forskellige måleenheder.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Priser</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.</p><dl data-price-conditions><dt>Hurtig tilstand</dt><dd>Ikke angivet <span class=\"note-s\">Når hurtig tilstand er valgt</span></dd><dt>flex-tilstand</dt><dd>Ikke angivet <span class=\"note-s\">Når flex-tilstanden er valgt</span></dd><dt>Maksimal ræsonneringsindsats</dt><dd>Ikke angivet <span class=\"note-s\">Når default-justeringen anvendes ved maksimal ræsonneringsindsats</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-takster</h4><h4>Priser efter konfiguration</h4><p class=\"note-s\">Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Takstplan</th><th>Afregningsenhed</th><th>Beløb</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Grundpriser for tokens</th><td data-cell-label=\"Takstplan\"><span class=\"card-cell-label\">Takstplan</span>Grundtakst</td><td data-cell-label=\"Afregningsenhed\"><span class=\"card-cell-label\">Afregningsenhed</span>—</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Input · Inputtokens</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Output · Outputtokens</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Input · Cachelæsning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Input · Cacheskrivning</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Input · Cacheskrivning, 1 time</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>inputtegn</th><td data-cell-label=\"Takstplan\"><span class=\"card-cell-label\">Takstplan</span>—</td><td data-cell-label=\"Afregningsenhed\"><span class=\"card-cell-label\">Afregningsenhed</span>pr. inputtegn</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Input · inputtegn</span> <b>$0.00009</b> <span class=\"price-unit\">pr. inputtegn</span></div></td></tr></tbody></table></div></div><div data-declared-reference-pricing><h4>Detaljer om referencetariffen</h4><p class=\"note-s\">Referenceplaner på modelniveau ændrer ikke metodevalg, prisoverslag eller opkrævninger. Ved den aktive afregning anvendes taksterne for den valgte Ailoot-metode.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Deepgram: Flux TTS</summary><h4>Priser efter konfiguration</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Afregningsbetingelser</th><th>Beløb</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Deepgram: Flux TTS · Standardkonfiguration</th><td data-cell-label=\"Afregningsbetingelser\"><span class=\"card-cell-label\">Afregningsbetingelser</span>Standardkonfiguration</td><td data-cell-label=\"Beløb\"><span class=\"card-cell-label\">Beløb</span><div><span>Input · Inputtegn</span> <b>0,00009 US$</b> <span class=\"price-unit\">pr. inputtegn</span></div></td></tr></tbody></table></div></details></div><p class=\"note-s\">Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. <a href=\"/docs/da/billing/reserve/\">Sådan fungerer reservation og afregning →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Eksempelanmodninger</h3><h4>Ailoot Ultra · Oplæsning</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodevarianter\"><button class=\"cg-tab\" id=\"model-code-1198-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1198-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiér kode\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1198-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1198-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}&quot;\nexport AILOOT_VOICE_ID\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;deepgram/flux-tts&quot;, &quot;input&quot;: &quot;Good afternoon! This is a short voice take.&quot;}&#39;)\nvoice=os.environ[&quot;AILOOT_VOICE_ID&quot;]\nallowed=json.loads(&#39;[&quot;flux-alexis-en&quot;, &quot;flux-bree-en&quot;, &quot;flux-brittany-en&quot;, &quot;flux-brooke-en&quot;, &quot;flux-bruce-en&quot;, &quot;flux-cliff-en&quot;, &quot;flux-cole-en&quot;, &quot;flux-colin-en&quot;, &quot;flux-conor-en&quot;, &quot;flux-donovan-en&quot;, &quot;flux-drew-en&quot;, &quot;flux-elise-en&quot;, &quot;flux-gemma-en&quot;, &quot;flux-haley-en&quot;, &quot;flux-hannah-en&quot;, &quot;flux-heather-en&quot;, &quot;flux-jack-en&quot;, &quot;flux-kai-en&quot;, &quot;flux-kelsey-en&quot;, &quot;flux-kit-en&quot;, &quot;flux-maeve-en&quot;, &quot;flux-marcelo-en&quot;, &quot;flux-marcus-en&quot;, &quot;flux-meena-en&quot;, &quot;flux-meghan-en&quot;, &quot;flux-miles-en&quot;, &quot;flux-naveen-en&quot;, &quot;flux-paige-en&quot;, &quot;flux-priya-en&quot;, &quot;flux-rufus-en&quot;, &quot;flux-sean-en&quot;, &quot;flux-sharon-en&quot;, &quot;flux-sienna-en&quot;, &quot;flux-tanner-en&quot;, &quot;flux-wade-en&quot;, &quot;flux-wes-en&quot;]&#39;)\nif voice not in allowed: raise SystemExit(&quot;Choose an accepted voice ID from this exact model profile&quot;)\np[&quot;voice&quot;]=voice\np[&quot;response_format&quot;]=&quot;mp3&quot;\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\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 speech.mp3\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Hent og gem resultater</h3><h4>Ailoot Ultra · Oplæsning</h4><p class=\"note-s\">mp3</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><details class=\"card-about\"><summary>Læsning af andet indhold</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Kodevarianter\"><button class=\"cg-tab\" id=\"model-code-1199-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1199-panel-0\" aria-selected=\"true\" tabindex=\"0\">Mediebibliotek</button><button class=\"cg-tab\" id=\"model-code-1199-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1199-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Opgavestatus</button><button class=\"cg-tab\" id=\"model-code-1199-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1199-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Fildetaljer</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiér kode\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1199-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1199-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-assets.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1199-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1199-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_MEDIA_TASK_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/tasks/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-task.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-task.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1199-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1199-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_ASSET_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/assets/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-asset.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-asset.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Behold alle færdige resultater</h5><p class=\"note-s\">Gem hvert fuldstændigt returneret svar, hver fil og hver indholdsdel.</p><p class=\"note-s\">Gem hele det binære resultat og alle headere. Hvis der returneres JSON eller flere output, skal du gemme hvert dataelement og hente alle de faktiske signerede asset-URL&#39;er.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Hvis det oprindelige svar skal kontrolleres</h5><p class=\"note-s\">Gem det oprindelige operation_id/X-Client-Request-ID til afstemning uden genindsendelse; der er ingen særskilt rute til polling af lyd.</p></div><details class=\"card-about\" data-output-fields><summary>Svarfelter</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Felt</th><th>Type</th></tr></thead><tbody><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>bytes</td></tr><tr><th data-cell-label=\"Felt\" scope=\"row\"><span class=\"card-cell-label\">Felt</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Fejl og næste trin</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Svar</th><th>Betingelse</th><th>Næste trin</th></tr></thead><tbody><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Ugyldige obligatoriske felter, materialerepræsentation eller parameterværdi</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Ret de angivne felter før en ny oprettelsesanmodning.</td></tr><tr><th data-cell-label=\"Svar\" scope=\"row\"><span class=\"card-cell-label\">Svar</span><code>server_error</code></th><td data-cell-label=\"Betingelse\"><span class=\"card-cell-label\">Betingelse</span>Det returnerede svar angiver, at operationen eller resultatet skal kontrolleres</td><td data-cell-label=\"Næste trin\"><span class=\"card-cell-label\">Næste trin</span>Gem det oprindeligt returnerede operations-/opgave-ID, anmodningens headere og svaret; fortsæt med de understøttede læseanmodninger for den oprindelige operation. Send ikke oprettelsesanmodningen igen.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliaser</h3><h4>Modelaliaser</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=deepgram%2Fflux-tts&amp;route=Ultra&amp;caller=deepgram%2Fflux-tts&amp;fmt=speech\"><code>deepgram/flux-tts</code></a></span></p><h4>Aliaser for metodestier</h4><p class=\"note-s\">Brug metodestierne vist ovenfor.</p><h4>Relaterede kalder-ID’er</h4><p class=\"note-s\"><a href=\"#m=deepgram%2Fflux-tts&amp;route=Ultra&amp;caller=deepgram%2Fflux-tts&amp;fmt=speech\"><code>deepgram/flux-tts</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "deepgram/flux-tts",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "deepgram/flux-tts",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|deepgram%2Fflux-tts",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Ugyldige obligatoriske felter, materialerepræsentation eller parameterværdi",
                "http_status": 400,
                "recovery": "Ret de angivne felter før en ny oprettelsesanmodning.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Det returnerede svar angiver, at operationen eller resultatet skal kontrolleres",
                "http_status": null,
                "recovery": "Gem det oprindeligt returnerede operations-/opgave-ID, anmodningens headere og svaret; fortsæt med de understøttede læseanmodninger for den oprindelige operation. Send ikke oprettelsesanmodningen igen.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "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 URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Gem det oprindelige operation_id/X-Client-Request-ID til afstemning uden genindsendelse; der er ingen særskilt rute til polling af lyd."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Gem hele det binære resultat og alle headere. Hvis der returneres JSON eller flere output, skal du gemme hvert dataelement og hente alle de faktiske signerede asset-URL'er.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "deepgram/flux-tts"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": false,
                "maximum_length": null,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "Unicode-tegn"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "flux-alexis-en",
                  "flux-bree-en",
                  "flux-brittany-en",
                  "flux-brooke-en",
                  "flux-bruce-en",
                  "flux-cliff-en",
                  "flux-cole-en",
                  "flux-colin-en",
                  "flux-conor-en",
                  "flux-donovan-en",
                  "flux-drew-en",
                  "flux-elise-en",
                  "flux-gemma-en",
                  "flux-haley-en",
                  "flux-hannah-en",
                  "flux-heather-en",
                  "flux-jack-en",
                  "flux-kai-en",
                  "flux-kelsey-en",
                  "flux-kit-en",
                  "flux-maeve-en",
                  "flux-marcelo-en",
                  "flux-marcus-en",
                  "flux-meena-en",
                  "flux-meghan-en",
                  "flux-miles-en",
                  "flux-naveen-en",
                  "flux-paige-en",
                  "flux-priya-en",
                  "flux-rufus-en",
                  "flux-sean-en",
                  "flux-sharon-en",
                  "flux-sienna-en",
                  "flux-tanner-en",
                  "flux-wade-en",
                  "flux-wes-en"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "Vælg den præcise stemme fra denne modelprofil.",
            "Inputtegn og lydsekunder er forskellige måleenheder."
          ],
          "input": {
            "content_type": "application/json",
            "input": "præcis UTF-8-tekst; antal Unicode-tegn uden normalisering",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "flux-alexis-en",
              "flux-bree-en",
              "flux-brittany-en",
              "flux-brooke-en",
              "flux-bruce-en",
              "flux-cliff-en",
              "flux-cole-en",
              "flux-colin-en",
              "flux-conor-en",
              "flux-donovan-en",
              "flux-drew-en",
              "flux-elise-en",
              "flux-gemma-en",
              "flux-haley-en",
              "flux-hannah-en",
              "flux-heather-en",
              "flux-jack-en",
              "flux-kai-en",
              "flux-kelsey-en",
              "flux-kit-en",
              "flux-maeve-en",
              "flux-marcelo-en",
              "flux-marcus-en",
              "flux-meena-en",
              "flux-meghan-en",
              "flux-miles-en",
              "flux-naveen-en",
              "flux-paige-en",
              "flux-priya-en",
              "flux-rufus-en",
              "flux-sean-en",
              "flux-sharon-en",
              "flux-sienna-en",
              "flux-tanner-en",
              "flux-wade-en",
              "flux-wes-en"
            ]
          },
          "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 URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "det faktisk returnerede task_id eller posten i mediebiblioteket",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "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 character"
            },
            "label": "input character",
            "units": [
              {
                "amount": "0.00009",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00009",
                "native_quantity": 1,
                "public_unit_label": "per input character",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "e22bd17cd01d6df3f6fa",
            "label": "Deepgram: Flux TTS",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Standardkonfiguration"
                },
                "label": "Deepgram: Flux TTS · Standardkonfiguration",
                "units": [
                  {
                    "amount": "0.000090",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "6972212d8526f21493ca93b5",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"deepgram/flux-tts\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"flux-alexis-en\", \"flux-bree-en\", \"flux-brittany-en\", \"flux-brooke-en\", \"flux-bruce-en\", \"flux-cliff-en\", \"flux-cole-en\", \"flux-colin-en\", \"flux-conor-en\", \"flux-donovan-en\", \"flux-drew-en\", \"flux-elise-en\", \"flux-gemma-en\", \"flux-haley-en\", \"flux-hannah-en\", \"flux-heather-en\", \"flux-jack-en\", \"flux-kai-en\", \"flux-kelsey-en\", \"flux-kit-en\", \"flux-maeve-en\", \"flux-marcelo-en\", \"flux-marcus-en\", \"flux-meena-en\", \"flux-meghan-en\", \"flux-miles-en\", \"flux-naveen-en\", \"flux-paige-en\", \"flux-priya-en\", \"flux-rufus-en\", \"flux-sean-en\", \"flux-sharon-en\", \"flux-sienna-en\", \"flux-tanner-en\", \"flux-wade-en\", \"flux-wes-en\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "curl",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "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_character": 9e-05
          }
        },
        "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 character"
            },
            "label": "input character",
            "units": [
              {
                "amount": "0.00009",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00009",
                "native_quantity": 1,
                "public_unit_label": "per input character",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_character"
              }
            ]
          }
        ],
        "request_model_id": "deepgram/flux-tts",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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.00009",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00009",
            "native_quantity": 1,
            "public_unit_label": "per input character",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_character"
          }
        ]
      }
    }
  ],
  "model_id": "deepgram/flux-tts",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "3576fd3728b076e149112334997ba57e982724d2b404609fe625b9bd2ff47922",
    "input_html_sha256": "9272453697f8c8d7f694d8eb2692778c7f85eb11a209327f8557554eec36a185",
    "private_audit_sha256": "6c13ef45985914c07a6253d8c9c068a7ec8cc460358706dc559d62dec97de5a8",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/da/deepgram-flux-tts/",
    "description": "Deepgram Flux TTS omdanner engelsk tekst til samtaletale med tone bevaret på tværs af taleture. Streamingtilstanden håndterer afbrydelser; batchsyntese producerer genanvendelig lyd med det samme stemmekatalog.",
    "locale": "da",
    "md_url": "https://ailoot.ai/models/da/deepgram-flux-tts/index.md",
    "title": "Deepgram: Flux TTS — Ailoot",
    "url": "https://ailoot.ai/models/da/deepgram-flux-tts/"
  },
  "rawModel": {
    "about": "Flux TTS er Deepgrams tekst-til-tale-familie til samtaler i realtid og fast talt indhold. Dens afgørende egenskab er samtalekontinuitet: streamingmodellen viderefører prosodien mellem taleture, så fremførelsen kan beholde en ensartet tone, mens interaktionen fortsætter. Den accepterer skriftlig tekst og returnerer talelyd. Flux TTS og den særskilt navngivne Flux-talegenkendelsesmodel udfører forskellige dele af en stemmesamtale.\n\n### Vælg en engelsk stemme\n\nDet dokumenterede Flux-katalog taler engelsk med amerikansk, britisk, irsk, australsk, indisk, singaporeansk og filippinsk accent. Stemmebeskrivelser hjælper med at vælge en taler til kundeservice, telefonmenuer, oplæsning eller uformelle samtaler. Producenten angiver eksempelvis Haley som en rolig amerikansk stemme og Jack som en professionel britisk stemme. Vælg stemmen efter publikum og den type ordlyd, den skal læse, og behold den gennem stykket eller samtalen. Tale på andre sprog hører til et særskilt dokumenteret modelvalg.\n\n### Taleture i realtid og afbrydelser\n\nI producentens streamingforløb kan tekst ankomme, mens applikationen udformer et svar, og lyd returneres gradvist. En taletur har sine egne start- og afslutningshændelser; afslutning af turen færdiggør den resterende syntese. Kontekst på tværs af taleture bevarer prosodien inden for sessionen. Dette er nyttigt til en talt assistent, der først forklarer et valg og derefter besvarer et uddybende spørgsmål uden at ændre stemmens karakter.\n\nEn afbrydelse annullerer den aktive taletur og returnerer den allerede talte del og den resterende tekst. Denne skelnen hjælper applikationen med at fortsætte fra det, lytteren faktisk hørte. Til en praktisk interaktion forberedes et kort svar med den vigtige instruktion først og derefter forklaringen. Hvis lytteren afbryder efter den første instruktion, kan det næste svar forholde sig til det nye spørgsmål frem for at antage, at hele forklaringen blev leveret.\n\n### Fast lyd og outputformater\n\nBatchsyntese modtager en fuld tekstblok og returnerer dens lyd i ét svar. Den bruger samme stemmekatalog som streaming og passer til indtalte telefonbeskeder, notifikationer eller oplæsning forberedt på forhånd. Batchforespørgsler er uafhængige; streamingens tilstand for taleture og afbrydelseshændelser gælder ikke for et fast klip.\n\nStreamingoutputtet er rå lyd uden en filcontainer: 16-bit PCM, mu-law eller A-law. Producenten dokumenterer PCM-samplefrekvenser på 8, 16, 24, 32, 44.1 og 48 kHz; mu-law og A-law bruger 8 eller 16 kHz. Batchoutput understøtter desuden MP3, Opus, FLAC og AAC. Vælg en kodning og container, som den tilsigtede afspiller eller telefoniforbindelse kan fortolke, frem for at behandle en strøm af rå samples som en almindelig lydfil.\n\n### Indstillinger for fremførelse og grænser\n\nProducenten dokumenterer et talehastighedsinterval fra 0.5 til 1.5 i trin på 0.05. Hastighedsændringer ved streaming anvendes ved en segmentgrænse. En separat betaindstilling for udtryksfuldhed bevæger fremførelsen fra rolig til livlig. Almindelig SSML og genkendte tags fra konkurrenter fjernes frem for at blive brugt som udtryksinstruktioner; de indbyggede Flux-indstillinger har deres egen betydning.\n\nIndlejrede pauser hører til batchsyntese med varigheder på 500–3.000 ms i trin på 100 ms og højst otte markører pr. forespørgsel. Der skal være tekst mellem tilstødende pauser, og hastigheden begrænses til 1.15, når en pause er til stede. Udtaleoverstyringer bruger IPA og er i Early Access; producenten bemærker, at en ønsket udtale kan variere fra generering til generering. Udtale kan ikke kombineres med en hastighed, der afviger fra standarden, eller med pauseindstillinger. Til et manuskript med særlige fagnavne lyttes til disse termer med den valgte stemme, og den talte ordlyd holdes udtrykkelig.\n\nDeepgrams dokumenterede streamingsession varer op til én time og lukkes efter tres sekunder uden en indgående meddelelse, medmindre den holdes aktiv via den understøttede forbindelsesmekanisme. Disse sessionsgrænser vedrører forløbet til syntese i realtid. En nyttig leverance er et bevidst stemmevalg, lyttervenlig tekst og lyd tilpasset anvendelsesstedet, hvor applikationer i realtid registrerer, hvad der faktisk blev sagt, når en taletur afbrydes.",
    "alias_of": null,
    "aliases": [],
    "author": "Deepgram",
    "available": null,
    "canonical_model": "deepgram/flux-tts",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00009",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00009",
            "native_quantity": 1,
            "public_unit_label": "per input character",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_character"
          }
        ],
        "summary": "De fulde prisoplysninger for konfigurationen findes under detaljer."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "deepgram/flux-tts",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Ugyldige obligatoriske felter, materialerepræsentation eller parameterværdi",
                "http_status": 400,
                "recovery": "Ret de angivne felter før en ny oprettelsesanmodning.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Det returnerede svar angiver, at operationen eller resultatet skal kontrolleres",
                "http_status": null,
                "recovery": "Gem det oprindeligt returnerede operations-/opgave-ID, anmodningens headere og svaret; fortsæt med de understøttede læseanmodninger for den oprindelige operation. Send ikke oprettelsesanmodningen igen.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "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 URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Gem det oprindelige operation_id/X-Client-Request-ID til afstemning uden genindsendelse; der er ingen særskilt rute til polling af lyd."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Gem hele det binære resultat og alle headere. Hvis der returneres JSON eller flere output, skal du gemme hvert dataelement og hente alle de faktiske signerede asset-URL'er.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "deepgram/flux-tts"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": false,
                "maximum_length": null,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "Unicode-tegn"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "flux-alexis-en",
                  "flux-bree-en",
                  "flux-brittany-en",
                  "flux-brooke-en",
                  "flux-bruce-en",
                  "flux-cliff-en",
                  "flux-cole-en",
                  "flux-colin-en",
                  "flux-conor-en",
                  "flux-donovan-en",
                  "flux-drew-en",
                  "flux-elise-en",
                  "flux-gemma-en",
                  "flux-haley-en",
                  "flux-hannah-en",
                  "flux-heather-en",
                  "flux-jack-en",
                  "flux-kai-en",
                  "flux-kelsey-en",
                  "flux-kit-en",
                  "flux-maeve-en",
                  "flux-marcelo-en",
                  "flux-marcus-en",
                  "flux-meena-en",
                  "flux-meghan-en",
                  "flux-miles-en",
                  "flux-naveen-en",
                  "flux-paige-en",
                  "flux-priya-en",
                  "flux-rufus-en",
                  "flux-sean-en",
                  "flux-sharon-en",
                  "flux-sienna-en",
                  "flux-tanner-en",
                  "flux-wade-en",
                  "flux-wes-en"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "Vælg den præcise stemme fra denne modelprofil.",
            "Inputtegn og lydsekunder er forskellige måleenheder."
          ],
          "input": {
            "content_type": "application/json",
            "input": "præcis UTF-8-tekst; antal Unicode-tegn uden normalisering",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "flux-alexis-en",
              "flux-bree-en",
              "flux-brittany-en",
              "flux-brooke-en",
              "flux-bruce-en",
              "flux-cliff-en",
              "flux-cole-en",
              "flux-colin-en",
              "flux-conor-en",
              "flux-donovan-en",
              "flux-drew-en",
              "flux-elise-en",
              "flux-gemma-en",
              "flux-haley-en",
              "flux-hannah-en",
              "flux-heather-en",
              "flux-jack-en",
              "flux-kai-en",
              "flux-kelsey-en",
              "flux-kit-en",
              "flux-maeve-en",
              "flux-marcelo-en",
              "flux-marcus-en",
              "flux-meena-en",
              "flux-meghan-en",
              "flux-miles-en",
              "flux-naveen-en",
              "flux-paige-en",
              "flux-priya-en",
              "flux-rufus-en",
              "flux-sean-en",
              "flux-sharon-en",
              "flux-sienna-en",
              "flux-tanner-en",
              "flux-wade-en",
              "flux-wes-en"
            ]
          },
          "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 URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "det faktisk returnerede task_id eller posten i mediebiblioteket",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "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 character"
            },
            "label": "input character",
            "units": [
              {
                "amount": "0.00009",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00009",
                "native_quantity": 1,
                "public_unit_label": "per input character",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "e22bd17cd01d6df3f6fa",
            "label": "Deepgram: Flux TTS",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Standardkonfiguration"
                },
                "label": "Deepgram: Flux TTS · Standardkonfiguration",
                "units": [
                  {
                    "amount": "0.000090",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "6972212d8526f21493ca93b5",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"deepgram/flux-tts\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"flux-alexis-en\", \"flux-bree-en\", \"flux-brittany-en\", \"flux-brooke-en\", \"flux-bruce-en\", \"flux-cliff-en\", \"flux-cole-en\", \"flux-colin-en\", \"flux-conor-en\", \"flux-donovan-en\", \"flux-drew-en\", \"flux-elise-en\", \"flux-gemma-en\", \"flux-haley-en\", \"flux-hannah-en\", \"flux-heather-en\", \"flux-jack-en\", \"flux-kai-en\", \"flux-kelsey-en\", \"flux-kit-en\", \"flux-maeve-en\", \"flux-marcelo-en\", \"flux-marcus-en\", \"flux-meena-en\", \"flux-meghan-en\", \"flux-miles-en\", \"flux-naveen-en\", \"flux-paige-en\", \"flux-priya-en\", \"flux-rufus-en\", \"flux-sean-en\", \"flux-sharon-en\", \"flux-sienna-en\", \"flux-tanner-en\", \"flux-wade-en\", \"flux-wes-en\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "curl",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "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_character": 9e-05
          }
        },
        "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 character"
            },
            "label": "input character",
            "units": [
              {
                "amount": "0.00009",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00009",
                "native_quantity": 1,
                "public_unit_label": "per input character",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_character"
              }
            ]
          }
        ],
        "request_model_id": "deepgram/flux-tts",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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.00009",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00009",
            "native_quantity": 1,
            "public_unit_label": "per input character",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_character"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "deepgram/flux-tts",
        "request_model_id": "deepgram/flux-tts",
        "route_label": "Ultra"
      }
    ],
    "name": "Deepgram: Flux TTS",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000090",
            "amount_unit": "usd_per_declared_unit",
            "conditions": {},
            "key": "prompt",
            "label": "prompt",
            "quantity": "1",
            "rate_role": "typed_active_maker_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    ],
    "public_id": "deepgram/flux-tts",
    "short": "Deepgram Flux TTS omdanner engelsk tekst til samtaletale med tone bevaret på tværs af taleture. Streamingtilstanden håndterer afbrydelser; batchsyntese producerer genanvendelig lyd med det samme stemmekatalog."
  },
  "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": "Deepgram Flux TTS omdanner engelsk tekst til samtaletale med tone bevaret på tværs af taleture. Streamingtilstanden håndterer afbrydelser; batchsyntese producerer genanvendelig lyd med det samme stemmekatalog.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "0f7422e75827d5f869b47eafd67db825e9c8d482de5b0012f9ebdd081ffaf68e",
    "renderer_sha256": "2bf9f26ea9bfd57ed53d867671d8f05b41a6ea85089f48039e3365dc2b92ec2c"
  },
  "sourceRevision": "e8cd57d488fe632778a5bbaa2362db166aded1e15fb5defd58672d3a393485b4"
}
