{
  "aboutHtml": "<p>Veo 3.1 Fast adalah profil generasi video cepat Google untuk adegan pendek yang dijelaskan dalam teks atau ditetapkan oleh gambar. Model menggabungkan shot visual dengan suara yang dihasilkan dan mendukung bingkai pembuka serta penutup berpanduan. Gunakan untuk mengembangkan konsep adegan, menyiapkan variasi kreatif pendek, atau membuat segmen audiovisual ringkas dengan aksi dan arah visual jelas.</p><p>Bangun brief di sekitar subjek, aksi, dan latar. Lalu tambahkan pembingkaian, gerakan kamera, pencahayaan, dan pengolahan visual yang membuat shot berguna. Brief produk orisinal dapat menampilkan lampu keramik kecil di meja kayu, dengan kamera mendekat perlahan saat lampu menyala dan suara sakelar pelan menyertai aksi. Subjek dan peristiwa terlihat menjelaskan gambar; arahan suara menjelaskan pengalaman mendengar.</p><p>Tulis arahan adegan dalam bahasa Inggris, sebagaimana ditentukan oleh profil prompt produsen. Jaga aksi utama sebanding dengan panjang klip dan bedakan gerakan kamera dari gerakan subjek. Pandangan pembuka lebar, close-up tekstur, dan shot mengikuti objek bergerak menjawab pertanyaan kreatif berbeda. Pilih pandangan yang menyampaikan detail yang dimaksud, alih-alih menggabungkan arahan kamera yang tidak berkaitan dalam satu shot pendek.</p><p>Untuk adegan berbasis gambar, siapkan gambar awal jelas yang sudah menetapkan tampilan dan komposisi. Brief gerakan kemudian dapat berfokus pada peristiwa berikutnya. Bingkai akhir dapat memberi tujuan visual bagi transisi. Jaga detail subjek penting dan gaya tetap padu antarbingkai, atau jelaskan transformasi yang dimaksud secara eksplisit. Tinjau transisi itu sendiri serta gambar pembuka dan akhirnya.</p><p>Profil produksi pembuat mendukung klip empat, enam, atau delapan detik, pembingkaian lanskap 16:9 atau potret 9:16, dan hingga empat keluaran video per prompt. Keluaran Fast berupa 720p atau 1080p, pada 24 bingkai per detik, dalam format MP4. Profil berbasis gambar menerima JPEG atau PNG, mencantumkan ukuran gambar masukan maksimum 20 MB, dan mendukung konfigurasi masukan 720p/1080p. Siapkan komposisi untuk orientasi yang dimaksud dan jaga masukan dalam batas gambar itu.</p><p>Suara dapat menjadi bagian adegan yang dihasilkan. Jelaskan dialog lisan, suara lingkungan, atau efek relevan bersama aksi terlihat, dengan menentukan subjek yang harus berbicara dan peristiwa yang harus menghasilkan suara. Jaga dialog cukup pendek untuk penampilan yang dimaksud dan bedakan dari suasana atau musik. Generasi audio mengikuti brief adegan tertulis; rekaman audio bukan salah satu masukan normal yang didokumentasikan untuk profil ini.</p><p>Profil produksi saat ini juga mencantumkan generasi dengan referensi aset dan perpanjangan video. Referensi memandu tampilan subjek atau objek, sementara bingkai batas memandu komposisi pembuka dan penutup. Pilih materi referensi dengan peran jelas dalam adegan, alih-alih menganggap setiap gambar sebagai kendali yang saling menggantikan. Untuk klip lanjutan, pilih alur perpanjangan terpisah dan jelaskan kejadian sesudah aksi yang sudah ada; penanganan masukannya berbeda dari shot baru berbasis teks.</p><p>Deskripsi negatif dapat menentukan konten atau pengolahan visual yang ingin dihindari. Jaga prompt utama berfokus pada adegan yang diinginkan dan buat pengecualian khusus tugas. Untuk variasi produk, pertahankan subjek dan pembingkaian sambil mengubah satu detail, seperti arah cahaya atau pengolahan material. Simpan pengaturan dan kumpulan referensi ketika membandingkan hasil agar perbedaan kreatif tetap jelas.</p><p>Veo 3.1 Fast dan profil Veo 3.1 reguler tetap merupakan pilihan berbeda. Keluaran produksi Fast yang didokumentasikan adalah 720p/1080p; profil reguler juga mencantumkan 4K. Simpan edisi pilihan dan pengaturan keluarannya bersama artefak, alih-alih menganggap pengenal Preview atau versi Veo lain otomatis sinonim profil produksi ini.</p><p>Alur membuat operasi generasi dan menyediakan berkas video yang dikembalikan setelah selesai. Simpan setiap keluaran sebenarnya yang dipilih untuk tinjauan, bersama brief, bingkai sumber, dan pengaturan relevan. Pengenal operasi adalah catatan generasi; artefak MP4 selesai adalah yang dapat diputar dan digunakan dalam suntingan. Pertahankan metadata asal-usul konten yang diberikan bersama video.</p><p>Tinjau tampilan subjek, aksi yang diminta, pengolahan kamera, dan suara sepanjang klip. Periksa kejelasan dialog dan hubungan suara dengan peristiwa terlihat sebelum menggunakannya dalam komposisi lebih panjang. Hasil berguna dapat berupa shot konsep, penyingkapan produk, atau segmen narasi pendek, dengan judul, transisi, dan penyuntingan lain ditambahkan kemudian dalam alur produksi sekeliling.</p>",
  "aboutText": "Veo 3.1 Fast adalah profil generasi video cepat Google untuk adegan pendek yang dijelaskan dalam teks atau ditetapkan oleh gambar. Model menggabungkan shot visual dengan suara yang dihasilkan dan mendukung bingkai pembuka serta penutup berpanduan. Gunakan untuk mengembangkan konsep adegan, menyiapkan variasi kreatif pendek, atau membuat segmen audiovisual ringkas dengan aksi dan arah visual jelas.\n\nBangun brief di sekitar subjek, aksi, dan latar. Lalu tambahkan pembingkaian, gerakan kamera, pencahayaan, dan pengolahan visual yang membuat shot berguna. Brief produk orisinal dapat menampilkan lampu keramik kecil di meja kayu, dengan kamera mendekat perlahan saat lampu menyala dan suara sakelar pelan menyertai aksi. Subjek dan peristiwa terlihat menjelaskan gambar; arahan suara menjelaskan pengalaman mendengar.\n\nTulis arahan adegan dalam bahasa Inggris, sebagaimana ditentukan oleh profil prompt produsen. Jaga aksi utama sebanding dengan panjang klip dan bedakan gerakan kamera dari gerakan subjek. Pandangan pembuka lebar, close-up tekstur, dan shot mengikuti objek bergerak menjawab pertanyaan kreatif berbeda. Pilih pandangan yang menyampaikan detail yang dimaksud, alih-alih menggabungkan arahan kamera yang tidak berkaitan dalam satu shot pendek.\n\nUntuk adegan berbasis gambar, siapkan gambar awal jelas yang sudah menetapkan tampilan dan komposisi. Brief gerakan kemudian dapat berfokus pada peristiwa berikutnya. Bingkai akhir dapat memberi tujuan visual bagi transisi. Jaga detail subjek penting dan gaya tetap padu antarbingkai, atau jelaskan transformasi yang dimaksud secara eksplisit. Tinjau transisi itu sendiri serta gambar pembuka dan akhirnya.\n\nProfil produksi pembuat mendukung klip empat, enam, atau delapan detik, pembingkaian lanskap 16:9 atau potret 9:16, dan hingga empat keluaran video per prompt. Keluaran Fast berupa 720p atau 1080p, pada 24 bingkai per detik, dalam format MP4. Profil berbasis gambar menerima JPEG atau PNG, mencantumkan ukuran gambar masukan maksimum 20 MB, dan mendukung konfigurasi masukan 720p/1080p. Siapkan komposisi untuk orientasi yang dimaksud dan jaga masukan dalam batas gambar itu.\n\nSuara dapat menjadi bagian adegan yang dihasilkan. Jelaskan dialog lisan, suara lingkungan, atau efek relevan bersama aksi terlihat, dengan menentukan subjek yang harus berbicara dan peristiwa yang harus menghasilkan suara. Jaga dialog cukup pendek untuk penampilan yang dimaksud dan bedakan dari suasana atau musik. Generasi audio mengikuti brief adegan tertulis; rekaman audio bukan salah satu masukan normal yang didokumentasikan untuk profil ini.\n\nProfil produksi saat ini juga mencantumkan generasi dengan referensi aset dan perpanjangan video. Referensi memandu tampilan subjek atau objek, sementara bingkai batas memandu komposisi pembuka dan penutup. Pilih materi referensi dengan peran jelas dalam adegan, alih-alih menganggap setiap gambar sebagai kendali yang saling menggantikan. Untuk klip lanjutan, pilih alur perpanjangan terpisah dan jelaskan kejadian sesudah aksi yang sudah ada; penanganan masukannya berbeda dari shot baru berbasis teks.\n\nDeskripsi negatif dapat menentukan konten atau pengolahan visual yang ingin dihindari. Jaga prompt utama berfokus pada adegan yang diinginkan dan buat pengecualian khusus tugas. Untuk variasi produk, pertahankan subjek dan pembingkaian sambil mengubah satu detail, seperti arah cahaya atau pengolahan material. Simpan pengaturan dan kumpulan referensi ketika membandingkan hasil agar perbedaan kreatif tetap jelas.\n\nVeo 3.1 Fast dan profil Veo 3.1 reguler tetap merupakan pilihan berbeda. Keluaran produksi Fast yang didokumentasikan adalah 720p/1080p; profil reguler juga mencantumkan 4K. Simpan edisi pilihan dan pengaturan keluarannya bersama artefak, alih-alih menganggap pengenal Preview atau versi Veo lain otomatis sinonim profil produksi ini.\n\nAlur membuat operasi generasi dan menyediakan berkas video yang dikembalikan setelah selesai. Simpan setiap keluaran sebenarnya yang dipilih untuk tinjauan, bersama brief, bingkai sumber, dan pengaturan relevan. Pengenal operasi adalah catatan generasi; artefak MP4 selesai adalah yang dapat diputar dan digunakan dalam suntingan. Pertahankan metadata asal-usul konten yang diberikan bersama video.\n\nTinjau tampilan subjek, aksi yang diminta, pengolahan kamera, dan suara sepanjang klip. Periksa kejelasan dialog dan hubungan suara dengan peristiwa terlihat sebelum menggunakannya dalam komposisi lebih panjang. Hasil berguna dapat berupa shot konsep, penyingkapan produk, atau segmen narasi pendek, dengan judul, transisi, dan penyuntingan lain ditambahkan kemudian dalam alur produksi sekeliling.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "f0debd7c99bdd7c2ecb408e360f0401c98933be53f6775b247e0edf973ccf677",
    "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\">G</span><h2 id=\"sheet-title\">Google: Veo 3.1 Fast</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Tutup\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/veo-3.1-fast</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|videos|/v1/videos|google%2Fveo-3.1-fast\">Video</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\">Veo 3.1 Fast adalah model video Google untuk adegan pendek berbasis teks atau gambar dengan suara yang dihasilkan. Profil produksinya mengembalikan klip MP4 berdurasi empat, enam, atau delapan detik pada 24 fps, dengan keluaran 720p atau 1080p serta bingkai pembuka atau penutup berpanduan.</p><dl class=\"card-io\" data-card-io><div><dt>Masukan yang diterima</dt><dd>Teks</dd></div><div><dt>Hasil</dt><dd>Video</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>Veo 3.1 Fast adalah profil generasi video cepat Google untuk adegan pendek yang dijelaskan dalam teks atau ditetapkan oleh gambar. Model menggabungkan shot visual dengan suara yang dihasilkan dan mendukung bingkai pembuka serta penutup berpanduan. Gunakan untuk mengembangkan konsep adegan, menyiapkan variasi kreatif pendek, atau membuat segmen audiovisual ringkas dengan aksi dan arah visual jelas.</p><p>Bangun brief di sekitar subjek, aksi, dan latar. Lalu tambahkan pembingkaian, gerakan kamera, pencahayaan, dan pengolahan visual yang membuat shot berguna. Brief produk orisinal dapat menampilkan lampu keramik kecil di meja kayu, dengan kamera mendekat perlahan saat lampu menyala dan suara sakelar pelan menyertai aksi. Subjek dan peristiwa terlihat menjelaskan gambar; arahan suara menjelaskan pengalaman mendengar.</p><p>Tulis arahan adegan dalam bahasa Inggris, sebagaimana ditentukan oleh profil prompt produsen. Jaga aksi utama sebanding dengan panjang klip dan bedakan gerakan kamera dari gerakan subjek. Pandangan pembuka lebar, close-up tekstur, dan shot mengikuti objek bergerak menjawab pertanyaan kreatif berbeda. Pilih pandangan yang menyampaikan detail yang dimaksud, alih-alih menggabungkan arahan kamera yang tidak berkaitan dalam satu shot pendek.</p><p>Untuk adegan berbasis gambar, siapkan gambar awal jelas yang sudah menetapkan tampilan dan komposisi. Brief gerakan kemudian dapat berfokus pada peristiwa berikutnya. Bingkai akhir dapat memberi tujuan visual bagi transisi. Jaga detail subjek penting dan gaya tetap padu antarbingkai, atau jelaskan transformasi yang dimaksud secara eksplisit. Tinjau transisi itu sendiri serta gambar pembuka dan akhirnya.</p><p>Profil produksi pembuat mendukung klip empat, enam, atau delapan detik, pembingkaian lanskap 16:9 atau potret 9:16, dan hingga empat keluaran video per prompt. Keluaran Fast berupa 720p atau 1080p, pada 24 bingkai per detik, dalam format MP4. Profil berbasis gambar menerima JPEG atau PNG, mencantumkan ukuran gambar masukan maksimum 20 MB, dan mendukung konfigurasi masukan 720p/1080p. Siapkan komposisi untuk orientasi yang dimaksud dan jaga masukan dalam batas gambar itu.</p><p>Suara dapat menjadi bagian adegan yang dihasilkan. Jelaskan dialog lisan, suara lingkungan, atau efek relevan bersama aksi terlihat, dengan menentukan subjek yang harus berbicara dan peristiwa yang harus menghasilkan suara. Jaga dialog cukup pendek untuk penampilan yang dimaksud dan bedakan dari suasana atau musik. Generasi audio mengikuti brief adegan tertulis; rekaman audio bukan salah satu masukan normal yang didokumentasikan untuk profil ini.</p><p>Profil produksi saat ini juga mencantumkan generasi dengan referensi aset dan perpanjangan video. Referensi memandu tampilan subjek atau objek, sementara bingkai batas memandu komposisi pembuka dan penutup. Pilih materi referensi dengan peran jelas dalam adegan, alih-alih menganggap setiap gambar sebagai kendali yang saling menggantikan. Untuk klip lanjutan, pilih alur perpanjangan terpisah dan jelaskan kejadian sesudah aksi yang sudah ada; penanganan masukannya berbeda dari shot baru berbasis teks.</p><p>Deskripsi negatif dapat menentukan konten atau pengolahan visual yang ingin dihindari. Jaga prompt utama berfokus pada adegan yang diinginkan dan buat pengecualian khusus tugas. Untuk variasi produk, pertahankan subjek dan pembingkaian sambil mengubah satu detail, seperti arah cahaya atau pengolahan material. Simpan pengaturan dan kumpulan referensi ketika membandingkan hasil agar perbedaan kreatif tetap jelas.</p><p>Veo 3.1 Fast dan profil Veo 3.1 reguler tetap merupakan pilihan berbeda. Keluaran produksi Fast yang didokumentasikan adalah 720p/1080p; profil reguler juga mencantumkan 4K. Simpan edisi pilihan dan pengaturan keluarannya bersama artefak, alih-alih menganggap pengenal Preview atau versi Veo lain otomatis sinonim profil produksi ini.</p><p>Alur membuat operasi generasi dan menyediakan berkas video yang dikembalikan setelah selesai. Simpan setiap keluaran sebenarnya yang dipilih untuk tinjauan, bersama brief, bingkai sumber, dan pengaturan relevan. Pengenal operasi adalah catatan generasi; artefak MP4 selesai adalah yang dapat diputar dan digunakan dalam suntingan. Pertahankan metadata asal-usul konten yang diberikan bersama video.</p><p>Tinjau tampilan subjek, aksi yang diminta, pengolahan kamera, dan suara sepanjang klip. Periksa kejelasan dialog dan hubungan suara dengan peristiwa terlihat sebelum menggunakannya dalam komposisi lebih panjang. Hasil berguna dapat berupa shot konsep, penyingkapan produk, atau segmen narasi pendek, dengan judul, transisi, dan penyuntingan lain ditambahkan kemudian dalam alur produksi sekeliling.</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 · Video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Masukan</dt><dd><code>text</code></dd></div><div><dt>Keluaran</dt><dd><code>video</code></dd></div><div><dt>Format keluaran</dt><dd>mp4</dd></div><div><dt>Jumlah keluaran</dt><dd>Hingga 4 keluarans</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Kolom</th><th>Jenis</th><th>Persyaratan</th><th>Nilai &amp; batasan</th><th>Bawaan</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>google/veo-3.1-fast</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">prompt</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>Byte UTF-8 maksimum: 10.000</div><div>Wajib berisi karakter selain spasi: Ya</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>integer</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>4, 6, 8</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">resolution</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>720p</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">aspect_ratio</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>16:9, 9:16</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>boolean</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>false, true</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinasi bahan masukan</summary><p class=\"note-s\"><b>Teks ke video</b> · Wajib: prompt</p></details><details class=\"note-s\" data-method-contract><summary>Parameter metode dan siklus hidup</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrak</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>model, prompt, duration, resolution, aspect_ratio, generate_audio</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>additional_properties</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>false</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>parameters</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>{&quot;name&quot;:&quot;model&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;enum&quot;:[&quot;google/veo-3.1-fast&quot;]}, {&quot;name&quot;:&quot;prompt&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;non_whitespace&quot;:true,&quot;max_utf8_bytes&quot;:10000}, {&quot;name&quot;:&quot;duration&quot;,&quot;type&quot;:&quot;integer&quot;,&quot;required&quot;:true,&quot;enum&quot;:[4,6,8]}, {&quot;name&quot;:&quot;resolution&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;enum&quot;:[&quot;720p&quot;]}, {&quot;name&quot;:&quot;aspect_ratio&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;enum&quot;:[&quot;16:9&quot;,&quot;9:16&quot;]}, {&quot;name&quot;:&quot;generate_audio&quot;,&quot;type&quot;:&quot;boolean&quot;,&quot;required&quot;:true,&quot;enum&quot;:[false,true]}</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>text</td></tr></tbody></table></div><p>Alias metode: <code>/v1/videos/generations</code>, <code>/videos</code>, <code>/videos/generations</code></p><p>Siklus hidup: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}/content</code></p><p class=\"note-s\">Simpan respons secara utuh dan ID asli yang dikembalikan.</p><p class=\"note-s\">Jangan pernah kirim ulang pembuatan yang statusnya tidak diketahui.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Paket</h3><div class=\"card-result-process\" data-billing-basis><h5>Cara menghitung biaya akhir</h5><p class=\"note-s\">Tarif yang ditampilkan memperkirakan biaya sebelum pembuatan. Biaya akhir dihitung dari biaya yang tercatat untuk proses pembuatan awal. Durasi keluaran yang terukur dan kuantitas perkiraan bukanlah kuantitas akhir yang ditagihkan.</p></div><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>Perkiraan tarif untuk perbandingan</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>Jumlah perkiraan</th><th>Buat audio</th><th>Resolusi</th><th>Satuan penagihan</th><th>Kondisi penagihan</th><th>Biaya</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>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=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>—</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>—</td><td data-cell-label=\"Resolusi\"><span class=\"card-cell-label\">Resolusi</span>—</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>—</td><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>—</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Masukan · Token masukan · Perkiraan hanya untuk perbandingan</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Keluaran · Token keluaran · Perkiraan hanya untuk perbandingan</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Pembacaan cache · Perkiraan hanya untuk perbandingan</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Penulisan cache · Perkiraan hanya untuk perbandingan</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Penulisan cache, 1 jam · Perkiraan hanya untuk perbandingan</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>Harga video</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>—</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>—</td><td data-cell-label=\"Resolusi\"><span class=\"card-cell-label\">Resolusi</span>—</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per detik video</td><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>suara: with_audio</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Harga video · Perkiraan hanya untuk perbandingan</span> <b>$0.24</b> <span class=\"price-unit\">per detik video</span></div></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Harga video</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>—</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>—</td><td data-cell-label=\"Resolusi\"><span class=\"card-cell-label\">Resolusi</span>—</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per detik video</td><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>suara: with_audio; resolusi: 4k</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Harga video · Perkiraan hanya untuk perbandingan</span> <b>$0.6</b> <span class=\"price-unit\">per detik video</span></div></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Ultra</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>Konfigurasi yang diminta; hanya estimasi.</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>Dengan audio</td><td data-cell-label=\"Resolusi\"><span class=\"card-cell-label\">Resolusi</span>720p</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per detik video keluaran</td><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>—</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Perkiraan detik video keluaran · Perkiraan hanya untuk perbandingan</span> <b>$0.2</b> <span class=\"price-unit\">per detik video keluaran</span></div><p class=\"note-s\">Tarif yang ditampilkan memperkirakan biaya sebelum pembuatan. Biaya akhir dihitung berdasarkan biaya yang dicatat untuk pembuatan asli. Durasi fisik video bukan jumlah yang ditagihkan.</p></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Harga video</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>—</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>—</td><td data-cell-label=\"Resolusi\"><span class=\"card-cell-label\">Resolusi</span>—</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per detik video</td><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>suara: without_audio</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Harga video · Perkiraan hanya untuk perbandingan</span> <b>$0.2</b> <span class=\"price-unit\">per detik video</span></div></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Harga video</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>—</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>—</td><td data-cell-label=\"Resolusi\"><span class=\"card-cell-label\">Resolusi</span>—</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per detik video</td><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>audio: without_audio; resolusi: 4k</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Harga video · Perkiraan hanya untuk perbandingan</span> <b>$0.5</b> <span class=\"price-unit\">per detik video</span></div></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Ultra</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>Konfigurasi yang diminta; hanya estimasi.</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>Tanpa audio</td><td data-cell-label=\"Resolusi\"><span class=\"card-cell-label\">Resolusi</span>720p</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per detik video keluaran</td><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>—</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Perkiraan detik video keluaran · Perkiraan hanya untuk perbandingan</span> <b>$0.16</b> <span class=\"price-unit\">per detik video keluaran</span></div><p class=\"note-s\">Tarif yang ditampilkan memperkirakan biaya sebelum pembuatan. Tagihan akhir dihitung dari biaya yang dicatat untuk pembuatan awal. Durasi fisik video bukan kuantitas yang ditagihkan.</p></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Perkiraan biaya pembuatan</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>estimasi satu kali pembuatan</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>—</td><td data-cell-label=\"Resolusi\"><span class=\"card-cell-label\">Resolusi</span>—</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>—</td><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>—</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Perkiraan biaya pembuatan · Perkiraan hanya untuk perbandingan</span> <b>$0.64</b> <span class=\"price-unit\">estimasi sebelum pembuatan</span></div><p class=\"note-s\">Perkiraan ini bukan biaya tambahan maupun tarif tetap untuk proses pembuatan yang telah selesai.</p></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><div data-declared-reference-pricing><h4>Detail tarif referensi</h4><p class=\"note-s\">Jadwal referensi tingkat model tidak mengubah pemilihan metode, estimasi harga, atau biaya. Biaya aktif menggunakan tarif metode Ailoot yang dipilih.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Referensi harga konfigurasi video</summary><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>Kondisi penagihan</th><th>Biaya</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Harga video</th><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>suara: with_audio</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Harga video</span> <b>$0.24</b> <span class=\"price-unit\">per detik video</span></div><p class=\"note-s\">Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.</p></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Harga video</th><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>suara: with_audio; resolusi: 4k</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Harga video</span> <b>$0.6</b> <span class=\"price-unit\">per detik video</span></div><p class=\"note-s\">Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.</p></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Harga video</th><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>suara: without_audio</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Harga video</span> <b>$0.2</b> <span class=\"price-unit\">per detik video</span></div><p class=\"note-s\">Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.</p></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Harga video</th><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>suara: with_audio; resolusi: 720p</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Harga video</span> <b>$0.2</b> <span class=\"price-unit\">per detik video</span></div><p class=\"note-s\">Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.</p></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Harga video</th><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>audio: without_audio; resolusi: 4k</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Harga video</span> <b>$0.5</b> <span class=\"price-unit\">per detik video</span></div><p class=\"note-s\">Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.</p></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Harga video</th><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>suara: without_audio; resolusi: 720p</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Harga video</span> <b>$0.16</b> <span class=\"price-unit\">per detik video</span></div><p class=\"note-s\">Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Contoh permintaan</h3><h4>Ailoot Ultra · Video</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-1508-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1508-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · profil yang persis sesuai konfigurasi</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-1508-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1508-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;google/veo-3.1-fast&quot;, &quot;prompt&quot;: &quot;a calm greenhouse&quot;, &quot;duration&quot;: 6, &quot;resolution&quot;: &quot;720p&quot;, &quot;aspect_ratio&quot;: &quot;16:9&quot;, &quot;generate_audio&quot;: true}&#39;)\nPath(&#39;request.json&#39;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\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 result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\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 · Video</h4><p class=\"note-s\">mp4</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/videos/generations/{request_id}/content</code></li></ul><h5>Periksa status tugas</h5><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-1509-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1509-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET status operasi asli</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-1509-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1509-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_STATUS_URL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nif not isinstance(r.get(&#39;id&#39;),str) or not r[&#39;id&#39;]:raise SystemExit(&#39;Keep the original response and headers for reconciliation; no returned ID&#39;)\nPath(&#39;status-url.txt&#39;).write_text(&#39;https://api.ailoot.ai/v1/videos/&#39;+quote(r[&#39;id&#39;],safe=&#39;&#39;))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error &quot;$(cat status-url.txt)&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div><details class=\"card-about\"><summary>Pembacaan konten lain</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kode\"><button class=\"cg-tab\" id=\"model-code-1510-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1510-panel-0\" aria-selected=\"true\" tabindex=\"0\">Simpan setiap keluaran selesai yang menjadi milik Anda</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-1510-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1510-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nif r.get(&#39;status&#39;)!=&#39;completed&#39;:raise SystemExit(&#39;Keep the original ID and read its status; never recreate an unknown job&#39;)\nif not isinstance(r.get(&#39;data&#39;),list) or not r[&#39;data&#39;]:raise SystemExit(&#39;Keep the complete original status; no completed outputs supplied&#39;)\nurls=[]\nfor i,u in enumerate(r.get(&#39;data&#39;,[])):\n    if not isinstance(u,str):raise SystemExit(&#39;Keep the original response; unexpected asset shape&#39;)\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Simpan semua hasil yang selesai</h5><p class=\"note-s\">Simpan setiap video yang selesai atau berkas yang dikembalikan; ambil setiap URL aset yang benar-benar dikembalikan.</p><p class=\"note-s\">Simpan setiap URL bertanda tangan milik Ailoot dalam data[] yang selesai dan metadata status secara utuh. Simpan setiap keluaran, termasuk audio yang dibuatnya. Trek audio AAC yang valid dapat tetap ada meskipun generate_audio=false; simpan MP4 asli secara utuh termasuk audio tersebut.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asli perlu diperiksa</h5><p class=\"note-s\">Baca tugas awal yang sudah ada; jangan pernah kirim ulang pengiriman yang statusnya tidak diketahui.</p></div><p class=\"note-s\">Keluaran maksimum: 4.</p><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><th>Arti</th></tr></thead><tbody><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td><td data-cell-label=\"Arti\"><span class=\"card-cell-label\">Arti</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">object</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td><td data-cell-label=\"Arti\"><span class=\"card-cell-label\">Arti</span>—</td></tr><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>string</td><td data-cell-label=\"Arti\"><span class=\"card-cell-label\">Arti</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td><td data-cell-label=\"Arti\"><span class=\"card-cell-label\">Arti</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>signed content URL</td><td data-cell-label=\"Arti\"><span class=\"card-cell-label\">Arti</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">charge_pending_check</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>boolean</td><td data-cell-label=\"Arti\"><span class=\"card-cell-label\">Arti</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">error.code</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td><td data-cell-label=\"Arti\"><span class=\"card-cell-label\">Arti</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">error.message</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td><td data-cell-label=\"Arti\"><span class=\"card-cell-label\">Arti</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">operation_id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td><td data-cell-label=\"Arti\"><span class=\"card-cell-label\">Arti</span>Respons status/konten awal HTTP503 result_pending_check: ID video publik awal yang sama sebagai id.</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">error.type</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td><td data-cell-label=\"Arti\"><span class=\"card-cell-label\">Arti</span>server_error pada HTTP503 result_pending_check.</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>Pembacaan isi permintaan mentah gagal sebelum penguraian profil video</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan respons yang dikembalikan dan perbaiki isi permintaan yang tidak dapat dibaca.</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>Penguraian profil video persis gagal, atau profil lengkap yang telah diurai tidak memiliki kartu harga persis yang siap digunakan</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan respons; gunakan profil lengkap dan persis yang diizinkan beserta kartu harga yang dipublikasikan untuknya. Cabang ini dijalankan sebelum pengiriman ke penyedia.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Konten hasil awal belum tersedia</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Periksa ID awal yang dikembalikan secara berkala dan patuhi Retry-After.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span><code>server_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Respons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>GET status/konten awal: tugas belum dipublikasikan, tugas awal tidak berstatus failed/cancelled/expired, dan status lokal unknown atau status tugas awal completed.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan id dan operation_id asli (ID video publik yang sama), respons, dan header; baca hanya status/konten awal. Jangan pernah kirim permintaan pembuatan baru.</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=google%2Fveo-3.1-fast&amp;route=Ultra&amp;caller=google%2Fveo-3.1-fast&amp;fmt=videos\"><code>google/veo-3.1-fast</code></a></span></p><h4>Alias jalur metode</h4><p class=\"note-s\"><code>/v1/videos/generations</code>, <code>/videos</code>, <code>/videos/generations</code></p><h4>ID pemanggil terkait</h4><p class=\"note-s\"><a href=\"#m=google%2Fveo-3.1-fast&amp;route=Ultra&amp;caller=google%2Fveo-3.1-fast&amp;fmt=videos\"><code>google/veo-3.1-fast</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/veo-3.1-fast",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "google/veo-3.1-fast",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|google%2Fveo-3.1-fast",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Tarif yang ditampilkan memperkirakan biaya sebelum pembuatan. Biaya akhir dihitung dari biaya yang tercatat untuk proses pembuatan awal. Durasi keluaran yang terukur dan kuantitas perkiraan bukanlah kuantitas akhir yang ditagihkan.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every completed data[] signed owned URL and the full status metadata. Save every output, including its generated audio.",
            "errors": [
              {
                "code": null,
                "condition": "Pembacaan isi permintaan mentah gagal sebelum penguraian profil video",
                "http_status": 400,
                "recovery": "Simpan respons yang dikembalikan dan perbaiki isi permintaan yang tidak dapat dibaca.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Penguraian profil video persis gagal, atau profil lengkap yang telah diurai tidak memiliki kartu harga persis yang siap digunakan",
                "http_status": 422,
                "message": "The complete video request cannot be priced",
                "recovery": "Simpan respons; gunakan profil lengkap dan persis yang diizinkan beserta kartu harga yang dipublikasikan untuknya. Cabang ini dijalankan sebelum pengiriman ke penyedia.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Konten hasil awal belum tersedia",
                "http_status": 409,
                "recovery": "Periksa ID awal yang dikembalikan secara berkala dan patuhi Retry-After.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan.",
                "type": "server_error"
              },
              {
                "absent_fields": [
                  "status",
                  "object",
                  "model",
                  "data"
                ],
                "code": "result_pending_check",
                "condition": "GET status/konten awal: tugas belum dipublikasikan, tugas awal tidak berstatus failed/cancelled/expired, dan status lokal unknown atau status tugas awal completed.",
                "friendly_fields": "error.reason=result_pending_check,error.param=null; error.operation_id and error.request_id when the existing context supplies them. error.message is rewritten/localized.",
                "headers": {
                  "Retry-After": null,
                  "X-Should-Retry": "false"
                },
                "http_status": 503,
                "recovery": "Simpan id dan operation_id asli (ID video publik yang sama), respons, dan header; baca hanya status/konten awal. Jangan pernah kirim permintaan pembuatan baru.",
                "response_fields": {
                  "charge_pending_check": true,
                  "error.code": "result_pending_check",
                  "error.type": "server_error",
                  "id": "original public video ID",
                  "operation_id": "same as id"
                },
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default0"
                  }
                },
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET. On HTTP503 result_pending_check from original status/content GET, operation_id equals id: use that same original public video ID for polling. Do not substitute unrelated operation IDs from other responses.",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Baca tugas awal yang sudah ada; jangan pernah kirim ulang pengiriman yang statusnya tidak diketahui.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "Use actual returned task_id or original public video id from response/media library. On HTTP503 result_pending_check from original video status/content GET, operation_id equals that original public video id. Do not assume unrelated operation IDs name media tasks.",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "all_results": "Simpan setiap URL bertanda tangan milik Ailoot dalam data[] yang selesai dan metadata status secara utuh. Simpan setiap keluaran, termasuk audio yang dibuatnya. Trek audio AAC yang valid dapat tetap ada meskipun generate_audio=false; simpan MP4 asli secara utuh termasuk audio tersebut.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "signed content URL"
                },
                {
                  "description": null,
                  "name": "charge_pending_check",
                  "type": "boolean"
                },
                {
                  "description": null,
                  "name": "error.code",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "error.message",
                  "type": "string"
                },
                {
                  "description": "Respons status/konten awal HTTP503 result_pending_check: ID video publik awal yang sama sebagai id.",
                  "name": "operation_id",
                  "type": "string"
                },
                {
                  "description": "server_error pada HTTP503 result_pending_check.",
                  "name": "error.type",
                  "type": "string"
                }
              ],
              "format": "mp4",
              "maximum_outputs": 4,
              "status_enum": [
                "in_progress",
                "completed",
                "failed"
              ]
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/veo-3.1-fast"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "max_utf8_bytes": 10000,
                "name": "prompt",
                "non_whitespace": true,
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  4,
                  6,
                  8
                ],
                "enum_known": true,
                "name": "duration",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": true,
                "type": "boolean"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "all fields outside the exact required six-key profile",
              "image or reference inputs",
              "1080p or 4K"
            ]
          },
          "hints": [
            "Simpan respons secara utuh dan ID asli yang dikembalikan.",
            "Jangan pernah kirim ulang pembuatan yang statusnya tidak diketahui."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "parameters": [
              {
                "enum": [
                  "google/veo-3.1-fast"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "max_utf8_bytes": 10000,
                "name": "prompt",
                "non_whitespace": true,
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  4,
                  6,
                  8
                ],
                "name": "duration",
                "required": true,
                "type": "integer"
              },
              {
                "enum": [
                  "720p"
                ],
                "name": "resolution",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "16:9",
                  "9:16"
                ],
                "name": "aspect_ratio",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  false,
                  true
                ],
                "name": "generate_audio",
                "required": true,
                "type": "boolean"
              }
            ],
            "required": [
              "model",
              "prompt",
              "duration",
              "resolution",
              "aspect_ratio",
              "generate_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "content": [
              {
                "http": "GET",
                "parameters": [
                  {
                    "availability": "source_interface",
                    "conditions": "Must be less than the actual returned output count.",
                    "default": 0,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": null,
                    "maximum_known": false,
                    "minimum": 0,
                    "name": "index",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "parameters": [
                  {
                    "availability": "source_interface",
                    "conditions": "Must be less than the actual returned output count.",
                    "default": 0,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": null,
                    "maximum_known": false,
                    "minimum": 0,
                    "name": "index",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET. On HTTP503 result_pending_check from original status/content GET, operation_id equals id: use that same original public video ID for polling. Do not substitute unrelated operation IDs from other responses.",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations",
            "/videos",
            "/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "family": "video",
            "format": "mp4",
            "max_outputs": 4,
            "priced_duration": "Video-file duration is not the billing quantity; final charge follows the actual billed configuration."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio",
              "quoted_unit": "per video second"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.24",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.24",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.6",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.6",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Tarif yang ditampilkan memperkirakan biaya sebelum pembuatan. Biaya akhir dihitung berdasarkan biaya yang dicatat untuk pembuatan asli. Durasi fisik video bukan jumlah yang ditagihkan.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": true,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_720p",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per video second"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.5",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.5",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": false,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.16",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_720p",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.16",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "basis": "Perkiraan ini bukan biaya tambahan maupun tarif tetap untuk proses pembuatan yang telah selesai.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Perkiraan biaya pembuatan",
            "units": [
              {
                "amount": "0.64",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.64",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"google/veo-3.1-fast\", \"prompt\": \"a calm greenhouse\", \"duration\": 6, \"resolution\": \"720p\", \"aspect_ratio\": \"16:9\", \"generate_audio\": true}')\nPath('request.json').write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · exact configured profile",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations",
          "/videos",
          "/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "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": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.24",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.24",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.6",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.6",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": true,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_720p",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.5",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.5",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": false,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.16",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_720p",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.16",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.64",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.64",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "google/veo-3.1-fast",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.24",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_with_audio",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.24",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.6",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_with_audio_4k",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.6",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.2",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_with_audio_720p",
            "label": "Estimated output video second",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "public_unit_label": "per output video second",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_video_second"
          },
          {
            "amount": "0.2",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_without_audio",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.5",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_without_audio_4k",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.5",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.16",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_without_audio_720p",
            "label": "Estimated output video second",
            "native_amount_usd_per_unit": "0.16",
            "native_quantity": 1,
            "public_unit_label": "per output video second",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_video_second"
          },
          {
            "amount": "0.64",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.64",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "google/veo-3.1-fast",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "00d5f61fd7e5bf0b81ee654c010be3ff57158e8868d76f46ea871159c03e9dee",
    "input_html_sha256": "806fe1f12105316db72baf7c882f311c52a7a2a0007795aadf5c48b7a94e3a27",
    "private_audit_sha256": "c7db124bfce7ee4dff569475d17b2e8f756e4be4a56fca7fdeae28ec8ce4bcdc",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/id/google-veo-3-1-fast/",
    "description": "Veo 3.1 Fast adalah model video Google untuk adegan pendek berbasis teks atau gambar dengan suara yang dihasilkan. Profil produksinya mengembalikan klip MP4 berdurasi empat, enam, atau delapan detik pada 24 fps, dengan keluaran 720p atau 1080p serta bingkai pembuka atau penutup berpanduan.",
    "locale": "id",
    "md_url": "https://ailoot.ai/models/id/google-veo-3-1-fast/index.md",
    "title": "Google: Veo 3.1 Fast — Ailoot",
    "url": "https://ailoot.ai/models/id/google-veo-3-1-fast/"
  },
  "rawModel": {
    "about": "Veo 3.1 Fast adalah profil generasi video cepat Google untuk adegan pendek yang dijelaskan dalam teks atau ditetapkan oleh gambar. Model menggabungkan shot visual dengan suara yang dihasilkan dan mendukung bingkai pembuka serta penutup berpanduan. Gunakan untuk mengembangkan konsep adegan, menyiapkan variasi kreatif pendek, atau membuat segmen audiovisual ringkas dengan aksi dan arah visual jelas.\n\nBangun brief di sekitar subjek, aksi, dan latar. Lalu tambahkan pembingkaian, gerakan kamera, pencahayaan, dan pengolahan visual yang membuat shot berguna. Brief produk orisinal dapat menampilkan lampu keramik kecil di meja kayu, dengan kamera mendekat perlahan saat lampu menyala dan suara sakelar pelan menyertai aksi. Subjek dan peristiwa terlihat menjelaskan gambar; arahan suara menjelaskan pengalaman mendengar.\n\nTulis arahan adegan dalam bahasa Inggris, sebagaimana ditentukan oleh profil prompt produsen. Jaga aksi utama sebanding dengan panjang klip dan bedakan gerakan kamera dari gerakan subjek. Pandangan pembuka lebar, close-up tekstur, dan shot mengikuti objek bergerak menjawab pertanyaan kreatif berbeda. Pilih pandangan yang menyampaikan detail yang dimaksud, alih-alih menggabungkan arahan kamera yang tidak berkaitan dalam satu shot pendek.\n\nUntuk adegan berbasis gambar, siapkan gambar awal jelas yang sudah menetapkan tampilan dan komposisi. Brief gerakan kemudian dapat berfokus pada peristiwa berikutnya. Bingkai akhir dapat memberi tujuan visual bagi transisi. Jaga detail subjek penting dan gaya tetap padu antarbingkai, atau jelaskan transformasi yang dimaksud secara eksplisit. Tinjau transisi itu sendiri serta gambar pembuka dan akhirnya.\n\nProfil produksi pembuat mendukung klip empat, enam, atau delapan detik, pembingkaian lanskap 16:9 atau potret 9:16, dan hingga empat keluaran video per prompt. Keluaran Fast berupa 720p atau 1080p, pada 24 bingkai per detik, dalam format MP4. Profil berbasis gambar menerima JPEG atau PNG, mencantumkan ukuran gambar masukan maksimum 20 MB, dan mendukung konfigurasi masukan 720p/1080p. Siapkan komposisi untuk orientasi yang dimaksud dan jaga masukan dalam batas gambar itu.\n\nSuara dapat menjadi bagian adegan yang dihasilkan. Jelaskan dialog lisan, suara lingkungan, atau efek relevan bersama aksi terlihat, dengan menentukan subjek yang harus berbicara dan peristiwa yang harus menghasilkan suara. Jaga dialog cukup pendek untuk penampilan yang dimaksud dan bedakan dari suasana atau musik. Generasi audio mengikuti brief adegan tertulis; rekaman audio bukan salah satu masukan normal yang didokumentasikan untuk profil ini.\n\nProfil produksi saat ini juga mencantumkan generasi dengan referensi aset dan perpanjangan video. Referensi memandu tampilan subjek atau objek, sementara bingkai batas memandu komposisi pembuka dan penutup. Pilih materi referensi dengan peran jelas dalam adegan, alih-alih menganggap setiap gambar sebagai kendali yang saling menggantikan. Untuk klip lanjutan, pilih alur perpanjangan terpisah dan jelaskan kejadian sesudah aksi yang sudah ada; penanganan masukannya berbeda dari shot baru berbasis teks.\n\nDeskripsi negatif dapat menentukan konten atau pengolahan visual yang ingin dihindari. Jaga prompt utama berfokus pada adegan yang diinginkan dan buat pengecualian khusus tugas. Untuk variasi produk, pertahankan subjek dan pembingkaian sambil mengubah satu detail, seperti arah cahaya atau pengolahan material. Simpan pengaturan dan kumpulan referensi ketika membandingkan hasil agar perbedaan kreatif tetap jelas.\n\nVeo 3.1 Fast dan profil Veo 3.1 reguler tetap merupakan pilihan berbeda. Keluaran produksi Fast yang didokumentasikan adalah 720p/1080p; profil reguler juga mencantumkan 4K. Simpan edisi pilihan dan pengaturan keluarannya bersama artefak, alih-alih menganggap pengenal Preview atau versi Veo lain otomatis sinonim profil produksi ini.\n\nAlur membuat operasi generasi dan menyediakan berkas video yang dikembalikan setelah selesai. Simpan setiap keluaran sebenarnya yang dipilih untuk tinjauan, bersama brief, bingkai sumber, dan pengaturan relevan. Pengenal operasi adalah catatan generasi; artefak MP4 selesai adalah yang dapat diputar dan digunakan dalam suntingan. Pertahankan metadata asal-usul konten yang diberikan bersama video.\n\nTinjau tampilan subjek, aksi yang diminta, pengolahan kamera, dan suara sepanjang klip. Periksa kejelasan dialog dan hubungan suara dengan peristiwa terlihat sebelum menggunakannya dalam komposisi lebih panjang. Hasil berguna dapat berupa shot konsep, penyingkapan produk, atau segmen narasi pendek, dengan judul, transisi, dan penyuntingan lain ditambahkan kemudian dalam alur produksi sekeliling.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "available": null,
    "canonical_model": "google/veo-3.1-fast",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.64",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.64",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "Informasi lengkap harga konfigurasi tersedia di bagian detail."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "2d7f2a21e3339bbaa27b9ff1",
        "label": "Referensi harga konfigurasi video",
        "profiles": [
          {
            "basis": "Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.",
            "dimensions": {
              "conditions": "suara: with_audio"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.24",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.",
            "dimensions": {
              "conditions": "suara: with_audio; resolusi: 4k"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.6",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.",
            "dimensions": {
              "conditions": "suara: without_audio"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.",
            "dimensions": {
              "conditions": "suara: with_audio; resolusi: 720p"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.",
            "dimensions": {
              "conditions": "audio: without_audio; resolusi: 4k"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.5",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Acuan harga yang dipublikasikan untuk konfigurasi yang ditampilkan. Biaya akhir mengikuti konfigurasi aktual yang ditagihkan.",
            "dimensions": {
              "conditions": "suara: without_audio; resolusi: 720p"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.16",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "google/veo-3.1-fast",
    "input": [
      "text"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Tarif yang ditampilkan memperkirakan biaya sebelum pembuatan. Biaya akhir dihitung dari biaya yang tercatat untuk proses pembuatan awal. Durasi keluaran yang terukur dan kuantitas perkiraan bukanlah kuantitas akhir yang ditagihkan.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every completed data[] signed owned URL and the full status metadata. Save every output, including its generated audio.",
            "errors": [
              {
                "code": null,
                "condition": "Pembacaan isi permintaan mentah gagal sebelum penguraian profil video",
                "http_status": 400,
                "recovery": "Simpan respons yang dikembalikan dan perbaiki isi permintaan yang tidak dapat dibaca.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Penguraian profil video persis gagal, atau profil lengkap yang telah diurai tidak memiliki kartu harga persis yang siap digunakan",
                "http_status": 422,
                "message": "The complete video request cannot be priced",
                "recovery": "Simpan respons; gunakan profil lengkap dan persis yang diizinkan beserta kartu harga yang dipublikasikan untuknya. Cabang ini dijalankan sebelum pengiriman ke penyedia.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Konten hasil awal belum tersedia",
                "http_status": 409,
                "recovery": "Periksa ID awal yang dikembalikan secara berkala dan patuhi Retry-After.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan.",
                "type": "server_error"
              },
              {
                "absent_fields": [
                  "status",
                  "object",
                  "model",
                  "data"
                ],
                "code": "result_pending_check",
                "condition": "GET status/konten awal: tugas belum dipublikasikan, tugas awal tidak berstatus failed/cancelled/expired, dan status lokal unknown atau status tugas awal completed.",
                "friendly_fields": "error.reason=result_pending_check,error.param=null; error.operation_id and error.request_id when the existing context supplies them. error.message is rewritten/localized.",
                "headers": {
                  "Retry-After": null,
                  "X-Should-Retry": "false"
                },
                "http_status": 503,
                "recovery": "Simpan id dan operation_id asli (ID video publik yang sama), respons, dan header; baca hanya status/konten awal. Jangan pernah kirim permintaan pembuatan baru.",
                "response_fields": {
                  "charge_pending_check": true,
                  "error.code": "result_pending_check",
                  "error.type": "server_error",
                  "id": "original public video ID",
                  "operation_id": "same as id"
                },
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default0"
                  }
                },
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET. On HTTP503 result_pending_check from original status/content GET, operation_id equals id: use that same original public video ID for polling. Do not substitute unrelated operation IDs from other responses.",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Baca tugas awal yang sudah ada; jangan pernah kirim ulang pengiriman yang statusnya tidak diketahui.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "Use actual returned task_id or original public video id from response/media library. On HTTP503 result_pending_check from original video status/content GET, operation_id equals that original public video id. Do not assume unrelated operation IDs name media tasks.",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "all_results": "Simpan setiap URL bertanda tangan milik Ailoot dalam data[] yang selesai dan metadata status secara utuh. Simpan setiap keluaran, termasuk audio yang dibuatnya. Trek audio AAC yang valid dapat tetap ada meskipun generate_audio=false; simpan MP4 asli secara utuh termasuk audio tersebut.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "signed content URL"
                },
                {
                  "description": null,
                  "name": "charge_pending_check",
                  "type": "boolean"
                },
                {
                  "description": null,
                  "name": "error.code",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "error.message",
                  "type": "string"
                },
                {
                  "description": "Respons status/konten awal HTTP503 result_pending_check: ID video publik awal yang sama sebagai id.",
                  "name": "operation_id",
                  "type": "string"
                },
                {
                  "description": "server_error pada HTTP503 result_pending_check.",
                  "name": "error.type",
                  "type": "string"
                }
              ],
              "format": "mp4",
              "maximum_outputs": 4,
              "status_enum": [
                "in_progress",
                "completed",
                "failed"
              ]
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/veo-3.1-fast"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "max_utf8_bytes": 10000,
                "name": "prompt",
                "non_whitespace": true,
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  4,
                  6,
                  8
                ],
                "enum_known": true,
                "name": "duration",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": true,
                "type": "boolean"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "all fields outside the exact required six-key profile",
              "image or reference inputs",
              "1080p or 4K"
            ]
          },
          "hints": [
            "Simpan respons secara utuh dan ID asli yang dikembalikan.",
            "Jangan pernah kirim ulang pembuatan yang statusnya tidak diketahui."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "parameters": [
              {
                "enum": [
                  "google/veo-3.1-fast"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "max_utf8_bytes": 10000,
                "name": "prompt",
                "non_whitespace": true,
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  4,
                  6,
                  8
                ],
                "name": "duration",
                "required": true,
                "type": "integer"
              },
              {
                "enum": [
                  "720p"
                ],
                "name": "resolution",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "16:9",
                  "9:16"
                ],
                "name": "aspect_ratio",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  false,
                  true
                ],
                "name": "generate_audio",
                "required": true,
                "type": "boolean"
              }
            ],
            "required": [
              "model",
              "prompt",
              "duration",
              "resolution",
              "aspect_ratio",
              "generate_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "content": [
              {
                "http": "GET",
                "parameters": [
                  {
                    "availability": "source_interface",
                    "conditions": "Must be less than the actual returned output count.",
                    "default": 0,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": null,
                    "maximum_known": false,
                    "minimum": 0,
                    "name": "index",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "parameters": [
                  {
                    "availability": "source_interface",
                    "conditions": "Must be less than the actual returned output count.",
                    "default": 0,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": null,
                    "maximum_known": false,
                    "minimum": 0,
                    "name": "index",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET. On HTTP503 result_pending_check from original status/content GET, operation_id equals id: use that same original public video ID for polling. Do not substitute unrelated operation IDs from other responses.",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations",
            "/videos",
            "/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "family": "video",
            "format": "mp4",
            "max_outputs": 4,
            "priced_duration": "Video-file duration is not the billing quantity; final charge follows the actual billed configuration."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio",
              "quoted_unit": "per video second"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.24",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.24",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.6",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.6",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Tarif yang ditampilkan memperkirakan biaya sebelum pembuatan. Biaya akhir dihitung berdasarkan biaya yang dicatat untuk pembuatan asli. Durasi fisik video bukan jumlah yang ditagihkan.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": true,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_720p",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per video second"
            },
            "label": "Harga video",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.5",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.5",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": false,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.16",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_720p",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.16",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "basis": "Perkiraan ini bukan biaya tambahan maupun tarif tetap untuk proses pembuatan yang telah selesai.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Perkiraan biaya pembuatan",
            "units": [
              {
                "amount": "0.64",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.64",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"google/veo-3.1-fast\", \"prompt\": \"a calm greenhouse\", \"duration\": 6, \"resolution\": \"720p\", \"aspect_ratio\": \"16:9\", \"generate_audio\": true}')\nPath('request.json').write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · exact configured profile",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations",
          "/videos",
          "/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "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": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "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": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.24",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.24",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.6",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.6",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": true,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_720p",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.2",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.5",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.5",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": false,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.16",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_720p",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.16",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.64",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.64",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "google/veo-3.1-fast",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "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": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.24",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_with_audio",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.24",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.6",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_with_audio_4k",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.6",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.2",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_with_audio_720p",
            "label": "Estimated output video second",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "public_unit_label": "per output video second",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_video_second"
          },
          {
            "amount": "0.2",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_without_audio",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.5",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_without_audio_4k",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.5",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.16",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_without_audio_720p",
            "label": "Estimated output video second",
            "native_amount_usd_per_unit": "0.16",
            "native_quantity": 1,
            "public_unit_label": "per output video second",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_video_second"
          },
          {
            "amount": "0.64",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.64",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "google/veo-3.1-fast",
        "request_model_id": "google/veo-3.1-fast",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Veo 3.1 Fast",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.64,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.64,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": true,
          "native_model_id": "veo-3.1-fast-generate-preview",
          "resolution": "720p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.20",
            "amount_unit": "usd_per_output_second",
            "conditions": {
              "audio": true,
              "native_model_id": "veo-3.1-fast-generate-preview",
              "resolution": "720p"
            },
            "key": "output_video_audio",
            "label": "output video audio",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": true,
          "native_model_id": "veo-3.1-fast-generate-preview",
          "resolution": "1080p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.24",
            "amount_unit": "usd_per_output_second",
            "conditions": {
              "audio": true,
              "native_model_id": "veo-3.1-fast-generate-preview",
              "resolution": "1080p"
            },
            "key": "output_video_audio",
            "label": "output video audio",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": true,
          "native_model_id": "veo-3.1-fast-generate-preview",
          "resolution": "4k"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.60",
            "amount_unit": "usd_per_output_second",
            "conditions": {
              "audio": true,
              "native_model_id": "veo-3.1-fast-generate-preview",
              "resolution": "4k"
            },
            "key": "output_video_audio",
            "label": "output video audio",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.24",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "audio=true Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.24",
            "key": "duration_seconds_with_audio",
            "label": "output second",
            "native_amount_usd_per_unit": "0.24",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.6",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=4k · audio=true Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.60",
            "key": "duration_seconds_with_audio_4k",
            "label": "output second",
            "native_amount_usd_per_unit": "0.6",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.2",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "audio=false Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.20",
            "key": "duration_seconds_without_audio",
            "label": "output second",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.2",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=720p · audio=true",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.20",
            "key": "duration_seconds_with_audio_720p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.2",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.50",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=4k · audio=false Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.50",
            "key": "duration_seconds_without_audio_4k",
            "label": "output second",
            "native_amount_usd_per_unit": "0.50",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.16",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=720p · audio=false",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.16",
            "key": "duration_seconds_without_audio_720p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.16",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          }
        ]
      }
    ],
    "public_id": "google/veo-3.1-fast",
    "short": "Veo 3.1 Fast adalah model video Google untuk adegan pendek berbasis teks atau gambar dengan suara yang dihasilkan. Profil produksinya mengembalikan klip MP4 berdurasi empat, enam, atau delapan detik pada 24 fps, dengan keluaran 720p atau 1080p serta bingkai pembuka atau penutup berpanduan."
  },
  "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": "Veo 3.1 Fast adalah model video Google untuk adegan pendek berbasis teks atau gambar dengan suara yang dihasilkan. Profil produksinya mengembalikan klip MP4 berdurasi empat, enam, atau delapan detik pada 24 fps, dengan keluaran 720p atau 1080p serta bingkai pembuka atau penutup berpanduan.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "65a908cc1e2b08e786451fd6a10526e5d70f731d04062ba516a9dcdba28edd87",
    "renderer_sha256": "2a0471475a29000c23db326ca1e315df73dee7524f6bc2907818ee3458813f2d"
  },
  "sourceRevision": "6569fda511a1faf14e89650b3c053863837346c7e2c8e2e6855eca5d46843d2a"
}
