{
  "aboutHtml": "<p>Flux TTS adalah keluarga teks ke suara Deepgram untuk percakapan langsung dan konten lisan tetap. Ciri utamanya adalah kesinambungan percakapan: model streaming membawa prosodi antargiliran, sehingga penyampaian dapat mempertahankan nada yang konsisten saat interaksi berlanjut. Model ini menerima teks tertulis dan mengembalikan audio ucapan. Flux TTS dan model pengenalan ucapan bernama Flux yang terpisah menjalankan bagian berbeda dalam percakapan suara.</p><h4>Pilih suara berbahasa Inggris</h4><p>Katalog Flux yang didokumentasikan berbicara dalam bahasa Inggris, dengan aksen Amerika, Britania, Irlandia, Australia, India, Singapura, dan Filipina. Deskripsi suara membantu memilih penutur untuk layanan pelanggan, menu telepon, narasi, atau percakapan santai. Misalnya, produsen mencantumkan Haley sebagai suara Amerika yang tenang dan Jack sebagai suara Britania yang profesional. Pilih suara berdasarkan audiens dan jenis susunan kata yang akan dibacanya, lalu pertahankan suara itu sepanjang karya atau percakapan. Ucapan dalam bahasa lain memerlukan pilihan model yang didokumentasikan secara terpisah.</p><h4>Giliran langsung dan interupsi</h4><p>Dalam alur kerja streaming produsen, teks dapat masuk saat aplikasi menyusun respons dan audio dikembalikan secara bertahap. Satu giliran memiliki peristiwa mulai dan selesai sendiri; mengakhiri giliran menyelesaikan sintesis yang masih tersisa. Konteks antargiliran mempertahankan prosodi dalam sesi tersebut. Ini berguna bagi asisten suara yang mula-mula menjelaskan pilihan lalu menjawab permintaan klarifikasi tanpa mengubah karakter suaranya.</p><p>Interupsi membatalkan giliran aktif dan mengembalikan bagian yang telah diucapkan serta teks yang tersisa. Pembedaan itu membantu aplikasi melanjutkan berdasarkan apa yang benar-benar didengar pendengar. Untuk interaksi praktis, siapkan jawaban singkat dengan instruksi penting terlebih dahulu, diikuti penjelasan. Jika pendengar menyela setelah instruksi pertama, respons berikutnya dapat menangani pertanyaan baru alih-alih menganggap seluruh penjelasan telah tersampaikan.</p><h4>Audio tetap dan format keluaran</h4><p>Sintesis batch menerima satu blok teks lengkap dan mengembalikan audionya dalam satu respons. Model ini menggunakan katalog suara yang sama dengan streaming dan cocok untuk petunjuk telepon yang direkam, notifikasi, atau narasi yang disiapkan sebelumnya. Permintaan batch saling independen; status giliran streaming dan peristiwa interupsi tidak berlaku pada klip tetap.</p><p>Keluaran streaming adalah audio mentah tanpa kontainer berkas: PCM 16 bit, mu-law, atau A-law. Produsen mendokumentasikan laju sampel PCM sebesar 8, 16, 24, 32, 44,1, dan 48 kHz; mu-law dan A-law menggunakan 8 atau 16 kHz. Keluaran batch juga mendukung MP3, Opus, FLAC, dan AAC. Pilih pengodean dan kontainer yang dapat diinterpretasikan pemutar atau jalur telepon sasaran alih-alih memperlakukan aliran sampel mentah sebagai berkas audio biasa.</p><h4>Kendali penyampaian dan batasan</h4><p>Produsen mendokumentasikan rentang kecepatan bicara dari 0.5 hingga 1.5 dengan kenaikan 0.05. Perubahan kecepatan streaming berlaku pada batas segmen. Kendali ekspresivitas beta yang terpisah mengubah penyampaian dari tenang menjadi penuh semangat. SSML biasa dan tag pesaing yang dikenali dihapus alih-alih digunakan sebagai instruksi ekspresif; kendali bawaan Flux memiliki maknanya sendiri.</p><p>Jeda sebaris berlaku untuk sintesis batch, dengan durasi 500–3.000 ms dalam kenaikan 100 ms dan paling banyak delapan penanda per permintaan. Teks harus memisahkan jeda yang berdekatan, dan kecepatan dibatasi hingga 1.15 saat terdapat jeda. Penggantian pelafalan menggunakan IPA dan berada dalam Early Access; produsen menyatakan bahwa pelafalan yang diminta dapat bervariasi antarhasil generasi. Pelafalan tidak dapat digabungkan dengan kecepatan selain bawaan atau dengan kendali jeda. Untuk naskah dengan nama khusus bidang tertentu, dengarkan istilah tersebut dengan suara pilihan dan buat susunan kata lisannya eksplisit.</p><p>Sesi streaming yang didokumentasikan Deepgram berlangsung hingga satu jam dan ditutup setelah enam puluh detik tanpa pesan masuk kecuali dipertahankan aktif dengan mekanisme koneksi yang didukung. Batas sesi tersebut berkaitan dengan alur kerja sintesis langsung. Hasil yang berguna adalah suara yang dipilih secara sengaja, teks yang ramah pendengar, dan audio yang sesuai dengan tujuannya, dengan aplikasi langsung melacak apa yang benar-benar diucapkan saat giliran diinterupsi.</p>",
  "aboutText": "Flux TTS adalah keluarga teks ke suara Deepgram untuk percakapan langsung dan konten lisan tetap. Ciri utamanya adalah kesinambungan percakapan: model streaming membawa prosodi antargiliran, sehingga penyampaian dapat mempertahankan nada yang konsisten saat interaksi berlanjut. Model ini menerima teks tertulis dan mengembalikan audio ucapan. Flux TTS dan model pengenalan ucapan bernama Flux yang terpisah menjalankan bagian berbeda dalam percakapan suara.\n\n### Pilih suara berbahasa Inggris\n\nKatalog Flux yang didokumentasikan berbicara dalam bahasa Inggris, dengan aksen Amerika, Britania, Irlandia, Australia, India, Singapura, dan Filipina. Deskripsi suara membantu memilih penutur untuk layanan pelanggan, menu telepon, narasi, atau percakapan santai. Misalnya, produsen mencantumkan Haley sebagai suara Amerika yang tenang dan Jack sebagai suara Britania yang profesional. Pilih suara berdasarkan audiens dan jenis susunan kata yang akan dibacanya, lalu pertahankan suara itu sepanjang karya atau percakapan. Ucapan dalam bahasa lain memerlukan pilihan model yang didokumentasikan secara terpisah.\n\n### Giliran langsung dan interupsi\n\nDalam alur kerja streaming produsen, teks dapat masuk saat aplikasi menyusun respons dan audio dikembalikan secara bertahap. Satu giliran memiliki peristiwa mulai dan selesai sendiri; mengakhiri giliran menyelesaikan sintesis yang masih tersisa. Konteks antargiliran mempertahankan prosodi dalam sesi tersebut. Ini berguna bagi asisten suara yang mula-mula menjelaskan pilihan lalu menjawab permintaan klarifikasi tanpa mengubah karakter suaranya.\n\nInterupsi membatalkan giliran aktif dan mengembalikan bagian yang telah diucapkan serta teks yang tersisa. Pembedaan itu membantu aplikasi melanjutkan berdasarkan apa yang benar-benar didengar pendengar. Untuk interaksi praktis, siapkan jawaban singkat dengan instruksi penting terlebih dahulu, diikuti penjelasan. Jika pendengar menyela setelah instruksi pertama, respons berikutnya dapat menangani pertanyaan baru alih-alih menganggap seluruh penjelasan telah tersampaikan.\n\n### Audio tetap dan format keluaran\n\nSintesis batch menerima satu blok teks lengkap dan mengembalikan audionya dalam satu respons. Model ini menggunakan katalog suara yang sama dengan streaming dan cocok untuk petunjuk telepon yang direkam, notifikasi, atau narasi yang disiapkan sebelumnya. Permintaan batch saling independen; status giliran streaming dan peristiwa interupsi tidak berlaku pada klip tetap.\n\nKeluaran streaming adalah audio mentah tanpa kontainer berkas: PCM 16 bit, mu-law, atau A-law. Produsen mendokumentasikan laju sampel PCM sebesar 8, 16, 24, 32, 44,1, dan 48 kHz; mu-law dan A-law menggunakan 8 atau 16 kHz. Keluaran batch juga mendukung MP3, Opus, FLAC, dan AAC. Pilih pengodean dan kontainer yang dapat diinterpretasikan pemutar atau jalur telepon sasaran alih-alih memperlakukan aliran sampel mentah sebagai berkas audio biasa.\n\n### Kendali penyampaian dan batasan\n\nProdusen mendokumentasikan rentang kecepatan bicara dari 0.5 hingga 1.5 dengan kenaikan 0.05. Perubahan kecepatan streaming berlaku pada batas segmen. Kendali ekspresivitas beta yang terpisah mengubah penyampaian dari tenang menjadi penuh semangat. SSML biasa dan tag pesaing yang dikenali dihapus alih-alih digunakan sebagai instruksi ekspresif; kendali bawaan Flux memiliki maknanya sendiri.\n\nJeda sebaris berlaku untuk sintesis batch, dengan durasi 500–3.000 ms dalam kenaikan 100 ms dan paling banyak delapan penanda per permintaan. Teks harus memisahkan jeda yang berdekatan, dan kecepatan dibatasi hingga 1.15 saat terdapat jeda. Penggantian pelafalan menggunakan IPA dan berada dalam Early Access; produsen menyatakan bahwa pelafalan yang diminta dapat bervariasi antarhasil generasi. Pelafalan tidak dapat digabungkan dengan kecepatan selain bawaan atau dengan kendali jeda. Untuk naskah dengan nama khusus bidang tertentu, dengarkan istilah tersebut dengan suara pilihan dan buat susunan kata lisannya eksplisit.\n\nSesi streaming yang didokumentasikan Deepgram berlangsung hingga satu jam dan ditutup setelah enam puluh detik tanpa pesan masuk kecuali dipertahankan aktif dengan mekanisme koneksi yang didukung. Batas sesi tersebut berkaitan dengan alur kerja sintesis langsung. Hasil yang berguna adalah suara yang dipilih secara sengaja, teks yang ramah pendengar, dan audio yang sesuai dengan tujuannya, dengan aplikasi langsung melacak apa yang benar-benar diucapkan saat giliran diinterupsi.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "c61d79eb849ba71b3ecde822fbdd0015817b0f6a356bbd191d2d538510b6b59a",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "id",
  "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=\"Tutup\">×</button></div><div class=\"idline\"><span>Deepgram /</span><code>deepgram/flux-tts</code><button type=\"button\" id=\"copy-id\">Salin ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Bagian kartu model\"><button type=\"button\" data-card-jump=\"overview\">Mulai</button><button type=\"button\" data-card-jump=\"methods\">Masukan &amp; metode</button><button type=\"button\" data-card-jump=\"pricing\">Paket</button><button type=\"button\" data-card-jump=\"examples\">Contoh</button><button type=\"button\" data-card-jump=\"results\">Hasil</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metode API\"><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\">Sintesis ucapan</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\">Mulai</h3><p class=\"mdesc-full\">Deepgram Flux TTS mengubah teks bahasa Inggris menjadi ucapan percakapan dengan nada yang dipertahankan antargiliran. Mode streaming menangani interupsi; sintesis batch menghasilkan audio yang dapat digunakan kembali dengan katalog suara yang sama.</p><dl class=\"card-io\" data-card-io><div><dt>Masukan yang diterima</dt><dd>Teks</dd></div><div><dt>Hasil</dt><dd>Audio</dd></div></dl><details class=\"card-about\"><summary>Tentang model</summary><p class=\"note-s\" data-model-method-boundary>Deskripsi ini mencakup kemampuan model. Masukan, keluaran, dan opsi yang tersedia di Ailoot tercantum di bawah untuk metode yang dipilih.</p><div class=\"mabout\" id=\"m-about\"><p>Flux TTS adalah keluarga teks ke suara Deepgram untuk percakapan langsung dan konten lisan tetap. Ciri utamanya adalah kesinambungan percakapan: model streaming membawa prosodi antargiliran, sehingga penyampaian dapat mempertahankan nada yang konsisten saat interaksi berlanjut. Model ini menerima teks tertulis dan mengembalikan audio ucapan. Flux TTS dan model pengenalan ucapan bernama Flux yang terpisah menjalankan bagian berbeda dalam percakapan suara.</p><h4>Pilih suara berbahasa Inggris</h4><p>Katalog Flux yang didokumentasikan berbicara dalam bahasa Inggris, dengan aksen Amerika, Britania, Irlandia, Australia, India, Singapura, dan Filipina. Deskripsi suara membantu memilih penutur untuk layanan pelanggan, menu telepon, narasi, atau percakapan santai. Misalnya, produsen mencantumkan Haley sebagai suara Amerika yang tenang dan Jack sebagai suara Britania yang profesional. Pilih suara berdasarkan audiens dan jenis susunan kata yang akan dibacanya, lalu pertahankan suara itu sepanjang karya atau percakapan. Ucapan dalam bahasa lain memerlukan pilihan model yang didokumentasikan secara terpisah.</p><h4>Giliran langsung dan interupsi</h4><p>Dalam alur kerja streaming produsen, teks dapat masuk saat aplikasi menyusun respons dan audio dikembalikan secara bertahap. Satu giliran memiliki peristiwa mulai dan selesai sendiri; mengakhiri giliran menyelesaikan sintesis yang masih tersisa. Konteks antargiliran mempertahankan prosodi dalam sesi tersebut. Ini berguna bagi asisten suara yang mula-mula menjelaskan pilihan lalu menjawab permintaan klarifikasi tanpa mengubah karakter suaranya.</p><p>Interupsi membatalkan giliran aktif dan mengembalikan bagian yang telah diucapkan serta teks yang tersisa. Pembedaan itu membantu aplikasi melanjutkan berdasarkan apa yang benar-benar didengar pendengar. Untuk interaksi praktis, siapkan jawaban singkat dengan instruksi penting terlebih dahulu, diikuti penjelasan. Jika pendengar menyela setelah instruksi pertama, respons berikutnya dapat menangani pertanyaan baru alih-alih menganggap seluruh penjelasan telah tersampaikan.</p><h4>Audio tetap dan format keluaran</h4><p>Sintesis batch menerima satu blok teks lengkap dan mengembalikan audionya dalam satu respons. Model ini menggunakan katalog suara yang sama dengan streaming dan cocok untuk petunjuk telepon yang direkam, notifikasi, atau narasi yang disiapkan sebelumnya. Permintaan batch saling independen; status giliran streaming dan peristiwa interupsi tidak berlaku pada klip tetap.</p><p>Keluaran streaming adalah audio mentah tanpa kontainer berkas: PCM 16 bit, mu-law, atau A-law. Produsen mendokumentasikan laju sampel PCM sebesar 8, 16, 24, 32, 44,1, dan 48 kHz; mu-law dan A-law menggunakan 8 atau 16 kHz. Keluaran batch juga mendukung MP3, Opus, FLAC, dan AAC. Pilih pengodean dan kontainer yang dapat diinterpretasikan pemutar atau jalur telepon sasaran alih-alih memperlakukan aliran sampel mentah sebagai berkas audio biasa.</p><h4>Kendali penyampaian dan batasan</h4><p>Produsen mendokumentasikan rentang kecepatan bicara dari 0.5 hingga 1.5 dengan kenaikan 0.05. Perubahan kecepatan streaming berlaku pada batas segmen. Kendali ekspresivitas beta yang terpisah mengubah penyampaian dari tenang menjadi penuh semangat. SSML biasa dan tag pesaing yang dikenali dihapus alih-alih digunakan sebagai instruksi ekspresif; kendali bawaan Flux memiliki maknanya sendiri.</p><p>Jeda sebaris berlaku untuk sintesis batch, dengan durasi 500–3.000 ms dalam kenaikan 100 ms dan paling banyak delapan penanda per permintaan. Teks harus memisahkan jeda yang berdekatan, dan kecepatan dibatasi hingga 1.15 saat terdapat jeda. Penggantian pelafalan menggunakan IPA dan berada dalam Early Access; produsen menyatakan bahwa pelafalan yang diminta dapat bervariasi antarhasil generasi. Pelafalan tidak dapat digabungkan dengan kecepatan selain bawaan atau dengan kendali jeda. Untuk naskah dengan nama khusus bidang tertentu, dengarkan istilah tersebut dengan suara pilihan dan buat susunan kata lisannya eksplisit.</p><p>Sesi streaming yang didokumentasikan Deepgram berlangsung hingga satu jam dan ditutup setelah enam puluh detik tanpa pesan masuk kecuali dipertahankan aktif dengan mekanisme koneksi yang didukung. Batas sesi tersebut berkaitan dengan alur kerja sintesis langsung. Hasil yang berguna adalah suara yang dipilih secara sengaja, teks yang ramah pendengar, dan audio yang sesuai dengan tujuannya, dengan aplikasi langsung melacak apa yang benar-benar diucapkan saat giliran diinterupsi.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tersedia di Ailoot · masukan &amp; metode</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Sintesis ucapan</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Masukan</dt><dd><code>text</code></dd></div><div><dt>Keluaran</dt><dd><code>audio</code></dd></div><div><dt>Format keluaran</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Kolom</th><th>Jenis</th><th>Persyaratan</th><th>Nilai &amp; batasan</th><th>Bawaan</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>deepgram/flux-tts</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Panjang minimum: 1</div><div>Satuan: karakter Unicode</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</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=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>mp3</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinasi bahan masukan</summary><p class=\"note-s\"><b>text_to_speech</b> · Wajib: input</p></details><details class=\"note-s\" data-method-contract><summary>Parameter metode dan siklus hidup</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrak</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=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</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=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</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=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</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=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</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=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</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=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</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=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>teks UTF-8 persis; jumlah karakter Unicode tanpa normalisasi</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=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>text</td></tr></tbody></table></div><p>Siklus hidup: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · task_id aktual yang dikembalikan atau catatan pustaka media</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\">Pilih suara yang tepat dari profil model ini.</p><p class=\"note-s\">Karakter masukan dan detik audio merupakan satuan pengukuran yang berbeda.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Paket</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.</p><dl data-price-conditions><dt>Mode Fast</dt><dd>Tidak ditentukan <span class=\"note-s\">Saat mode fast dipilih</span></dd><dt>Mode Flex</dt><dd>Tidak ditentukan <span class=\"note-s\">Saat mode flex dipilih</span></dd><dt>Upaya penalaran maksimum</dt><dd>Tidak ditentukan <span class=\"note-s\">Saat upaya penalaran maksimum menggunakan penyesuaian default</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarif Ailoot</h4><h4>Harga menurut konfigurasi</h4><p class=\"note-s\">Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasi</th><th>Jadwal tarif</th><th>Satuan penagihan</th><th>Biaya</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Tarif dasar token</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>Tarif dasar</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>—</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Masukan · Token masukan</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Keluaran · Token keluaran</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Pembacaan cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Penulisan cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Penulisan cache, 1 jam</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>karakter masukan</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per karakter masukan</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Masukan · karakter masukan</span> <b>$0.00009</b> <span class=\"price-unit\">per karakter masukan</span></div></td></tr></tbody></table></div></div><div data-declared-reference-pricing><h4>Detail tarif referensi</h4><p class=\"note-s\">Jadwal referensi tingkat model tidak mengubah pemilihan metode, estimasi harga, atau biaya. Biaya aktif menggunakan tarif metode Ailoot yang dipilih.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Deepgram: Flux TTS</summary><h4>Harga menurut konfigurasi</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasi</th><th>Kondisi penagihan</th><th>Biaya</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Deepgram: Flux TTS · Konfigurasi bawaan</th><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>Konfigurasi bawaan</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Masukan · Karakter masukan</span> <b>US$0,00009</b> <span class=\"price-unit\">per karakter masukan</span></div></td></tr></tbody></table></div></details></div><p class=\"note-s\">Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. <a href=\"/docs/id/billing/reserve/\">Cara kerja cadangan dan penyelesaian tagihan →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Contoh permintaan</h3><h4>Ailoot Ultra · Sintesis ucapan</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kode\"><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=\"Salin 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\">Terima dan simpan hasil</h3><h4>Ailoot Ultra · Sintesis ucapan</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>Pembacaan konten lain</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kode\"><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\">Pustaka media</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\">Status tugas</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\">Detail aset</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Salin 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>Simpan semua hasil yang selesai</h5><p class=\"note-s\">Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.</p><p class=\"note-s\">Simpan hasil biner dan header secara lengkap. Jika JSON atau beberapa keluaran dikembalikan, simpan setiap item data dan ambil data dari setiap URL aset bertanda tangan yang benar-benar dikembalikan.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asli perlu diperiksa</h5><p class=\"note-s\">Simpan operation_id/X-Client-Request-ID asli untuk rekonsiliasi tanpa pengiriman ulang; tidak ada rute polling khusus audio.</p></div><details class=\"card-about\" data-output-fields><summary>Kolom respons</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Kolom</th><th>Jenis</th></tr></thead><tbody><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>bytes</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Kesalahan dan langkah berikutnya</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Respons</th><th>Kondisi</th><th>Langkah berikutnya</th></tr></thead><tbody><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Bidang wajib, representasi materi, atau nilai parameter tidak valid</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Perbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span><code>server_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Respons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias model</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>Alias jalur metode</h4><p class=\"note-s\">Gunakan jalur metode yang ditampilkan di atas.</p><h4>ID pemanggil terkait</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": "Bidang wajib, representasi materi, atau nilai parameter tidak valid",
                "http_status": 400,
                "recovery": "Perbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan.",
                "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": "Simpan operation_id/X-Client-Request-ID asli untuk rekonsiliasi tanpa pengiriman ulang; tidak ada rute polling khusus audio."
            },
            "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": "Simpan hasil biner dan header secara lengkap. Jika JSON atau beberapa keluaran dikembalikan, simpan setiap item data dan ambil data dari setiap URL aset bertanda tangan yang benar-benar dikembalikan.",
              "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": "karakter Unicode"
              },
              {
                "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": [
            "Pilih suara yang tepat dari profil model ini.",
            "Karakter masukan dan detik audio merupakan satuan pengukuran yang berbeda."
          ],
          "input": {
            "content_type": "application/json",
            "input": "teks UTF-8 persis; jumlah karakter Unicode tanpa normalisasi",
            "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": "task_id aktual yang dikembalikan atau catatan pustaka media",
                "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": "Konfigurasi bawaan"
                },
                "label": "Deepgram: Flux TTS · Konfigurasi bawaan",
                "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": "bb2c1b66c55edd785731c81d56fe8f1fbfda473880a7f4852585dba3bd4b1a1b",
    "input_html_sha256": "5ee97752227dcd9953fabdb9bc78134f01614a50b3d08f703ad6fa2fd80ece53",
    "private_audit_sha256": "c707c2ea8294f96c0c5d3a547a2cc177a4f9f14534e6a4d18d2fcd5b5a8a833f",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/id/deepgram-flux-tts/",
    "description": "Deepgram Flux TTS mengubah teks bahasa Inggris menjadi ucapan percakapan dengan nada yang dipertahankan antargiliran. Mode streaming menangani interupsi; sintesis batch menghasilkan audio yang dapat digunakan kembali dengan katalog suara yang sama.",
    "locale": "id",
    "md_url": "https://ailoot.ai/models/id/deepgram-flux-tts/index.md",
    "title": "Deepgram: Flux TTS — Ailoot",
    "url": "https://ailoot.ai/models/id/deepgram-flux-tts/"
  },
  "rawModel": {
    "about": "Flux TTS adalah keluarga teks ke suara Deepgram untuk percakapan langsung dan konten lisan tetap. Ciri utamanya adalah kesinambungan percakapan: model streaming membawa prosodi antargiliran, sehingga penyampaian dapat mempertahankan nada yang konsisten saat interaksi berlanjut. Model ini menerima teks tertulis dan mengembalikan audio ucapan. Flux TTS dan model pengenalan ucapan bernama Flux yang terpisah menjalankan bagian berbeda dalam percakapan suara.\n\n### Pilih suara berbahasa Inggris\n\nKatalog Flux yang didokumentasikan berbicara dalam bahasa Inggris, dengan aksen Amerika, Britania, Irlandia, Australia, India, Singapura, dan Filipina. Deskripsi suara membantu memilih penutur untuk layanan pelanggan, menu telepon, narasi, atau percakapan santai. Misalnya, produsen mencantumkan Haley sebagai suara Amerika yang tenang dan Jack sebagai suara Britania yang profesional. Pilih suara berdasarkan audiens dan jenis susunan kata yang akan dibacanya, lalu pertahankan suara itu sepanjang karya atau percakapan. Ucapan dalam bahasa lain memerlukan pilihan model yang didokumentasikan secara terpisah.\n\n### Giliran langsung dan interupsi\n\nDalam alur kerja streaming produsen, teks dapat masuk saat aplikasi menyusun respons dan audio dikembalikan secara bertahap. Satu giliran memiliki peristiwa mulai dan selesai sendiri; mengakhiri giliran menyelesaikan sintesis yang masih tersisa. Konteks antargiliran mempertahankan prosodi dalam sesi tersebut. Ini berguna bagi asisten suara yang mula-mula menjelaskan pilihan lalu menjawab permintaan klarifikasi tanpa mengubah karakter suaranya.\n\nInterupsi membatalkan giliran aktif dan mengembalikan bagian yang telah diucapkan serta teks yang tersisa. Pembedaan itu membantu aplikasi melanjutkan berdasarkan apa yang benar-benar didengar pendengar. Untuk interaksi praktis, siapkan jawaban singkat dengan instruksi penting terlebih dahulu, diikuti penjelasan. Jika pendengar menyela setelah instruksi pertama, respons berikutnya dapat menangani pertanyaan baru alih-alih menganggap seluruh penjelasan telah tersampaikan.\n\n### Audio tetap dan format keluaran\n\nSintesis batch menerima satu blok teks lengkap dan mengembalikan audionya dalam satu respons. Model ini menggunakan katalog suara yang sama dengan streaming dan cocok untuk petunjuk telepon yang direkam, notifikasi, atau narasi yang disiapkan sebelumnya. Permintaan batch saling independen; status giliran streaming dan peristiwa interupsi tidak berlaku pada klip tetap.\n\nKeluaran streaming adalah audio mentah tanpa kontainer berkas: PCM 16 bit, mu-law, atau A-law. Produsen mendokumentasikan laju sampel PCM sebesar 8, 16, 24, 32, 44,1, dan 48 kHz; mu-law dan A-law menggunakan 8 atau 16 kHz. Keluaran batch juga mendukung MP3, Opus, FLAC, dan AAC. Pilih pengodean dan kontainer yang dapat diinterpretasikan pemutar atau jalur telepon sasaran alih-alih memperlakukan aliran sampel mentah sebagai berkas audio biasa.\n\n### Kendali penyampaian dan batasan\n\nProdusen mendokumentasikan rentang kecepatan bicara dari 0.5 hingga 1.5 dengan kenaikan 0.05. Perubahan kecepatan streaming berlaku pada batas segmen. Kendali ekspresivitas beta yang terpisah mengubah penyampaian dari tenang menjadi penuh semangat. SSML biasa dan tag pesaing yang dikenali dihapus alih-alih digunakan sebagai instruksi ekspresif; kendali bawaan Flux memiliki maknanya sendiri.\n\nJeda sebaris berlaku untuk sintesis batch, dengan durasi 500–3.000 ms dalam kenaikan 100 ms dan paling banyak delapan penanda per permintaan. Teks harus memisahkan jeda yang berdekatan, dan kecepatan dibatasi hingga 1.15 saat terdapat jeda. Penggantian pelafalan menggunakan IPA dan berada dalam Early Access; produsen menyatakan bahwa pelafalan yang diminta dapat bervariasi antarhasil generasi. Pelafalan tidak dapat digabungkan dengan kecepatan selain bawaan atau dengan kendali jeda. Untuk naskah dengan nama khusus bidang tertentu, dengarkan istilah tersebut dengan suara pilihan dan buat susunan kata lisannya eksplisit.\n\nSesi streaming yang didokumentasikan Deepgram berlangsung hingga satu jam dan ditutup setelah enam puluh detik tanpa pesan masuk kecuali dipertahankan aktif dengan mekanisme koneksi yang didukung. Batas sesi tersebut berkaitan dengan alur kerja sintesis langsung. Hasil yang berguna adalah suara yang dipilih secara sengaja, teks yang ramah pendengar, dan audio yang sesuai dengan tujuannya, dengan aplikasi langsung melacak apa yang benar-benar diucapkan saat giliran diinterupsi.",
    "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": "Informasi lengkap harga konfigurasi tersedia di bagian detail."
      }
    ],
    "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": "Bidang wajib, representasi materi, atau nilai parameter tidak valid",
                "http_status": 400,
                "recovery": "Perbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan.",
                "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": "Simpan operation_id/X-Client-Request-ID asli untuk rekonsiliasi tanpa pengiriman ulang; tidak ada rute polling khusus audio."
            },
            "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": "Simpan hasil biner dan header secara lengkap. Jika JSON atau beberapa keluaran dikembalikan, simpan setiap item data dan ambil data dari setiap URL aset bertanda tangan yang benar-benar dikembalikan.",
              "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": "karakter Unicode"
              },
              {
                "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": [
            "Pilih suara yang tepat dari profil model ini.",
            "Karakter masukan dan detik audio merupakan satuan pengukuran yang berbeda."
          ],
          "input": {
            "content_type": "application/json",
            "input": "teks UTF-8 persis; jumlah karakter Unicode tanpa normalisasi",
            "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": "task_id aktual yang dikembalikan atau catatan pustaka media",
                "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": "Konfigurasi bawaan"
                },
                "label": "Deepgram: Flux TTS · Konfigurasi bawaan",
                "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 mengubah teks bahasa Inggris menjadi ucapan percakapan dengan nada yang dipertahankan antargiliran. Mode streaming menangani interupsi; sintesis batch menghasilkan audio yang dapat digunakan kembali dengan katalog suara yang sama."
  },
  "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 mengubah teks bahasa Inggris menjadi ucapan percakapan dengan nada yang dipertahankan antargiliran. Mode streaming menangani interupsi; sintesis batch menghasilkan audio yang dapat digunakan kembali dengan katalog suara yang sama.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "add33a1450cb283a164868816ac33db0f91744f11c48a2f8d1bda34b0099d81a",
    "renderer_sha256": "2a0471475a29000c23db326ca1e315df73dee7524f6bc2907818ee3458813f2d"
  },
  "sourceRevision": "6069f9a40b1bca7937363e3562ef716623a76c8e356646750c8a86d551f5717b"
}
