{
  "aboutHtml": "<p>Universal-3.5 Pro adalah model pengenalan ucapan AssemblyAI untuk mengubah ucapan rekaman menjadi teks. Dalam profil Sync-nya, klip audio singkat menghasilkan transkrip lengkap dalam satu respons. Ini sesuai untuk pesan suara, masukan push-to-talk dan giliran percakapan terpisah ketika aplikasi sudah mengetahui kapan rekaman harus berakhir.</p><p>Siapkan audio sebagai klip berbatas jelas. Persyaratan Sync AssemblyAI menerima durasi dari 80 milidetik hingga 120 detik, dengan ukuran berkas maksimal 40 MB. Format yang didukung adalah WAV atau PCM mentah signed 16-bit little-endian. Audio dapat berupa mono atau stereo, dengan kanal stereo digabungkan menjadi mono secara internal. Laju sampel yang didukung adalah 8, 16, 22,05, 24, 32, 44,1 dan 48 kHz. Header WAV menyediakan laju sampel dan jumlah kanal; PCM mentah memerlukan nilai tersebut diberikan terpisah dalam konfigurasi transkripsi.</p><p>Rekam ujaran lengkap dan jaga awal serta akhir ucapan tetap utuh. Tugas orisinal yang berguna adalah pesan suara dukungan produk singkat yang memuat nama produk, pengenal pesanan dan permintaan. Simpan klip sumber agar transkrip dapat diperiksa terhadap detail penting tersebut. Untuk rekaman lebih panjang, siapkan alur yang sesuai dengan transkripsi panjang, alih-alih menganggap batas durasi klip singkat sebagai klaim kapasitas audio seluruh model.</p><p>Hasil memuat transkrip lengkap, daftar kata dengan tingkat keyakinan per kata dan tingkat keyakinan keseluruhan antara nol dan satu. Hasil juga menyediakan durasi audio yang dikirim dan pengenal permintaan, sehingga teks dapat tetap terkait dengan klip aslinya. Gunakan tingkat keyakinan kata untuk menemukan bagian yang perlu ditinjau dengan mendengarkan, terutama nama, angka dan kosakata bidang yang penting bagi aplikasi.</p><p>Stempel waktu kata bersifat opsional dan nonaktif secara bawaan. Jika diminta, setiap kata yang disejajarkan dapat membawa awal dan akhirnya dalam milidetik relatif terhadap awal klip. Profil pembuatnya membiarkan nilai tersebut tidak ada ketika kata tidak dapat disejajarkan, alih-alih mengarang perkiraan waktu. Akurasi stempel waktu paling baik untuk audio bahasa Inggris. Pertahankan waktu yang hilang secara eksplisit saat menyiapkan penyorotan kata, bentuk gelombang yang dapat dicari atau penyelarasan subtitel, dan bandingkan teks dengan rekaman sebelum menggunakannya sebagai jalur takarir jadi.</p><p>Prompt kontekstual menjelaskan pokok rekaman. Prompt dapat menyebutkan bidang, skenario atau detail spesifik yang sudah diketahui aplikasi, dan panjang maksimalnya adalah 6000 karakter. Mulailah dengan deskripsi singkat yang sesuai dengan audio, seperti percakapan dukungan teknis tentang perangkat tertentu. Prompt menyediakan konteks pengenalan; ini bukan permintaan untuk menulis ulang pesan pembicara menjadi dokumen berbeda.</p><p>Daftar keyterm terpisah mengarahkan pengenalan agar lebih mengutamakan kosakata tertentu. Profil Sync menerima hingga 100 istilah dan 8000 karakter di seluruh daftar tersebut. Gunakan ejaan tepat untuk nama tidak lazim, akronim atau istilah produk, dan keluarkan kata biasa yang sudah dikenali dengan baik dari daftar. Daftar istilah besar atau tidak diperlukan dapat menyebabkan koreksi berlebihan, sehingga fokuskan daftar pada kata yang penting dalam rekaman. Deskripsi konteks dan daftar kosakata dapat digunakan bersama.</p><p>Percakapan sebelumnya juga dapat membantu menafsirkan balasan singkat. Sertakan ujaran sebelumnya sesuai urutan waktu, dari terlama ke terbaru, sementara audio saat ini tetap menjadi giliran yang ditranskripsikan. Jatah konteks yang didokumentasikan adalah 500 giliran atau total 16.000 karakter. Jika melebihi batas tersebut atau konteks model yang tersedia, entri terlama dihapus terlebih dahulu. Ini berguna ketika jawaban singkat memuat pengenal atau rujukan yang maknanya berasal dari pertanyaan sebelumnya.</p><p>Pemilihan bahasa mengarahkan pengenalan ke satu atau beberapa bahasa yang diharapkan. Antarmuka Sync saat ini menerima 32 kode bahasa dan secara bawaan menggunakan bahasa Inggris jika tidak ada pilihan yang disertakan. Untuk audio yang beralih bahasa, cantumkan bahasa yang diharapkan. Prompt kontekstual khusus menggantikan bawaan yang dikelola dan mengesampingkan pengarahan kode bahasa terpisah, sehingga sebutkan bahasa yang diharapkan di dalam prompt tersebut ketika konteks bahasa maupun skenario dibutuhkan. Pertahankan transkrip dalam bahasa yang benar-benar diucapkan, alih-alih memperlakukan transkripsi sebagai instruksi terjemahan.</p><p>Model juga muncul dalam alur transkripsi AssemblyAI lainnya, sementara persyaratan klip singkat dan bidang hasil profil Sync merupakan milik antarmuka tertentu ini. Alur Dictation pembuatnya menambahkan tahap pembersihan teks terpisah; transkrip dan pesan yang ditulis ulang merupakan artefak berbeda. Pertahankan ucapan yang dikenali jika langkah pengeditan atau perangkuman berikutnya menghasilkan versi yang dibersihkan, agar kata-kata asli tetap tersedia untuk perbandingan.</p><p>Hasil yang berguna meliputi pesan suara yang ditranskripsikan, giliran lengkap untuk asisten, teks audio singkat yang dapat dicari atau daftar kata berwaktu untuk antarmuka tinjauan. Periksa kata-kata penentu terhadap rekaman, pertahankan setiap penyelarasan yang hilang dan jaga klip tetap terhubung dengan teks yang dikembalikan. Hasil pengenalan memberi langkah aplikasi berikutnya transkripsi yang didukung sumber; menjawab permintaan atau mengedit pesan menjadi bagian alur di sekitarnya.</p>",
  "aboutText": "Universal-3.5 Pro adalah model pengenalan ucapan AssemblyAI untuk mengubah ucapan rekaman menjadi teks. Dalam profil Sync-nya, klip audio singkat menghasilkan transkrip lengkap dalam satu respons. Ini sesuai untuk pesan suara, masukan push-to-talk dan giliran percakapan terpisah ketika aplikasi sudah mengetahui kapan rekaman harus berakhir.\n\nSiapkan audio sebagai klip berbatas jelas. Persyaratan Sync AssemblyAI menerima durasi dari 80 milidetik hingga 120 detik, dengan ukuran berkas maksimal 40 MB. Format yang didukung adalah WAV atau PCM mentah signed 16-bit little-endian. Audio dapat berupa mono atau stereo, dengan kanal stereo digabungkan menjadi mono secara internal. Laju sampel yang didukung adalah 8, 16, 22,05, 24, 32, 44,1 dan 48 kHz. Header WAV menyediakan laju sampel dan jumlah kanal; PCM mentah memerlukan nilai tersebut diberikan terpisah dalam konfigurasi transkripsi.\n\nRekam ujaran lengkap dan jaga awal serta akhir ucapan tetap utuh. Tugas orisinal yang berguna adalah pesan suara dukungan produk singkat yang memuat nama produk, pengenal pesanan dan permintaan. Simpan klip sumber agar transkrip dapat diperiksa terhadap detail penting tersebut. Untuk rekaman lebih panjang, siapkan alur yang sesuai dengan transkripsi panjang, alih-alih menganggap batas durasi klip singkat sebagai klaim kapasitas audio seluruh model.\n\nHasil memuat transkrip lengkap, daftar kata dengan tingkat keyakinan per kata dan tingkat keyakinan keseluruhan antara nol dan satu. Hasil juga menyediakan durasi audio yang dikirim dan pengenal permintaan, sehingga teks dapat tetap terkait dengan klip aslinya. Gunakan tingkat keyakinan kata untuk menemukan bagian yang perlu ditinjau dengan mendengarkan, terutama nama, angka dan kosakata bidang yang penting bagi aplikasi.\n\nStempel waktu kata bersifat opsional dan nonaktif secara bawaan. Jika diminta, setiap kata yang disejajarkan dapat membawa awal dan akhirnya dalam milidetik relatif terhadap awal klip. Profil pembuatnya membiarkan nilai tersebut tidak ada ketika kata tidak dapat disejajarkan, alih-alih mengarang perkiraan waktu. Akurasi stempel waktu paling baik untuk audio bahasa Inggris. Pertahankan waktu yang hilang secara eksplisit saat menyiapkan penyorotan kata, bentuk gelombang yang dapat dicari atau penyelarasan subtitel, dan bandingkan teks dengan rekaman sebelum menggunakannya sebagai jalur takarir jadi.\n\nPrompt kontekstual menjelaskan pokok rekaman. Prompt dapat menyebutkan bidang, skenario atau detail spesifik yang sudah diketahui aplikasi, dan panjang maksimalnya adalah 6000 karakter. Mulailah dengan deskripsi singkat yang sesuai dengan audio, seperti percakapan dukungan teknis tentang perangkat tertentu. Prompt menyediakan konteks pengenalan; ini bukan permintaan untuk menulis ulang pesan pembicara menjadi dokumen berbeda.\n\nDaftar keyterm terpisah mengarahkan pengenalan agar lebih mengutamakan kosakata tertentu. Profil Sync menerima hingga 100 istilah dan 8000 karakter di seluruh daftar tersebut. Gunakan ejaan tepat untuk nama tidak lazim, akronim atau istilah produk, dan keluarkan kata biasa yang sudah dikenali dengan baik dari daftar. Daftar istilah besar atau tidak diperlukan dapat menyebabkan koreksi berlebihan, sehingga fokuskan daftar pada kata yang penting dalam rekaman. Deskripsi konteks dan daftar kosakata dapat digunakan bersama.\n\nPercakapan sebelumnya juga dapat membantu menafsirkan balasan singkat. Sertakan ujaran sebelumnya sesuai urutan waktu, dari terlama ke terbaru, sementara audio saat ini tetap menjadi giliran yang ditranskripsikan. Jatah konteks yang didokumentasikan adalah 500 giliran atau total 16.000 karakter. Jika melebihi batas tersebut atau konteks model yang tersedia, entri terlama dihapus terlebih dahulu. Ini berguna ketika jawaban singkat memuat pengenal atau rujukan yang maknanya berasal dari pertanyaan sebelumnya.\n\nPemilihan bahasa mengarahkan pengenalan ke satu atau beberapa bahasa yang diharapkan. Antarmuka Sync saat ini menerima 32 kode bahasa dan secara bawaan menggunakan bahasa Inggris jika tidak ada pilihan yang disertakan. Untuk audio yang beralih bahasa, cantumkan bahasa yang diharapkan. Prompt kontekstual khusus menggantikan bawaan yang dikelola dan mengesampingkan pengarahan kode bahasa terpisah, sehingga sebutkan bahasa yang diharapkan di dalam prompt tersebut ketika konteks bahasa maupun skenario dibutuhkan. Pertahankan transkrip dalam bahasa yang benar-benar diucapkan, alih-alih memperlakukan transkripsi sebagai instruksi terjemahan.\n\nModel juga muncul dalam alur transkripsi AssemblyAI lainnya, sementara persyaratan klip singkat dan bidang hasil profil Sync merupakan milik antarmuka tertentu ini. Alur Dictation pembuatnya menambahkan tahap pembersihan teks terpisah; transkrip dan pesan yang ditulis ulang merupakan artefak berbeda. Pertahankan ucapan yang dikenali jika langkah pengeditan atau perangkuman berikutnya menghasilkan versi yang dibersihkan, agar kata-kata asli tetap tersedia untuk perbandingan.\n\nHasil yang berguna meliputi pesan suara yang ditranskripsikan, giliran lengkap untuk asisten, teks audio singkat yang dapat dicari atau daftar kata berwaktu untuk antarmuka tinjauan. Periksa kata-kata penentu terhadap rekaman, pertahankan setiap penyelarasan yang hilang dan jaga klip tetap terhubung dengan teks yang dikembalikan. Hasil pengenalan memberi langkah aplikasi berikutnya transkripsi yang didukung sumber; menjawab permintaan atau mengedit pesan menjadi bagian alur di sekitarnya.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "00554f5133e8ff01e5abaa3b365c6aa1c7454fc2332bcd9465c25f9bde27eb1a",
    "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\">AssemblyAI: Universal-3.5 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Tutup\">×</button></div><div class=\"idline\"><span>AssemblyAI /</span><code>assemblyai/universal-3-5-pro</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|transcriptions|/v1/audio/transcriptions|assemblyai%2Funiversal-3-5-pro\">Transkripsi</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\">Universal-3.5 Pro adalah model ucapan-ke-teks AssemblyAI untuk mengubah klip audio singkat menjadi transkrip lengkap dalam satu respons. Profil Sync-nya menambahkan tingkat keyakinan kata, stempel waktu kata opsional, petunjuk kosakata dan konteks percakapan sebelumnya untuk masukan suara serta alur push-to-talk.</p><dl class=\"card-io\" data-card-io><div><dt>Masukan yang diterima</dt><dd>Audio</dd></div><div><dt>Hasil</dt><dd>Teks</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>Universal-3.5 Pro adalah model pengenalan ucapan AssemblyAI untuk mengubah ucapan rekaman menjadi teks. Dalam profil Sync-nya, klip audio singkat menghasilkan transkrip lengkap dalam satu respons. Ini sesuai untuk pesan suara, masukan push-to-talk dan giliran percakapan terpisah ketika aplikasi sudah mengetahui kapan rekaman harus berakhir.</p><p>Siapkan audio sebagai klip berbatas jelas. Persyaratan Sync AssemblyAI menerima durasi dari 80 milidetik hingga 120 detik, dengan ukuran berkas maksimal 40 MB. Format yang didukung adalah WAV atau PCM mentah signed 16-bit little-endian. Audio dapat berupa mono atau stereo, dengan kanal stereo digabungkan menjadi mono secara internal. Laju sampel yang didukung adalah 8, 16, 22,05, 24, 32, 44,1 dan 48 kHz. Header WAV menyediakan laju sampel dan jumlah kanal; PCM mentah memerlukan nilai tersebut diberikan terpisah dalam konfigurasi transkripsi.</p><p>Rekam ujaran lengkap dan jaga awal serta akhir ucapan tetap utuh. Tugas orisinal yang berguna adalah pesan suara dukungan produk singkat yang memuat nama produk, pengenal pesanan dan permintaan. Simpan klip sumber agar transkrip dapat diperiksa terhadap detail penting tersebut. Untuk rekaman lebih panjang, siapkan alur yang sesuai dengan transkripsi panjang, alih-alih menganggap batas durasi klip singkat sebagai klaim kapasitas audio seluruh model.</p><p>Hasil memuat transkrip lengkap, daftar kata dengan tingkat keyakinan per kata dan tingkat keyakinan keseluruhan antara nol dan satu. Hasil juga menyediakan durasi audio yang dikirim dan pengenal permintaan, sehingga teks dapat tetap terkait dengan klip aslinya. Gunakan tingkat keyakinan kata untuk menemukan bagian yang perlu ditinjau dengan mendengarkan, terutama nama, angka dan kosakata bidang yang penting bagi aplikasi.</p><p>Stempel waktu kata bersifat opsional dan nonaktif secara bawaan. Jika diminta, setiap kata yang disejajarkan dapat membawa awal dan akhirnya dalam milidetik relatif terhadap awal klip. Profil pembuatnya membiarkan nilai tersebut tidak ada ketika kata tidak dapat disejajarkan, alih-alih mengarang perkiraan waktu. Akurasi stempel waktu paling baik untuk audio bahasa Inggris. Pertahankan waktu yang hilang secara eksplisit saat menyiapkan penyorotan kata, bentuk gelombang yang dapat dicari atau penyelarasan subtitel, dan bandingkan teks dengan rekaman sebelum menggunakannya sebagai jalur takarir jadi.</p><p>Prompt kontekstual menjelaskan pokok rekaman. Prompt dapat menyebutkan bidang, skenario atau detail spesifik yang sudah diketahui aplikasi, dan panjang maksimalnya adalah 6000 karakter. Mulailah dengan deskripsi singkat yang sesuai dengan audio, seperti percakapan dukungan teknis tentang perangkat tertentu. Prompt menyediakan konteks pengenalan; ini bukan permintaan untuk menulis ulang pesan pembicara menjadi dokumen berbeda.</p><p>Daftar keyterm terpisah mengarahkan pengenalan agar lebih mengutamakan kosakata tertentu. Profil Sync menerima hingga 100 istilah dan 8000 karakter di seluruh daftar tersebut. Gunakan ejaan tepat untuk nama tidak lazim, akronim atau istilah produk, dan keluarkan kata biasa yang sudah dikenali dengan baik dari daftar. Daftar istilah besar atau tidak diperlukan dapat menyebabkan koreksi berlebihan, sehingga fokuskan daftar pada kata yang penting dalam rekaman. Deskripsi konteks dan daftar kosakata dapat digunakan bersama.</p><p>Percakapan sebelumnya juga dapat membantu menafsirkan balasan singkat. Sertakan ujaran sebelumnya sesuai urutan waktu, dari terlama ke terbaru, sementara audio saat ini tetap menjadi giliran yang ditranskripsikan. Jatah konteks yang didokumentasikan adalah 500 giliran atau total 16.000 karakter. Jika melebihi batas tersebut atau konteks model yang tersedia, entri terlama dihapus terlebih dahulu. Ini berguna ketika jawaban singkat memuat pengenal atau rujukan yang maknanya berasal dari pertanyaan sebelumnya.</p><p>Pemilihan bahasa mengarahkan pengenalan ke satu atau beberapa bahasa yang diharapkan. Antarmuka Sync saat ini menerima 32 kode bahasa dan secara bawaan menggunakan bahasa Inggris jika tidak ada pilihan yang disertakan. Untuk audio yang beralih bahasa, cantumkan bahasa yang diharapkan. Prompt kontekstual khusus menggantikan bawaan yang dikelola dan mengesampingkan pengarahan kode bahasa terpisah, sehingga sebutkan bahasa yang diharapkan di dalam prompt tersebut ketika konteks bahasa maupun skenario dibutuhkan. Pertahankan transkrip dalam bahasa yang benar-benar diucapkan, alih-alih memperlakukan transkripsi sebagai instruksi terjemahan.</p><p>Model juga muncul dalam alur transkripsi AssemblyAI lainnya, sementara persyaratan klip singkat dan bidang hasil profil Sync merupakan milik antarmuka tertentu ini. Alur Dictation pembuatnya menambahkan tahap pembersihan teks terpisah; transkrip dan pesan yang ditulis ulang merupakan artefak berbeda. Pertahankan ucapan yang dikenali jika langkah pengeditan atau perangkuman berikutnya menghasilkan versi yang dibersihkan, agar kata-kata asli tetap tersedia untuk perbandingan.</p><p>Hasil yang berguna meliputi pesan suara yang ditranskripsikan, giliran lengkap untuk asisten, teks audio singkat yang dapat dicari atau daftar kata berwaktu untuk antarmuka tinjauan. Periksa kata-kata penentu terhadap rekaman, pertahankan setiap penyelarasan yang hilang dan jaga klip tetap terhubung dengan teks yang dikembalikan. Hasil pengenalan memberi langkah aplikasi berikutnya transkripsi yang didukung sumber; menjawab permintaan atau mengedit pesan menjadi bagian alur di sekitarnya.</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 · Transkripsi</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Masukan</dt><dd><code>audio</code></dd></div><div><dt>Keluaran</dt><dd><code>text</code></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><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>assemblyai/universal-3-5-pro</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>object</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></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr></tbody></table></div><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_audio</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>audio</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_conditions</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>Contoh ini membaca berkas PCM WAV Anda yang benar-benar ada dan tidak kosong, mengodekan seluruh byte berkas sebagai base64, lalu mengirim input_audio.format dengan nilai wav.</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 persis dari catatan media milik Ailoot yang sudah ada</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">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>detik audio 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 detik audio masukan</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Masukan · detik audio masukan</span> <b>$0.00025</b> <span class=\"price-unit\">per detik audio masukan</span></div></td></tr></tbody></table></div></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 · Transkripsi</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-1073-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1073-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · berkas WAV yang sebenarnya dan hasil asli secara lengkap</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-1073-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1073-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;]).read_bytes()\nif not (audio[:4] == b&#39;RIFF&#39; and audio[8:12] == b&#39;WAVE&#39;):\n    raise SystemExit(&#39;Supply your actual PCM WAV audio file&#39;)\nwith wave.open(io.BytesIO(audio), &#39;rb&#39;) as recording:\n    if recording.getcomptype() != &#39;NONE&#39; or recording.getnframes() &lt;= 0:\n        raise SystemExit(&#39;Supply a nonempty PCM WAV recording&#39;)\nrequest = {&#39;model&#39;: &#39;assemblyai/universal-3-5-pro&#39;, &#39;input_audio&#39;: {&#39;data&#39;: base64.b64encode(audio).decode(&#39;ascii&#39;), &#39;format&#39;: &#39;wav&#39;}}\nPath(&#39;request.json&#39;).write_text(json.dumps(request, ensure_ascii=False), encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Terima dan simpan hasil</h3><h4>Ailoot Ultra · Transkripsi</h4><p class=\"note-s\">Isi respons asli secara utuh, status, dan header yang diteruskan. Handler ini tidak menambahkan struktur JSON universal, bidang teks, atau pembungkus tugas.</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>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 respons dan header secara lengkap, setiap keluaran aktual, identifikator asli yang dikembalikan, dan semua kolom usage. Pulihkan operasi asli tanpa mengirim ulang permintaan pembuatan.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asli perlu diperiksa</h5><p class=\"note-s\">Simpan X-Client-Request-ID aktual dan respons secara utuh. Baca aset asli yang dimiliki beserta URL konten bertanda tangan yang persis; jangan pernah kirim ulang pembuatan yang statusnya belum pasti.</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\">text (when present)</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span></td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span></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>Isi JSON atau ID model kanonis eksplisit tidak valid.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan respons dan perbaiki bidang permintaan yang ditunjukkan.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Kunci API Ailoot tidak valid.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Gunakan kunci API Ailoot Anda yang diotorisasi.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>403 · <code>permission_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Grup kunci tidak mengizinkan metode ini.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan rincian kesalahan yang dikembalikan.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Metode yang dipilih tidak memiliki rute yang diizinkan.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan rincian kesalahan yang dikembalikan.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Tarif yang diterima tidak dapat memperoleh jumlah atau batas masukan yang diwajibkan.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan respons; gunakan representasi masukan yang diwajibkan oleh tarif yang diterima.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>503 · <code></code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Penyimpanan, rute, harga metode, atau pencadangan dana yang diperlukan tidak tersedia.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan respons asli secara utuh. Pencadangan dana yang belum pasti tidak mengizinkan pengiriman ulang.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>502 · <code>server_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Hasil awal, penggunaan, atau penyelesaian tagihan perlu diperiksa.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan ID permintaan aktual dan respons asli. Baca catatan yang dimiliki yang sudah ada; jangan kirim ulang 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=assemblyai%2Funiversal-3-5-pro&amp;route=Ultra&amp;caller=assemblyai%2Funiversal-3-5-pro&amp;fmt=transcriptions\"><code>assemblyai/universal-3-5-pro</code></a></span></p><h4>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=assemblyai%2Funiversal-3-5-pro&amp;route=Ultra&amp;caller=assemblyai%2Funiversal-3-5-pro&amp;fmt=transcriptions\"><code>assemblyai/universal-3-5-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "assemblyai/universal-3-5-pro",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|assemblyai%2Funiversal-3-5-pro",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "Isi JSON atau ID model kanonis eksplisit tidak valid.",
                "http_status": 400,
                "recovery": "Simpan respons dan perbaiki bidang permintaan yang ditunjukkan.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Kunci API Ailoot tidak valid.",
                "http_status": 401,
                "recovery": "Gunakan kunci API Ailoot Anda yang diotorisasi.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Grup kunci tidak mengizinkan metode ini.",
                "http_status": 403,
                "recovery": "Simpan rincian kesalahan yang dikembalikan.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Metode yang dipilih tidak memiliki rute yang diizinkan.",
                "http_status": 404,
                "recovery": "Simpan rincian kesalahan yang dikembalikan.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Tarif yang diterima tidak dapat memperoleh jumlah atau batas masukan yang diwajibkan.",
                "http_status": 422,
                "recovery": "Simpan respons; gunakan representasi masukan yang diwajibkan oleh tarif yang diterima.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Penyimpanan, rute, harga metode, atau pencadangan dana yang diperlukan tidak tersedia.",
                "http_status": 503,
                "recovery": "Simpan respons asli secara utuh. Pencadangan dana yang belum pasti tidak mengizinkan pengiriman ulang.",
                "type": null
              },
              {
                "code": null,
                "condition": "Hasil awal, penggunaan, atau penyelesaian tagihan perlu diperiksa.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Simpan ID permintaan aktual dan respons asli. Baca catatan yang dimiliki yang sudah ada; jangan kirim ulang pembuatan.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Simpan X-Client-Request-ID aktual dan respons secara utuh. Baca aset asli yang dimiliki beserta URL konten bertanda tangan yang persis; jangan pernah kirim ulang pembuatan yang statusnya belum pasti."
            },
            "outputs": {
              "all_results": "Simpan respons dan header secara lengkap, setiap keluaran aktual, identifikator asli yang dikembalikan, dan semua kolom usage. Pulihkan operasi asli tanpa mengirim ulang permintaan pembuatan.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Isi respons asli secara utuh, status, dan header yang diteruskan. Handler ini tidak menambahkan struktur JSON universal, bidang teks, atau pembungkus tugas."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "assemblyai/universal-3-5-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "assemblyai/universal-3-5-pro"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "assemblyai/universal-3-5-pro"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Contoh ini membaca berkas PCM WAV Anda yang benar-benar ada dan tidak kosong, mengodekan seluruh byte berkas sebagai base64, lalu mengirim input_audio.format dengan nilai wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id persis dari catatan media milik Ailoot yang sudah ada",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00025",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00025",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'assemblyai/universal-3-5-pro', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Transkripsi",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.00025
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00025",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00025",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00025",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00025",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "assemblyai/universal-3-5-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "3e0fedda43e2c90396bd154ecc990b709d5709a02cade4357705c26eef1e6fbf",
    "input_html_sha256": "48eb37bfbed53f9d666f4d330969e0423d9ea227eab74119aca964183d758257",
    "private_audit_sha256": "df90983a8f15ef174f9d1d08a4b38ea790300f706bb4a4727f7817943a2b039d",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/id/assemblyai-universal-3-5-pro/",
    "description": "Universal-3.5 Pro adalah model ucapan-ke-teks AssemblyAI untuk mengubah klip audio singkat menjadi transkrip lengkap dalam satu respons. Profil Sync-nya menambahkan tingkat keyakinan kata, stempel waktu kata opsional, petunjuk kosakata dan konteks percakapan sebelumnya untuk masukan suara serta alur push-to-talk.",
    "locale": "id",
    "md_url": "https://ailoot.ai/models/id/assemblyai-universal-3-5-pro/index.md",
    "title": "AssemblyAI: Universal-3.5 Pro — Ailoot",
    "url": "https://ailoot.ai/models/id/assemblyai-universal-3-5-pro/"
  },
  "rawModel": {
    "about": "Universal-3.5 Pro adalah model pengenalan ucapan AssemblyAI untuk mengubah ucapan rekaman menjadi teks. Dalam profil Sync-nya, klip audio singkat menghasilkan transkrip lengkap dalam satu respons. Ini sesuai untuk pesan suara, masukan push-to-talk dan giliran percakapan terpisah ketika aplikasi sudah mengetahui kapan rekaman harus berakhir.\n\nSiapkan audio sebagai klip berbatas jelas. Persyaratan Sync AssemblyAI menerima durasi dari 80 milidetik hingga 120 detik, dengan ukuran berkas maksimal 40 MB. Format yang didukung adalah WAV atau PCM mentah signed 16-bit little-endian. Audio dapat berupa mono atau stereo, dengan kanal stereo digabungkan menjadi mono secara internal. Laju sampel yang didukung adalah 8, 16, 22,05, 24, 32, 44,1 dan 48 kHz. Header WAV menyediakan laju sampel dan jumlah kanal; PCM mentah memerlukan nilai tersebut diberikan terpisah dalam konfigurasi transkripsi.\n\nRekam ujaran lengkap dan jaga awal serta akhir ucapan tetap utuh. Tugas orisinal yang berguna adalah pesan suara dukungan produk singkat yang memuat nama produk, pengenal pesanan dan permintaan. Simpan klip sumber agar transkrip dapat diperiksa terhadap detail penting tersebut. Untuk rekaman lebih panjang, siapkan alur yang sesuai dengan transkripsi panjang, alih-alih menganggap batas durasi klip singkat sebagai klaim kapasitas audio seluruh model.\n\nHasil memuat transkrip lengkap, daftar kata dengan tingkat keyakinan per kata dan tingkat keyakinan keseluruhan antara nol dan satu. Hasil juga menyediakan durasi audio yang dikirim dan pengenal permintaan, sehingga teks dapat tetap terkait dengan klip aslinya. Gunakan tingkat keyakinan kata untuk menemukan bagian yang perlu ditinjau dengan mendengarkan, terutama nama, angka dan kosakata bidang yang penting bagi aplikasi.\n\nStempel waktu kata bersifat opsional dan nonaktif secara bawaan. Jika diminta, setiap kata yang disejajarkan dapat membawa awal dan akhirnya dalam milidetik relatif terhadap awal klip. Profil pembuatnya membiarkan nilai tersebut tidak ada ketika kata tidak dapat disejajarkan, alih-alih mengarang perkiraan waktu. Akurasi stempel waktu paling baik untuk audio bahasa Inggris. Pertahankan waktu yang hilang secara eksplisit saat menyiapkan penyorotan kata, bentuk gelombang yang dapat dicari atau penyelarasan subtitel, dan bandingkan teks dengan rekaman sebelum menggunakannya sebagai jalur takarir jadi.\n\nPrompt kontekstual menjelaskan pokok rekaman. Prompt dapat menyebutkan bidang, skenario atau detail spesifik yang sudah diketahui aplikasi, dan panjang maksimalnya adalah 6000 karakter. Mulailah dengan deskripsi singkat yang sesuai dengan audio, seperti percakapan dukungan teknis tentang perangkat tertentu. Prompt menyediakan konteks pengenalan; ini bukan permintaan untuk menulis ulang pesan pembicara menjadi dokumen berbeda.\n\nDaftar keyterm terpisah mengarahkan pengenalan agar lebih mengutamakan kosakata tertentu. Profil Sync menerima hingga 100 istilah dan 8000 karakter di seluruh daftar tersebut. Gunakan ejaan tepat untuk nama tidak lazim, akronim atau istilah produk, dan keluarkan kata biasa yang sudah dikenali dengan baik dari daftar. Daftar istilah besar atau tidak diperlukan dapat menyebabkan koreksi berlebihan, sehingga fokuskan daftar pada kata yang penting dalam rekaman. Deskripsi konteks dan daftar kosakata dapat digunakan bersama.\n\nPercakapan sebelumnya juga dapat membantu menafsirkan balasan singkat. Sertakan ujaran sebelumnya sesuai urutan waktu, dari terlama ke terbaru, sementara audio saat ini tetap menjadi giliran yang ditranskripsikan. Jatah konteks yang didokumentasikan adalah 500 giliran atau total 16.000 karakter. Jika melebihi batas tersebut atau konteks model yang tersedia, entri terlama dihapus terlebih dahulu. Ini berguna ketika jawaban singkat memuat pengenal atau rujukan yang maknanya berasal dari pertanyaan sebelumnya.\n\nPemilihan bahasa mengarahkan pengenalan ke satu atau beberapa bahasa yang diharapkan. Antarmuka Sync saat ini menerima 32 kode bahasa dan secara bawaan menggunakan bahasa Inggris jika tidak ada pilihan yang disertakan. Untuk audio yang beralih bahasa, cantumkan bahasa yang diharapkan. Prompt kontekstual khusus menggantikan bawaan yang dikelola dan mengesampingkan pengarahan kode bahasa terpisah, sehingga sebutkan bahasa yang diharapkan di dalam prompt tersebut ketika konteks bahasa maupun skenario dibutuhkan. Pertahankan transkrip dalam bahasa yang benar-benar diucapkan, alih-alih memperlakukan transkripsi sebagai instruksi terjemahan.\n\nModel juga muncul dalam alur transkripsi AssemblyAI lainnya, sementara persyaratan klip singkat dan bidang hasil profil Sync merupakan milik antarmuka tertentu ini. Alur Dictation pembuatnya menambahkan tahap pembersihan teks terpisah; transkrip dan pesan yang ditulis ulang merupakan artefak berbeda. Pertahankan ucapan yang dikenali jika langkah pengeditan atau perangkuman berikutnya menghasilkan versi yang dibersihkan, agar kata-kata asli tetap tersedia untuk perbandingan.\n\nHasil yang berguna meliputi pesan suara yang ditranskripsikan, giliran lengkap untuk asisten, teks audio singkat yang dapat dicari atau daftar kata berwaktu untuk antarmuka tinjauan. Periksa kata-kata penentu terhadap rekaman, pertahankan setiap penyelarasan yang hilang dan jaga klip tetap terhubung dengan teks yang dikembalikan. Hasil pengenalan memberi langkah aplikasi berikutnya transkripsi yang didukung sumber; menjawab permintaan atau mengedit pesan menjadi bagian alur di sekitarnya.",
    "alias_of": null,
    "aliases": [],
    "author": "AssemblyAI",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00025",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00025",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "Informasi lengkap harga konfigurasi tersedia di bagian detail."
      }
    ],
    "ctx": null,
    "formats": [
      "transcriptions"
    ],
    "id": "assemblyai/universal-3-5-pro",
    "input": [
      "audio"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "Isi JSON atau ID model kanonis eksplisit tidak valid.",
                "http_status": 400,
                "recovery": "Simpan respons dan perbaiki bidang permintaan yang ditunjukkan.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Kunci API Ailoot tidak valid.",
                "http_status": 401,
                "recovery": "Gunakan kunci API Ailoot Anda yang diotorisasi.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Grup kunci tidak mengizinkan metode ini.",
                "http_status": 403,
                "recovery": "Simpan rincian kesalahan yang dikembalikan.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Metode yang dipilih tidak memiliki rute yang diizinkan.",
                "http_status": 404,
                "recovery": "Simpan rincian kesalahan yang dikembalikan.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Tarif yang diterima tidak dapat memperoleh jumlah atau batas masukan yang diwajibkan.",
                "http_status": 422,
                "recovery": "Simpan respons; gunakan representasi masukan yang diwajibkan oleh tarif yang diterima.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Penyimpanan, rute, harga metode, atau pencadangan dana yang diperlukan tidak tersedia.",
                "http_status": 503,
                "recovery": "Simpan respons asli secara utuh. Pencadangan dana yang belum pasti tidak mengizinkan pengiriman ulang.",
                "type": null
              },
              {
                "code": null,
                "condition": "Hasil awal, penggunaan, atau penyelesaian tagihan perlu diperiksa.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Simpan ID permintaan aktual dan respons asli. Baca catatan yang dimiliki yang sudah ada; jangan kirim ulang pembuatan.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Simpan X-Client-Request-ID aktual dan respons secara utuh. Baca aset asli yang dimiliki beserta URL konten bertanda tangan yang persis; jangan pernah kirim ulang pembuatan yang statusnya belum pasti."
            },
            "outputs": {
              "all_results": "Simpan respons dan header secara lengkap, setiap keluaran aktual, identifikator asli yang dikembalikan, dan semua kolom usage. Pulihkan operasi asli tanpa mengirim ulang permintaan pembuatan.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Isi respons asli secara utuh, status, dan header yang diteruskan. Handler ini tidak menambahkan struktur JSON universal, bidang teks, atau pembungkus tugas."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "assemblyai/universal-3-5-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "assemblyai/universal-3-5-pro"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "assemblyai/universal-3-5-pro"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Contoh ini membaca berkas PCM WAV Anda yang benar-benar ada dan tidak kosong, mengodekan seluruh byte berkas sebagai base64, lalu mengirim input_audio.format dengan nilai wav."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id persis dari catatan media milik Ailoot yang sudah ada",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00025",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00025",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'assemblyai/universal-3-5-pro', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Transkripsi",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.00025
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.00025",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.00025",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00025",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.00025",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "assemblyai/universal-3-5-pro",
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "AssemblyAI: Universal-3.5 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Universal-3.5 Pro adalah model ucapan-ke-teks AssemblyAI untuk mengubah klip audio singkat menjadi transkrip lengkap dalam satu respons. Profil Sync-nya menambahkan tingkat keyakinan kata, stempel waktu kata opsional, petunjuk kosakata dan konteks percakapan sebelumnya untuk masukan suara serta alur push-to-talk."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Universal-3.5 Pro adalah model ucapan-ke-teks AssemblyAI untuk mengubah klip audio singkat menjadi transkrip lengkap dalam satu respons. Profil Sync-nya menambahkan tingkat keyakinan kata, stempel waktu kata opsional, petunjuk kosakata dan konteks percakapan sebelumnya untuk masukan suara serta alur push-to-talk.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "6267a9b3020d23c511e25f447209a99c56995ec89e1670e938ef8738847682d8",
    "renderer_sha256": "2a0471475a29000c23db326ca1e315df73dee7524f6bc2907818ee3458813f2d"
  },
  "sourceRevision": "d4d0389c66574d58fd670f9e53ef3b494ee2171c6134a0bac68591ca2b2a2fee"
}
