{
  "aboutHtml": "<p>Kling v2.1 Master adalah edisi video Kling dengan kemampuan teks ke video dan gambar ke video dalam katalog model yang didokumentasikan. Pilih arahan adegan tertulis saat mengembangkan gagasan visual dari teks, atau arahan berbasis gambar saat subjek dan komposisi sudah ditetapkan. Dalam kedua cara tersebut, tentukan peristiwa yang harus ditampilkan dalam pengambilan gambar yang telah selesai.</p><p>Untuk pembuatan berbasis teks, jelaskan subjek, latar, dan tindakan dalam urutan yang jelas. Penari yang melintasi studio, kendaraan yang bergerak di bawah pepohonan, atau benda kaca yang menangkap cahaya yang berubah masing-masing memberi tujuan yang spesifik pada rangkaian tersebut. Sertakan rincian yang menentukan penampilan adegan dan jaga agar tetap konsisten sepanjang arahan.</p><p>Untuk pembuatan berbasis gambar, siapkan referensi yang memperlihatkan ciri yang perlu dipertahankan dalam pengambilan gambar. Jaga agar wajah, tepi objek, dan bahan yang khas tetap terlihat. Jelaskan apa yang berubah dari tampilan awal tersebut: gestur subjek, gerakan lingkungan, atau posisi kamera. Sediakan gambar sumber saat meninjau hasilnya.</p><p>Rencanakan tindakan dengan mempertimbangkan bagian akhirnya. Orang yang meletakkan objek harus mengakhiri tindakan dengan objek tersebut berada di tempat yang dapat dikenali; pengungkapan visual harus berakhir dengan ciri penting terlihat. Hal ini memudahkan pemilihan titik penyuntingan dan penilaian apakah gerakan telah memenuhi tujuannya.</p><p>Entri model yang didokumentasikan mencakup durasi lima dan sepuluh detik, mode std dan pro, serta bentuk bingkai lanskap, potret, dan persegi. Pilih kontrol yang tersedia dalam alur kerja yang dipilih dan simpan nilai yang benar-benar digunakan. Nilai klip hasilnya berdasarkan tindakan dan pembingkaian yang diinginkan, alih-alih berdasarkan nama edisi model.</p><p>Jelaskan gerakan subjek dan kamera secara terpisah. Untuk pengambilan gambar dengan kamera mengikuti subjek, nyatakan subjek mana yang diikuti dan bagian lingkungan mana yang harus melintas dalam bingkai. Untuk pengambilan gambar dengan kamera diam, nyatakan gerakan yang berlangsung di dalamnya. Kaitkan arahan kamera dengan hal yang perlu diperhatikan penonton.</p><p>Periksa seluruh rangkaian untuk menilai kesinambungannya. Pastikan subjek penting tetap dapat dikenali, interaksi selaras secara spasial, dan pengaturan waktunya memberi ruang untuk titik potong yang diinginkan. Amati perubahan pada tangan, wajah, detail permukaan, dan objek yang saling tumpang tindih. Nilai gerakan sekaligus bingkai tunggal yang paling kuat.</p><p>Simpan setiap video yang telah selesai bersama prompt, referensi, dan pengaturannya. Gunakan arahan yang sama saat membandingkan satu adegan di berbagai edisi, dan catat perbedaan visual yang benar-benar terlihat. Saat memperbaiki kandidat, jelaskan masalah yang diamati dan revisi instruksi yang terkait sambil mempertahankan elemen adegan yang berguna.</p>",
  "aboutText": "Kling v2.1 Master adalah edisi video Kling dengan kemampuan teks ke video dan gambar ke video dalam katalog model yang didokumentasikan. Pilih arahan adegan tertulis saat mengembangkan gagasan visual dari teks, atau arahan berbasis gambar saat subjek dan komposisi sudah ditetapkan. Dalam kedua cara tersebut, tentukan peristiwa yang harus ditampilkan dalam pengambilan gambar yang telah selesai.\n\nUntuk pembuatan berbasis teks, jelaskan subjek, latar, dan tindakan dalam urutan yang jelas. Penari yang melintasi studio, kendaraan yang bergerak di bawah pepohonan, atau benda kaca yang menangkap cahaya yang berubah masing-masing memberi tujuan yang spesifik pada rangkaian tersebut. Sertakan rincian yang menentukan penampilan adegan dan jaga agar tetap konsisten sepanjang arahan.\n\nUntuk pembuatan berbasis gambar, siapkan referensi yang memperlihatkan ciri yang perlu dipertahankan dalam pengambilan gambar. Jaga agar wajah, tepi objek, dan bahan yang khas tetap terlihat. Jelaskan apa yang berubah dari tampilan awal tersebut: gestur subjek, gerakan lingkungan, atau posisi kamera. Sediakan gambar sumber saat meninjau hasilnya.\n\nRencanakan tindakan dengan mempertimbangkan bagian akhirnya. Orang yang meletakkan objek harus mengakhiri tindakan dengan objek tersebut berada di tempat yang dapat dikenali; pengungkapan visual harus berakhir dengan ciri penting terlihat. Hal ini memudahkan pemilihan titik penyuntingan dan penilaian apakah gerakan telah memenuhi tujuannya.\n\nEntri model yang didokumentasikan mencakup durasi lima dan sepuluh detik, mode std dan pro, serta bentuk bingkai lanskap, potret, dan persegi. Pilih kontrol yang tersedia dalam alur kerja yang dipilih dan simpan nilai yang benar-benar digunakan. Nilai klip hasilnya berdasarkan tindakan dan pembingkaian yang diinginkan, alih-alih berdasarkan nama edisi model.\n\nJelaskan gerakan subjek dan kamera secara terpisah. Untuk pengambilan gambar dengan kamera mengikuti subjek, nyatakan subjek mana yang diikuti dan bagian lingkungan mana yang harus melintas dalam bingkai. Untuk pengambilan gambar dengan kamera diam, nyatakan gerakan yang berlangsung di dalamnya. Kaitkan arahan kamera dengan hal yang perlu diperhatikan penonton.\n\nPeriksa seluruh rangkaian untuk menilai kesinambungannya. Pastikan subjek penting tetap dapat dikenali, interaksi selaras secara spasial, dan pengaturan waktunya memberi ruang untuk titik potong yang diinginkan. Amati perubahan pada tangan, wajah, detail permukaan, dan objek yang saling tumpang tindih. Nilai gerakan sekaligus bingkai tunggal yang paling kuat.\n\nSimpan setiap video yang telah selesai bersama prompt, referensi, dan pengaturannya. Gunakan arahan yang sama saat membandingkan satu adegan di berbagai edisi, dan catat perbedaan visual yang benar-benar terlihat. Saat memperbaiki kandidat, jelaskan masalah yang diamati dan revisi instruksi yang terkait sambil mempertahankan elemen adegan yang berguna.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "b0030a458977fb18ddc6dc16bbaa34e793960a1a35986bdc286bd70acc775352",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "id",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Kling v2.1 Master</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Tutup\">×</button></div><div class=\"idline\"><span>Kling /</span><code>kling-v2-1-master</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|kling-v2-1-master\">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\">Kling v2.1 Master menghasilkan video dari teks atau arahan berbasis gambar. Gunakan untuk peristiwa visual yang terdefinisi, dengan subjek, tindakan, arahan kamera, dan bagian akhir yang direncanakan sebagai satu pengambilan gambar singkat yang selaras.</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>Kling v2.1 Master adalah edisi video Kling dengan kemampuan teks ke video dan gambar ke video dalam katalog model yang didokumentasikan. Pilih arahan adegan tertulis saat mengembangkan gagasan visual dari teks, atau arahan berbasis gambar saat subjek dan komposisi sudah ditetapkan. Dalam kedua cara tersebut, tentukan peristiwa yang harus ditampilkan dalam pengambilan gambar yang telah selesai.</p><p>Untuk pembuatan berbasis teks, jelaskan subjek, latar, dan tindakan dalam urutan yang jelas. Penari yang melintasi studio, kendaraan yang bergerak di bawah pepohonan, atau benda kaca yang menangkap cahaya yang berubah masing-masing memberi tujuan yang spesifik pada rangkaian tersebut. Sertakan rincian yang menentukan penampilan adegan dan jaga agar tetap konsisten sepanjang arahan.</p><p>Untuk pembuatan berbasis gambar, siapkan referensi yang memperlihatkan ciri yang perlu dipertahankan dalam pengambilan gambar. Jaga agar wajah, tepi objek, dan bahan yang khas tetap terlihat. Jelaskan apa yang berubah dari tampilan awal tersebut: gestur subjek, gerakan lingkungan, atau posisi kamera. Sediakan gambar sumber saat meninjau hasilnya.</p><p>Rencanakan tindakan dengan mempertimbangkan bagian akhirnya. Orang yang meletakkan objek harus mengakhiri tindakan dengan objek tersebut berada di tempat yang dapat dikenali; pengungkapan visual harus berakhir dengan ciri penting terlihat. Hal ini memudahkan pemilihan titik penyuntingan dan penilaian apakah gerakan telah memenuhi tujuannya.</p><p>Entri model yang didokumentasikan mencakup durasi lima dan sepuluh detik, mode std dan pro, serta bentuk bingkai lanskap, potret, dan persegi. Pilih kontrol yang tersedia dalam alur kerja yang dipilih dan simpan nilai yang benar-benar digunakan. Nilai klip hasilnya berdasarkan tindakan dan pembingkaian yang diinginkan, alih-alih berdasarkan nama edisi model.</p><p>Jelaskan gerakan subjek dan kamera secara terpisah. Untuk pengambilan gambar dengan kamera mengikuti subjek, nyatakan subjek mana yang diikuti dan bagian lingkungan mana yang harus melintas dalam bingkai. Untuk pengambilan gambar dengan kamera diam, nyatakan gerakan yang berlangsung di dalamnya. Kaitkan arahan kamera dengan hal yang perlu diperhatikan penonton.</p><p>Periksa seluruh rangkaian untuk menilai kesinambungannya. Pastikan subjek penting tetap dapat dikenali, interaksi selaras secara spasial, dan pengaturan waktunya memberi ruang untuk titik potong yang diinginkan. Amati perubahan pada tangan, wajah, detail permukaan, dan objek yang saling tumpang tindih. Nilai gerakan sekaligus bingkai tunggal yang paling kuat.</p><p>Simpan setiap video yang telah selesai bersama prompt, referensi, dan pengaturannya. Gunakan arahan yang sama saat membandingkan satu adegan di berbagai edisi, dan catat perbedaan visual yang benar-benar terlihat. Saat memperbaiki kandidat, jelaskan masalah yang diamati dan revisi instruksi yang terkait sambil mempertahankan elemen adegan yang berguna.</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></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Kolom</th><th>Jenis</th><th>Persyaratan</th><th>Nilai &amp; batasan</th><th>Bawaan</th></tr></thead><tbody><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>kling-v2-1-master</div><div>Kondisi: Gunakan pemilih perutean Ailoot ini persis seperti yang ditampilkan.</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">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>Panjang maksimum: 500</div><div>Kondisi: </div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">mode</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>std, pro</div><div>Kondisi: </div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">model_name</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>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Kondisi: Penggantian nilai bawaan model bersifat opsional. Jangan sertakan untuk menggunakan model yang dipilih secara otomatis; nilai yang ditetapkan secara eksplisit tetap dipertahankan.</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">cfg_scale</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>number</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Minimum: 0</div><div>Maksimum: 1</div><div>Kondisi: </div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">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>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Kondisi: </div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">negative_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>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Panjang maksimum: 200</div><div>Kondisi: </div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">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>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>5, 10</div><div>Kondisi: </div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Parameter metode dan siklus hidup</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrak</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>model, prompt, mode</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>model_name, cfg_scale, aspect_ratio, negative_prompt, duration</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><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>conditions</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>Gunakan pemilih perutean Ailoot ini persis seperti yang ditampilkan., Penggantian nilai bawaan model bersifat opsional. Jangan sertakan untuk menggunakan model yang dipilih secara otomatis; nilai yang ditetapkan secara eksplisit tetap dipertahankan.</td></tr></tbody></table></div><p>Alias metode: <code>/v1/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/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Paket</h3><div 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>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=\"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>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=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Perkiraan biaya pembuatan · Perkiraan hanya untuk perbandingan</span> <b>$6</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></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-2807-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2807-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · buat sekali dan simpan hasil secara lengkap</button><button class=\"cg-tab\" id=\"model-code-2807-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2807-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Baca tugas asli</button><button class=\"cg-tab\" id=\"model-code-2807-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2807-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Simpan setiap aset milik Anda yang telah selesai</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-2807-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2807-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_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;kling-v2-1-master&quot;, &quot;prompt&quot;: &quot;A happy holiday scene at the beach.&quot;, &quot;mode&quot;: &quot;pro&quot;}&#39;)\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/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\n# Submit once. Retain the complete result, original identifiers and every response header.\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2807-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2807-tab-1\" hidden><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_STATUS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r[&quot;polling_url&quot;])\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or p.username or p.password:\n    raise SystemExit(&quot;Unexpected returned polling URL; preserve the response&quot;)\nsubprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-D&quot;,&quot;status-headers.txt&quot;,&quot;-o&quot;,&quot;status.json&quot;],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2807-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2807-tab-2\" hidden><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(&quot;status.json&quot;).read_text())\nroles={}\ndef visit(v,path=&quot;&quot;):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+&quot;/&quot;+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+&quot;/&quot;+str(i))\n    elif isinstance(v,str):\n        u=urljoin(&quot;https://api.ailoot.ai&quot;,v); p=urlsplit(u)\n        if p.scheme==&quot;https&quot; and p.netloc==&quot;api.ailoot.ai&quot; and not p.username and not p.password and p.path.startswith(&quot;/v1/media/assets/&quot;) and p.path.endswith(&quot;/content&quot;):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(&quot;No completed owned assets; retain the original status&quot;)\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f&quot;asset-{i}.bin&quot;)\n    subprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-o&quot;,str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(&quot;Empty asset; retain original status and metadata&quot;)\n    ext=&quot;glb&quot; if raw[:4]==b&quot;glTF&quot; else &quot;png&quot; if raw[:8]==b&quot;\\x89PNG\\r\\n\\x1a\\n&quot; else &quot;jpg&quot; if raw[:3]==b&quot;\\xff\\xd8\\xff&quot; else &quot;webp&quot; if raw[:4]==b&quot;RIFF&quot; and raw[8:12]==b&quot;WEBP&quot; else &quot;mp4&quot; if raw[4:8]==b&quot;ftyp&quot; else &quot;bin&quot;\n    name=f&quot;asset-{i}.{ext}&quot;\n    if target.name!=name: target.rename(name)\n    manifest.append({&quot;file&quot;:name,&quot;response_paths&quot;:paths,&quot;bytes&quot;:len(raw)})\nPath(&quot;asset-manifest.json&quot;).write_text(json.dumps(manifest,indent=2))\nprint(&quot;Saved&quot;,len(manifest),&quot;unique owned assets; every response role retained&quot;)\nPY_ASSETS\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><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/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Simpan semua hasil yang selesai</h5><p class=\"note-s\">Simpan setiap video yang selesai atau berkas yang dikembalikan; ambil setiap URL aset yang benar-benar dikembalikan.</p><p class=\"note-s\">Simpan respons dan header secara utuh, pengenal asli, setiap keluaran aktual, dan semua bidang penggunaan/akuntansi. Simpan setiap aset unik milik Ailoot dan pertahankan setiap peran yang menunjuk kepadanya.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asli perlu diperiksa</h5><p class=\"note-s\">Simpan id tugas atau operasi publik yang dikembalikan beserta semua header. Baca hanya tugas awal; unknown atau result_pending_check tidak mengizinkan pembuatan lain.</p></div><details class=\"card-about\" data-output-fields><summary>Kolom respons</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Kolom</th><th>Jenis</th></tr></thead><tbody><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">polling_url</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">provider_task_id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">data.task_id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">data.task_status</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">data.task_result.videos[].url</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</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>Kolom wajib, pemilih model, tipe, atau bentuk masukan tidak valid.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Periksa rincian validasi yang dikembalikan sebelum menyiapkan permintaan terpisah.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span><code></code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Permintaan atau hasil asli tidak diketahui atau perlu diperiksa.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan pengenal dan header asli; baca hanya catatan status/pustaka yang didukung. Jangan kirim ulang permintaan pembuatan.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias model</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=kling-v2-1-master&amp;route=Ultra&amp;caller=kling-v2-1-master&amp;fmt=videos\"><code>kling-v2-1-master</code></a></span></p><h4>Alias jalur metode</h4><p class=\"note-s\"><code>/v1/videos/generations</code></p><h4>ID pemanggil terkait</h4><p class=\"note-s\"><a href=\"#m=kling-v2-1-master&amp;route=Ultra&amp;caller=kling-v2-1-master&amp;fmt=videos\"><code>kling-v2-1-master</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "kling-v2-1-master",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "kling-v2-1-master",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|kling-v2-1-master",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "The displayed rates estimate the cost before generation. The final charge is calculated from the cost recorded for the original generation. Measured output duration and forecast quantities are not the final billable quantity.",
          "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": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "authentication": {
              "header": "Authorization",
              "scheme": "Bearer",
              "value": "$AILOOT_API_KEY"
            },
            "errors": [
              {
                "condition": "Kolom wajib, pemilih model, tipe, atau bentuk masukan tidak valid.",
                "http_status": 400,
                "recovery": "Periksa rincian validasi yang dikembalikan sebelum menyiapkan permintaan terpisah.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Permintaan atau hasil asli tidak diketahui atau perlu diperiksa.",
                "http_status": null,
                "recovery": "Simpan pengenal dan header asli; baca hanya catatan status/pustaka yang didukung. Jangan kirim ulang permintaan pembuatan.",
                "type": null
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "succeed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "submitted"
              ],
              "state_field": "data.task_status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "Simpan id tugas atau operasi publik yang dikembalikan beserta semua header. Baca hanya tugas awal; unknown atau result_pending_check tidak mengizinkan pembuatan lain.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Simpan respons dan header secara utuh, pengenal asli, setiap keluaran aktual, dan semua bidang penggunaan/akuntansi. Simpan setiap aset unik milik Ailoot dan pertahankan setiap peran yang menunjuk kepadanya.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_status",
                  "type": "string"
                },
                {
                  "name": "data.task_result.videos[].url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Gunakan pemilih perutean Ailoot ini persis seperti yang ditampilkan.",
                "default_known": false,
                "enum": [
                  "kling-v2-1-master"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 500,
                "maximum_length": 500,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  "std",
                  "pro"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mode",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Penggantian nilai bawaan model bersifat opsional. Jangan sertakan untuk menggunakan model yang dipilih secara otomatis; nilai yang ditetapkan secara eksplisit tetap dipertahankan.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "model_name",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum": 1,
                "maximum_length": null,
                "minimum": 0,
                "name": "cfg_scale",
                "required": false,
                "type": "number"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 200,
                "maximum_length": 200,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  5,
                  10
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "type": "string"
                },
                "cfg_scale": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "duration": {
                  "enum": [
                    5,
                    10
                  ],
                  "type": "integer"
                },
                "mode": {
                  "enum": [
                    "std",
                    "pro"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "kling-v2-1-master"
                  ],
                  "type": "string"
                },
                "model_name": {
                  "type": "string"
                },
                "negative_prompt": {
                  "maxLength": 200,
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 500,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "mode"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "mode": "pro",
                "model": "kling-v2-1-master",
                "prompt": "A happy holiday scene at the beach."
              },
              "content_type": "application/json",
              "example_is_offline_content": true
            },
            "usage": {
              "meter": "Use the accepted method price and actual recorded usage; the request reserve is an estimate. A billing unit does not add an input capability.",
              "preserve": "Keep all returned usage, accounting and request identifiers with every actual output.",
              "settlement": "Retain the original operation; reconcile its result and accounting once."
            }
          },
          "input": {
            "conditions": [
              "Gunakan pemilih perutean Ailoot ini persis seperti yang ditampilkan.",
              "Penggantian nilai bawaan model bersifat opsional. Jangan sertakan untuk menggunakan model yang dipilih secara otomatis; nilai yang ditetapkan secara eksplisit tetap dipertahankan."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "model_name",
              "cfg_scale",
              "aspect_ratio",
              "negative_prompt",
              "duration"
            ],
            "required": [
              "model",
              "prompt",
              "mode"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "succeed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "submitted"
            ],
            "state_field": "data.task_status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "data.task_id",
                "type": "string"
              },
              {
                "name": "data.task_status",
                "type": "string"
              },
              {
                "name": "data.task_result.videos[].url",
                "type": "string"
              }
            ],
            "maximum_outputs": null
          }
        },
        "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"
              }
            ]
          },
          {
            "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": "6",
                "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": "6",
                "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}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"kling-v2-1-master\", \"prompt\": \"A happy holiday scene at the beach.\", \"mode\": \"pro\"}')\n\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\n# Submit once. Retain the complete result, original identifiers and every response header.\n",
            "label": "curl · create once and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "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())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Video",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/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"
              }
            ]
          },
          {
            "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": "6",
                "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": "6",
                "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": "kling-v2-1-master",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}"
        ],
        "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": "6",
            "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": "6",
            "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": "kling-v2-1-master",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "400dc906e34046f2eb465c18a707f3182b973ff118b2553536639daf833cdbe4",
    "input_html_sha256": "b739606ed81ca3d7bc5dc60391aa601af080d196044a5e14dc12286cbeedcec7",
    "private_audit_sha256": "035bb879f7c7f5fc48f70938a76a156570ddf39fbef6344be6b61faece9e5721",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/id/kling-v2-1-master/",
    "description": "Kling v2.1 Master menghasilkan video dari teks atau arahan berbasis gambar. Gunakan untuk peristiwa visual yang terdefinisi, dengan subjek, tindakan, arahan kamera, dan bagian akhir yang direncanakan sebagai satu pengambilan gambar singkat yang selaras.",
    "locale": "id",
    "md_url": "https://ailoot.ai/models/id/kling-v2-1-master/index.md",
    "title": "Kling v2.1 Master — Ailoot",
    "url": "https://ailoot.ai/models/id/kling-v2-1-master/"
  },
  "rawModel": {
    "about": "Kling v2.1 Master adalah edisi video Kling dengan kemampuan teks ke video dan gambar ke video dalam katalog model yang didokumentasikan. Pilih arahan adegan tertulis saat mengembangkan gagasan visual dari teks, atau arahan berbasis gambar saat subjek dan komposisi sudah ditetapkan. Dalam kedua cara tersebut, tentukan peristiwa yang harus ditampilkan dalam pengambilan gambar yang telah selesai.\n\nUntuk pembuatan berbasis teks, jelaskan subjek, latar, dan tindakan dalam urutan yang jelas. Penari yang melintasi studio, kendaraan yang bergerak di bawah pepohonan, atau benda kaca yang menangkap cahaya yang berubah masing-masing memberi tujuan yang spesifik pada rangkaian tersebut. Sertakan rincian yang menentukan penampilan adegan dan jaga agar tetap konsisten sepanjang arahan.\n\nUntuk pembuatan berbasis gambar, siapkan referensi yang memperlihatkan ciri yang perlu dipertahankan dalam pengambilan gambar. Jaga agar wajah, tepi objek, dan bahan yang khas tetap terlihat. Jelaskan apa yang berubah dari tampilan awal tersebut: gestur subjek, gerakan lingkungan, atau posisi kamera. Sediakan gambar sumber saat meninjau hasilnya.\n\nRencanakan tindakan dengan mempertimbangkan bagian akhirnya. Orang yang meletakkan objek harus mengakhiri tindakan dengan objek tersebut berada di tempat yang dapat dikenali; pengungkapan visual harus berakhir dengan ciri penting terlihat. Hal ini memudahkan pemilihan titik penyuntingan dan penilaian apakah gerakan telah memenuhi tujuannya.\n\nEntri model yang didokumentasikan mencakup durasi lima dan sepuluh detik, mode std dan pro, serta bentuk bingkai lanskap, potret, dan persegi. Pilih kontrol yang tersedia dalam alur kerja yang dipilih dan simpan nilai yang benar-benar digunakan. Nilai klip hasilnya berdasarkan tindakan dan pembingkaian yang diinginkan, alih-alih berdasarkan nama edisi model.\n\nJelaskan gerakan subjek dan kamera secara terpisah. Untuk pengambilan gambar dengan kamera mengikuti subjek, nyatakan subjek mana yang diikuti dan bagian lingkungan mana yang harus melintas dalam bingkai. Untuk pengambilan gambar dengan kamera diam, nyatakan gerakan yang berlangsung di dalamnya. Kaitkan arahan kamera dengan hal yang perlu diperhatikan penonton.\n\nPeriksa seluruh rangkaian untuk menilai kesinambungannya. Pastikan subjek penting tetap dapat dikenali, interaksi selaras secara spasial, dan pengaturan waktunya memberi ruang untuk titik potong yang diinginkan. Amati perubahan pada tangan, wajah, detail permukaan, dan objek yang saling tumpang tindih. Nilai gerakan sekaligus bingkai tunggal yang paling kuat.\n\nSimpan setiap video yang telah selesai bersama prompt, referensi, dan pengaturannya. Gunakan arahan yang sama saat membandingkan satu adegan di berbagai edisi, dan catat perbedaan visual yang benar-benar terlihat. Saat memperbaiki kandidat, jelaskan masalah yang diamati dan revisi instruksi yang terkait sambil mempertahankan elemen adegan yang berguna.",
    "about_sha256": "c5b60dc346e66ca26795446abacdedb68d28b27005a69b5f9c8f395c760374b5",
    "alias_of": null,
    "aliases": [],
    "author": "Kling",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "6",
            "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": "6",
            "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,
    "display_name": "Kling v2.1 Master",
    "formats": [
      "videos"
    ],
    "id": "kling-v2-1-master",
    "input": [
      "text"
    ],
    "kind": "video",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "The displayed rates estimate the cost before generation. The final charge is calculated from the cost recorded for the original generation. Measured output duration and forecast quantities are not the final billable quantity.",
          "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": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "authentication": {
              "header": "Authorization",
              "scheme": "Bearer",
              "value": "$AILOOT_API_KEY"
            },
            "errors": [
              {
                "condition": "Kolom wajib, pemilih model, tipe, atau bentuk masukan tidak valid.",
                "http_status": 400,
                "recovery": "Periksa rincian validasi yang dikembalikan sebelum menyiapkan permintaan terpisah.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Permintaan atau hasil asli tidak diketahui atau perlu diperiksa.",
                "http_status": null,
                "recovery": "Simpan pengenal dan header asli; baca hanya catatan status/pustaka yang didukung. Jangan kirim ulang permintaan pembuatan.",
                "type": null
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "succeed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "submitted"
              ],
              "state_field": "data.task_status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "Simpan id tugas atau operasi publik yang dikembalikan beserta semua header. Baca hanya tugas awal; unknown atau result_pending_check tidak mengizinkan pembuatan lain.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Simpan respons dan header secara utuh, pengenal asli, setiap keluaran aktual, dan semua bidang penggunaan/akuntansi. Simpan setiap aset unik milik Ailoot dan pertahankan setiap peran yang menunjuk kepadanya.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_status",
                  "type": "string"
                },
                {
                  "name": "data.task_result.videos[].url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Gunakan pemilih perutean Ailoot ini persis seperti yang ditampilkan.",
                "default_known": false,
                "enum": [
                  "kling-v2-1-master"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 500,
                "maximum_length": 500,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  "std",
                  "pro"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mode",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Penggantian nilai bawaan model bersifat opsional. Jangan sertakan untuk menggunakan model yang dipilih secara otomatis; nilai yang ditetapkan secara eksplisit tetap dipertahankan.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "model_name",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum": 1,
                "maximum_length": null,
                "minimum": 0,
                "name": "cfg_scale",
                "required": false,
                "type": "number"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 200,
                "maximum_length": 200,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  5,
                  10
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "type": "string"
                },
                "cfg_scale": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "duration": {
                  "enum": [
                    5,
                    10
                  ],
                  "type": "integer"
                },
                "mode": {
                  "enum": [
                    "std",
                    "pro"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "kling-v2-1-master"
                  ],
                  "type": "string"
                },
                "model_name": {
                  "type": "string"
                },
                "negative_prompt": {
                  "maxLength": 200,
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 500,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "mode"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "mode": "pro",
                "model": "kling-v2-1-master",
                "prompt": "A happy holiday scene at the beach."
              },
              "content_type": "application/json",
              "example_is_offline_content": true
            },
            "usage": {
              "meter": "Use the accepted method price and actual recorded usage; the request reserve is an estimate. A billing unit does not add an input capability.",
              "preserve": "Keep all returned usage, accounting and request identifiers with every actual output.",
              "settlement": "Retain the original operation; reconcile its result and accounting once."
            }
          },
          "input": {
            "conditions": [
              "Gunakan pemilih perutean Ailoot ini persis seperti yang ditampilkan.",
              "Penggantian nilai bawaan model bersifat opsional. Jangan sertakan untuk menggunakan model yang dipilih secara otomatis; nilai yang ditetapkan secara eksplisit tetap dipertahankan."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "model_name",
              "cfg_scale",
              "aspect_ratio",
              "negative_prompt",
              "duration"
            ],
            "required": [
              "model",
              "prompt",
              "mode"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "succeed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "submitted"
            ],
            "state_field": "data.task_status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "data.task_id",
                "type": "string"
              },
              {
                "name": "data.task_status",
                "type": "string"
              },
              {
                "name": "data.task_result.videos[].url",
                "type": "string"
              }
            ],
            "maximum_outputs": null
          }
        },
        "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"
              }
            ]
          },
          {
            "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": "6",
                "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": "6",
                "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}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"kling-v2-1-master\", \"prompt\": \"A happy holiday scene at the beach.\", \"mode\": \"pro\"}')\n\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\n# Submit once. Retain the complete result, original identifiers and every response header.\n",
            "label": "curl · create once and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "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())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Video",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/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"
              }
            ]
          },
          {
            "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": "6",
                "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": "6",
                "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": "kling-v2-1-master",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}"
        ],
        "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": "6",
            "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": "6",
            "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": "kling-v2-1-master",
        "request_model_id": "kling-v2-1-master",
        "route_label": "Ultra"
      }
    ],
    "name": "Kling v2.1 Master",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 6,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 6,
      "varies": false
    },
    "short": "Kling v2.1 Master menghasilkan video dari teks atau arahan berbasis gambar. Gunakan untuk peristiwa visual yang terdefinisi, dengan subjek, tindakan, arahan kamera, dan bagian akhir yang direncanakan sebagai satu pengambilan gambar singkat yang selaras.",
    "short_sha256": "a45d457782bb2d2b9b40860c73ff5d3bdd5c195d63847120ee214d5c80164cbf"
  },
  "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": "Kling v2.1 Master menghasilkan video dari teks atau arahan berbasis gambar. Gunakan untuk peristiwa visual yang terdefinisi, dengan subjek, tindakan, arahan kamera, dan bagian akhir yang direncanakan sebagai satu pengambilan gambar singkat yang selaras.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "d7716e7c1ff09868b11d18ba7ebb071496939bc8e345f81528aa792b76befaa2",
    "renderer_sha256": "2a0471475a29000c23db326ca1e315df73dee7524f6bc2907818ee3458813f2d"
  },
  "sourceRevision": "c14f9bd770e4634daac91ef5154151d49ef7d9d802af4c350cb6fead000397b5"
}
