{
  "aboutHtml": "<p>Seedance 1.5 Pro menghasilkan video dari teks atau gambar dan dapat menghasilkan suara bersama gambar bergerak. Selektor yang tepat adalah doubao-seedance-1-5-pro-251215. Kontrol audionya membedakannya dari profil Seedance 1.0 tanpa suara: generate_audio=true meminta audio tersinkronisasi, sementara false meminta video tanpa suara. Gunakan adegan tertulis untuk konsep baru atau gambar untuk menetapkan subjek dan komposisi pembuka.</p><p>Jelaskan aksi visual dan suara sebagai bagian dari adegan yang sama. Tentukan subjek, latar, gerakan, dan kamera, lalu jelaskan suara manusia, efek suara, atau musik latar yang dituju. Adegan potret dapat menampilkan orang membuka mata saat kamera perlahan menjauh, dengan angin di lingkungan sekitar. Untuk adegan produk, hubungkan suara dengan peristiwa yang terlihat, seperti tutup terbuka atau objek menyentuh permukaan, alih-alih menambahkan daftar efek yang tidak berkaitan.</p><p>Model dapat menghasilkan suara manusia, efek, dan musik latar dari prompt serta konten visual. Panduan merekomendasikan dialog yang diucapkan ditempatkan di dalam tanda petik ganda. Buat ucapan cukup singkat untuk aksi dan jeda yang diminta, serta bedakan pembicara ketika melibatkan lebih dari satu karakter. Tinjau kata yang benar-benar diucapkan, atribusi suara, dan sinkronisasi dengan gambar bergerak. Instruksi suara mengarahkan penampilan yang dihasilkan; instruksi itu bukan masukan rujukan suara terpisah yang diunggah dalam permintaan yang didokumentasikan untuk profil ini.</p><p>Gambar-ke-video menggunakan item image_url bersama teks. Berikan URL gambar yang dapat diakses atau URL data Base64 dalam format JPEG, PNG, WEBP, BMP, TIFF, atau GIF. Batas gambar yang didokumentasikan adalah kurang dari 30 MB, kedua dimensi lebih dari 300 dan kurang dari 6000 piksel, serta rasio lebar terhadap tinggi lebih dari 0.4 dan kurang dari 2.5. Siapkan potongan gambar dan subjek yang dituju dengan jelas, lalu jelaskan gerakan dari komposisi itu. Contoh gambar menggunakan rasio adaptif agar mengikuti rujukan.</p><p>Panduan durasi khusus profil mencantumkan detik bulat dari empat hingga dua belas, atau -1 agar model memilih durasi dalam rentang itu. Durasi bawaannya lima detik. Seedance 1.5 Pro memiliki bawaan 720p dan tabel profil yang dipertahankan mendokumentasikan 480p serta 720p; panduan operasi khusus tidak menawarkan 1080p untuk 1.5 Pro. Pilihan rasio tetap mencakup 16:9, 4:3, 1:1, 3:4, 9:16, dan 21:9, dengan adaptive sebagai bawaan 1.5 yang didokumentasikan. Periksa durasi dan proporsi klip sebenarnya, alih-alih memperlakukan nilai yang diminta sebagai artefak yang sudah dikembalikan.</p><p>Permintaan menyediakan dua tingkat pemrosesan. service_tier=default memilih pemrosesan online, sementara flex memilih pemrosesan luring untuk pekerjaan yang dapat menerima penundaan lebih lama. Tingkat itu tidak dapat diubah setelah tugas dikirimkan. Pilih sesuai kebutuhan waktu alur kerja dan simpan pilihan tersebut dalam catatan permintaan. Mode audio dan tingkat pemrosesan merupakan pilihan terpisah: klip tanpa suara tidak otomatis menjadi pekerjaan luring, dan pengaktifan audio tidak memilih tingkat pemrosesan.</p><p>Pastikan instruksi seed, watermark, dan kamera konsisten dengan adegan. Perintah parameter yang disisipkan dalam teks lebih diutamakan daripada parameter opsional terpisah. Kontrol kamera tetap dikecualikan dalam skenario gambar rujukan dan tidak menjamin penguncian visual pada penggunaan yang didukung. Untuk animasi yang berawal dari gambar, jelaskan gerakan yang dituju secara langsung, alih-alih menganggap kontrol kamera menghilangkan kebutuhan menjelaskan pengambilan gambar.</p><p>Pemakaian diukur dalam token video: lebar keluaran × tinggi keluaran × laju bingkai × durasi keluaran / 1024. Tugas yang selesai melaporkan jumlah ini sebagai usage.completion_tokens. Simpan pemakaian yang dilaporkan bersama klip jadi dan pengaturan yang diminta. Audio aktif atau nonaktif serta pemrosesan online atau flex tetap merupakan kategori terpisah dalam biaya berbasis pemakaian.</p><p>Pengiriman mengembalikan pengenal tugas asinkron. Ikuti tugas hingga selesai, lalu simpan video yang disediakan dalam content.video_url. Masa penyimpanan berkas yang dihasilkan yang didokumentasikan adalah tujuh hari. Kontrol kedaluwarsa dihitung sejak pembuatan, memiliki bawaan 172800 detik, dan menerima nilai dari 3600 hingga 259200 detik; tugas yang belum selesai menjadi expired setelah interval yang dikonfigurasi. Simpan klip akhir, gambar asli, dan arahan visual serta audio yang tepat bersama, lalu tinjau seluruh hasil untuk aksi, identitas, kesinambungan kamera, dan keselarasan suara.</p>",
  "aboutText": "Seedance 1.5 Pro menghasilkan video dari teks atau gambar dan dapat menghasilkan suara bersama gambar bergerak. Selektor yang tepat adalah doubao-seedance-1-5-pro-251215. Kontrol audionya membedakannya dari profil Seedance 1.0 tanpa suara: generate_audio=true meminta audio tersinkronisasi, sementara false meminta video tanpa suara. Gunakan adegan tertulis untuk konsep baru atau gambar untuk menetapkan subjek dan komposisi pembuka.\n\nJelaskan aksi visual dan suara sebagai bagian dari adegan yang sama. Tentukan subjek, latar, gerakan, dan kamera, lalu jelaskan suara manusia, efek suara, atau musik latar yang dituju. Adegan potret dapat menampilkan orang membuka mata saat kamera perlahan menjauh, dengan angin di lingkungan sekitar. Untuk adegan produk, hubungkan suara dengan peristiwa yang terlihat, seperti tutup terbuka atau objek menyentuh permukaan, alih-alih menambahkan daftar efek yang tidak berkaitan.\n\nModel dapat menghasilkan suara manusia, efek, dan musik latar dari prompt serta konten visual. Panduan merekomendasikan dialog yang diucapkan ditempatkan di dalam tanda petik ganda. Buat ucapan cukup singkat untuk aksi dan jeda yang diminta, serta bedakan pembicara ketika melibatkan lebih dari satu karakter. Tinjau kata yang benar-benar diucapkan, atribusi suara, dan sinkronisasi dengan gambar bergerak. Instruksi suara mengarahkan penampilan yang dihasilkan; instruksi itu bukan masukan rujukan suara terpisah yang diunggah dalam permintaan yang didokumentasikan untuk profil ini.\n\nGambar-ke-video menggunakan item image_url bersama teks. Berikan URL gambar yang dapat diakses atau URL data Base64 dalam format JPEG, PNG, WEBP, BMP, TIFF, atau GIF. Batas gambar yang didokumentasikan adalah kurang dari 30 MB, kedua dimensi lebih dari 300 dan kurang dari 6000 piksel, serta rasio lebar terhadap tinggi lebih dari 0.4 dan kurang dari 2.5. Siapkan potongan gambar dan subjek yang dituju dengan jelas, lalu jelaskan gerakan dari komposisi itu. Contoh gambar menggunakan rasio adaptif agar mengikuti rujukan.\n\nPanduan durasi khusus profil mencantumkan detik bulat dari empat hingga dua belas, atau -1 agar model memilih durasi dalam rentang itu. Durasi bawaannya lima detik. Seedance 1.5 Pro memiliki bawaan 720p dan tabel profil yang dipertahankan mendokumentasikan 480p serta 720p; panduan operasi khusus tidak menawarkan 1080p untuk 1.5 Pro. Pilihan rasio tetap mencakup 16:9, 4:3, 1:1, 3:4, 9:16, dan 21:9, dengan adaptive sebagai bawaan 1.5 yang didokumentasikan. Periksa durasi dan proporsi klip sebenarnya, alih-alih memperlakukan nilai yang diminta sebagai artefak yang sudah dikembalikan.\n\nPermintaan menyediakan dua tingkat pemrosesan. service_tier=default memilih pemrosesan online, sementara flex memilih pemrosesan luring untuk pekerjaan yang dapat menerima penundaan lebih lama. Tingkat itu tidak dapat diubah setelah tugas dikirimkan. Pilih sesuai kebutuhan waktu alur kerja dan simpan pilihan tersebut dalam catatan permintaan. Mode audio dan tingkat pemrosesan merupakan pilihan terpisah: klip tanpa suara tidak otomatis menjadi pekerjaan luring, dan pengaktifan audio tidak memilih tingkat pemrosesan.\n\nPastikan instruksi seed, watermark, dan kamera konsisten dengan adegan. Perintah parameter yang disisipkan dalam teks lebih diutamakan daripada parameter opsional terpisah. Kontrol kamera tetap dikecualikan dalam skenario gambar rujukan dan tidak menjamin penguncian visual pada penggunaan yang didukung. Untuk animasi yang berawal dari gambar, jelaskan gerakan yang dituju secara langsung, alih-alih menganggap kontrol kamera menghilangkan kebutuhan menjelaskan pengambilan gambar.\n\nPemakaian diukur dalam token video: lebar keluaran × tinggi keluaran × laju bingkai × durasi keluaran / 1024. Tugas yang selesai melaporkan jumlah ini sebagai usage.completion_tokens. Simpan pemakaian yang dilaporkan bersama klip jadi dan pengaturan yang diminta. Audio aktif atau nonaktif serta pemrosesan online atau flex tetap merupakan kategori terpisah dalam biaya berbasis pemakaian.\n\nPengiriman mengembalikan pengenal tugas asinkron. Ikuti tugas hingga selesai, lalu simpan video yang disediakan dalam content.video_url. Masa penyimpanan berkas yang dihasilkan yang didokumentasikan adalah tujuh hari. Kontrol kedaluwarsa dihitung sejak pembuatan, memiliki bawaan 172800 detik, dan menerima nilai dari 3600 hingga 259200 detik; tugas yang belum selesai menjadi expired setelah interval yang dikonfigurasi. Simpan klip akhir, gambar asli, dan arahan visual serta audio yang tepat bersama, lalu tinjau seluruh hasil untuk aksi, identitas, kesinambungan kamera, dan keselarasan suara.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "cb0f6b98fcce18f60835acfac939e21878a8d81ab5897d7b21fc05d780d16bff",
    "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\">ByteDance: Seedance 1.5 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Tutup\">×</button></div><div class=\"idline\"><span>ByteDance /</span><code>doubao-seedance-1-5-pro-251215</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|doubao-seedance-1-5-pro-251215\">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\">Seedance 1.5 Pro menghasilkan video dari teks atau gambar dan dapat membuat suara, efek, serta musik latar yang tersinkronisasi. Audio dapat diaktifkan atau dinonaktifkan; profil yang didokumentasikan menawarkan adegan 4–12 detik, bingkai adaptif, dan pemrosesan online atau flex.</p><dl class=\"card-io\" data-card-io><div><dt>Masukan yang diterima</dt><dd>Teks · Gambar</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>Seedance 1.5 Pro menghasilkan video dari teks atau gambar dan dapat menghasilkan suara bersama gambar bergerak. Selektor yang tepat adalah doubao-seedance-1-5-pro-251215. Kontrol audionya membedakannya dari profil Seedance 1.0 tanpa suara: generate_audio=true meminta audio tersinkronisasi, sementara false meminta video tanpa suara. Gunakan adegan tertulis untuk konsep baru atau gambar untuk menetapkan subjek dan komposisi pembuka.</p><p>Jelaskan aksi visual dan suara sebagai bagian dari adegan yang sama. Tentukan subjek, latar, gerakan, dan kamera, lalu jelaskan suara manusia, efek suara, atau musik latar yang dituju. Adegan potret dapat menampilkan orang membuka mata saat kamera perlahan menjauh, dengan angin di lingkungan sekitar. Untuk adegan produk, hubungkan suara dengan peristiwa yang terlihat, seperti tutup terbuka atau objek menyentuh permukaan, alih-alih menambahkan daftar efek yang tidak berkaitan.</p><p>Model dapat menghasilkan suara manusia, efek, dan musik latar dari prompt serta konten visual. Panduan merekomendasikan dialog yang diucapkan ditempatkan di dalam tanda petik ganda. Buat ucapan cukup singkat untuk aksi dan jeda yang diminta, serta bedakan pembicara ketika melibatkan lebih dari satu karakter. Tinjau kata yang benar-benar diucapkan, atribusi suara, dan sinkronisasi dengan gambar bergerak. Instruksi suara mengarahkan penampilan yang dihasilkan; instruksi itu bukan masukan rujukan suara terpisah yang diunggah dalam permintaan yang didokumentasikan untuk profil ini.</p><p>Gambar-ke-video menggunakan item image_url bersama teks. Berikan URL gambar yang dapat diakses atau URL data Base64 dalam format JPEG, PNG, WEBP, BMP, TIFF, atau GIF. Batas gambar yang didokumentasikan adalah kurang dari 30 MB, kedua dimensi lebih dari 300 dan kurang dari 6000 piksel, serta rasio lebar terhadap tinggi lebih dari 0.4 dan kurang dari 2.5. Siapkan potongan gambar dan subjek yang dituju dengan jelas, lalu jelaskan gerakan dari komposisi itu. Contoh gambar menggunakan rasio adaptif agar mengikuti rujukan.</p><p>Panduan durasi khusus profil mencantumkan detik bulat dari empat hingga dua belas, atau -1 agar model memilih durasi dalam rentang itu. Durasi bawaannya lima detik. Seedance 1.5 Pro memiliki bawaan 720p dan tabel profil yang dipertahankan mendokumentasikan 480p serta 720p; panduan operasi khusus tidak menawarkan 1080p untuk 1.5 Pro. Pilihan rasio tetap mencakup 16:9, 4:3, 1:1, 3:4, 9:16, dan 21:9, dengan adaptive sebagai bawaan 1.5 yang didokumentasikan. Periksa durasi dan proporsi klip sebenarnya, alih-alih memperlakukan nilai yang diminta sebagai artefak yang sudah dikembalikan.</p><p>Permintaan menyediakan dua tingkat pemrosesan. service_tier=default memilih pemrosesan online, sementara flex memilih pemrosesan luring untuk pekerjaan yang dapat menerima penundaan lebih lama. Tingkat itu tidak dapat diubah setelah tugas dikirimkan. Pilih sesuai kebutuhan waktu alur kerja dan simpan pilihan tersebut dalam catatan permintaan. Mode audio dan tingkat pemrosesan merupakan pilihan terpisah: klip tanpa suara tidak otomatis menjadi pekerjaan luring, dan pengaktifan audio tidak memilih tingkat pemrosesan.</p><p>Pastikan instruksi seed, watermark, dan kamera konsisten dengan adegan. Perintah parameter yang disisipkan dalam teks lebih diutamakan daripada parameter opsional terpisah. Kontrol kamera tetap dikecualikan dalam skenario gambar rujukan dan tidak menjamin penguncian visual pada penggunaan yang didukung. Untuk animasi yang berawal dari gambar, jelaskan gerakan yang dituju secara langsung, alih-alih menganggap kontrol kamera menghilangkan kebutuhan menjelaskan pengambilan gambar.</p><p>Pemakaian diukur dalam token video: lebar keluaran × tinggi keluaran × laju bingkai × durasi keluaran / 1024. Tugas yang selesai melaporkan jumlah ini sebagai usage.completion_tokens. Simpan pemakaian yang dilaporkan bersama klip jadi dan pengaturan yang diminta. Audio aktif atau nonaktif serta pemrosesan online atau flex tetap merupakan kategori terpisah dalam biaya berbasis pemakaian.</p><p>Pengiriman mengembalikan pengenal tugas asinkron. Ikuti tugas hingga selesai, lalu simpan video yang disediakan dalam content.video_url. Masa penyimpanan berkas yang dihasilkan yang didokumentasikan adalah tujuh hari. Kontrol kedaluwarsa dihitung sejak pembuatan, memiliki bawaan 172800 detik, dan menerima nilai dari 3600 hingga 259200 detik; tugas yang belum selesai menjadi expired setelah interval yang dikonfigurasi. Simpan klip akhir, gambar asli, dan arahan visual serta audio yang tepat bersama, lalu tinjau seluruh hasil untuk aksi, identitas, kesinambungan kamera, dan keselarasan suara.</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 · Pemrosesan video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Masukan</dt><dd><code>text</code>, <code>image</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 data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>doubao-seedance-1-5-pro-251215</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">content</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>array</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>Kondisi: Objek teks/media native; array terluar harus tidak kosong. Tipe simpul bertingkat tidak divalidasi oleh konstruktor generik Ailoot ini.</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>integer</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Kondisi: Skema utama 1.x menetapkan 2–12; deskripsi bersama yang lebih baru menyebut 1.5 sebagai 4–12 atau -1. Contoh menggunakan 5 yang didokumentasikan oleh keduanya.</div></td><td data-cell-label=\"Bawaan\" data-default=\"known\"><span class=\"card-cell-label\">Bawaan</span>5</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>480p, 720p</div><div>Kondisi: Seedance 1.5 Pro mendukung 480p dan 720p; 1080p dikecualikan. Resolusi bawaan yang didokumentasikan adalah 720p.</div></td><td data-cell-label=\"Bawaan\" data-default=\"known\"><span class=\"card-cell-label\">Bawaan</span>720p</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">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>16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive</div><div>Kondisi: Rasio bawaan Seedance 1.5 Pro yang didokumentasikan adalah adaptive. Pilihan rasio tetap tidak berubah.</div></td><td data-cell-label=\"Bawaan\" data-default=\"known\"><span class=\"card-cell-label\">Bawaan</span>adaptive</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">service_tier</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>default, flex</div><div>Kondisi: default=online, flex=offline; pilih sebelum pembuatan.</div></td><td data-cell-label=\"Bawaan\" data-default=\"known\"><span class=\"card-cell-label\">Bawaan</span>default</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">seed</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>integer</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Minimum: -1</div><div>Maksimum: 4.294.967.295</div></td><td data-cell-label=\"Bawaan\" data-default=\"known\"><span class=\"card-cell-label\">Bawaan</span>-1</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">camerafixed</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>boolean</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Kondisi: Diwajibkan oleh Ailoot; kontrol kamera pada gambar referensi didokumentasikan sebagai tidak didukung dan efeknya tidak dijamin.</div></td><td data-cell-label=\"Bawaan\" data-default=\"known\"><span class=\"card-cell-label\">Bawaan</span>false</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">watermark</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>boolean</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span></td><td data-cell-label=\"Bawaan\" data-default=\"known\"><span class=\"card-cell-label\">Bawaan</span>false</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">execution_expires_after</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>integer</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Minimum: 3.600</div><div>Maksimum: 259.200</div><div>Satuan: detik</div></td><td data-cell-label=\"Bawaan\" data-default=\"known\"><span class=\"card-cell-label\">Bawaan</span>172.800</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>boolean</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Opsional</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Kondisi: Suara tersinkron yang tertanam dalam video yang dibuat, khusus 1.5.</div></td><td data-cell-label=\"Bawaan\" data-default=\"known\"><span class=\"card-cell-label\">Bawaan</span>true</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinasi bahan masukan</summary><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p></details><details class=\"note-s\" data-method-contract><summary>Parameter metode dan siklus hidup</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrak</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>camerafixed, content, execution_expires_after, model, seed, watermark</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>duration, resolution, ratio, service_tier, generate_audio</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>text, image</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>additional_properties</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>true</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>validation_scope</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>Ailoot memeriksa tipe bidang wajib serta model dan array content yang tidak kosong. Bidang permintaan lainnya dipertahankan untuk model yang dipilih.</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>image_constraints</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>{&quot;formats&quot;:[&quot;jpeg&quot;,&quot;png&quot;,&quot;webp&quot;,&quot;bmp&quot;,&quot;tiff&quot;,&quot;gif&quot;],&quot;aspect_ratio_exclusive&quot;:[0.4,2.5],&quot;dimensions_px_exclusive&quot;:[300,6000],&quot;file_size_mb_exclusive&quot;:30,&quot;mb_bytes_definition&quot;:null}</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/videos/generations/{request_id}/content</code></p><p class=\"note-s\">Buat sekali dan simpan id/polling_url publik yang dikembalikan.</p><p class=\"note-s\">Periksa tugas awal secara berkala; unduh content.video_url aktual milik Ailoot setelah succeeded.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Paket</h3><div class=\"card-result-process\" data-billing-basis><h5>Cara menghitung biaya akhir</h5><p class=\"note-s\">Tarif yang ditampilkan memperkirakan biaya sebelum pembuatan. Biaya akhir dihitung dari biaya yang tercatat untuk proses pembuatan awal. Durasi keluaran yang terukur dan kuantitas perkiraan bukanlah kuantitas akhir yang ditagihkan.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.</p><dl data-price-conditions><dt>Mode Fast</dt><dd>Tidak ditentukan <span class=\"note-s\">Saat mode fast dipilih</span></dd><dt>Mode Flex</dt><dd>Tidak ditentukan <span class=\"note-s\">Saat mode flex dipilih</span></dd><dt>Upaya penalaran maksimum</dt><dd>Tidak ditentukan <span class=\"note-s\">Saat upaya penalaran maksimum menggunakan penyesuaian default</span></dd></dl></div><div data-declared-tariff-pricing><h4>Perkiraan tarif untuk perbandingan</h4><h4>Harga menurut konfigurasi</h4><p class=\"note-s\">Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasi</th><th>Jadwal tarif</th><th>Jumlah perkiraan</th><th>Buat audio</th><th>Tingkat layanan</th><th>Satuan penagihan</th><th>Biaya</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Tarif dasar token</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>Tarif dasar</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>—</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>—</td><td data-cell-label=\"Tingkat layanan\"><span class=\"card-cell-label\">Tingkat layanan</span>—</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>—</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Masukan · Token masukan · 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>Tingkat layanan Offline (flex). Keluaran dengan audio tersinkronisasi.</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>—</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>Dengan audio</td><td data-cell-label=\"Tingkat layanan\"><span class=\"card-cell-label\">Tingkat layanan</span>flex</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per 1K token video</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Perkiraan hanya untuk perbandingan</span> <b>$0.0024</b> <span class=\"price-unit\">per 1K token video</span></div></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Tingkat layanan Offline (flex). Keluaran tanpa audio tersinkronisasi.</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>—</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>Tanpa audio</td><td data-cell-label=\"Tingkat layanan\"><span class=\"card-cell-label\">Tingkat layanan</span>flex</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per 1K token video</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Perkiraan hanya untuk perbandingan</span> <b>$0.0012</b> <span class=\"price-unit\">per 1K token video</span></div></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Tingkat layanan Online (default). Keluaran dengan audio tersinkronisasi.</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>—</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>Dengan audio</td><td data-cell-label=\"Tingkat layanan\"><span class=\"card-cell-label\">Tingkat layanan</span>default</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per 1K token video</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Perkiraan hanya untuk perbandingan</span> <b>$0.0048</b> <span class=\"price-unit\">per 1K token video</span></div></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Tingkat layanan Online (default). Keluaran tanpa audio tersinkronisasi.</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah perkiraan\"><span class=\"card-cell-label\">Jumlah perkiraan</span>—</td><td data-cell-label=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>Tanpa audio</td><td data-cell-label=\"Tingkat layanan\"><span class=\"card-cell-label\">Tingkat layanan</span>default</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per 1K token video</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Perkiraan hanya untuk perbandingan</span> <b>$0.0024</b> <span class=\"price-unit\">per 1K token video</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=\"Buat audio\"><span class=\"card-cell-label\">Buat audio</span>—</td><td data-cell-label=\"Tingkat layanan\"><span class=\"card-cell-label\">Tingkat layanan</span>—</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>—</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Keluaran · Perkiraan biaya pembuatan · Perkiraan hanya untuk perbandingan</span> <b>$0.1152</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 · Pemrosesan 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-2778-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2778-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · buat video</button><button class=\"cg-tab\" id=\"model-code-2778-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2778-panel-1\" aria-selected=\"false\" tabindex=\"-1\">curl · baca tugas asli</button><button class=\"cg-tab\" id=\"model-code-2778-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2778-panel-2\" aria-selected=\"false\" tabindex=\"-1\">curl · unduh video milik Anda</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Salin kode\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2778-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2778-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON_REQUEST&#39;\n{&quot;model&quot;:&quot;doubao-seedance-1-5-pro-251215&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动&quot;}],&quot;resolution&quot;:&quot;480p&quot;,&quot;ratio&quot;:&quot;1:1&quot;,&quot;duration&quot;:5,&quot;service_tier&quot;:&quot;default&quot;,&quot;seed&quot;:-1,&quot;camerafixed&quot;:false,&quot;watermark&quot;:false,&quot;execution_expires_after&quot;:172800,&quot;generate_audio&quot;:false}\nJSON_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</code></pre></div><div class=\"cg-pane\" id=\"model-code-2778-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2778-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_POLL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\ni=r.get(&quot;id&quot;)\nif not isinstance(i,str) or not i.startswith(&quot;native302_&quot;):raise SystemExit(&quot;Keep original response/headers/id; do not resubmit creation.&quot;)\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r.get(&quot;polling_url&quot;) or &quot;/v1/videos/&quot;+quote(i,safe=&quot;&quot;))\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/videos/&quot;):raise SystemExit(&quot;Use actual Ailoot lookup path.&quot;)\nPath(&quot;poll-url.txt&quot;).write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error &quot;$(cat poll-url.txt)&quot; -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2778-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2778-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nif r.get(&quot;status&quot;)!=&quot;succeeded&quot;:raise SystemExit(&quot;Poll same original job until an owned result is returned.&quot;)\nu=r.get(&quot;content&quot;,{}).get(&quot;video_url&quot;)\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(&quot;No completed video URL.&quot;)\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(&quot;Invalid returned URL.&quot;)\n    p=urlsplit(u)\n    if p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/media/assets/&quot;) or not p.path.endswith(&quot;/content&quot;) or not p.query:raise SystemExit(&quot;Wait for actual Ailoot-owned signed result.&quot;)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; -o &quot;video-${index}.bin&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\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 · Pemrosesan video</h4><p class=\"note-s\">JSON native dengan id/polling_url publik. Setelah publikasi, content.video_url memuat URL bertanda tangan milik Ailoot; sebelum publikasi, URL keluaran yang dipilih dikosongkan.</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/videos/generations/{request_id}/content</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Simpan semua hasil yang selesai</h5><p class=\"note-s\">Simpan setiap video yang selesai atau berkas yang dikembalikan; ambil setiap URL aset yang benar-benar dikembalikan.</p><p class=\"note-s\">Simpan setiap URL aktual dalam content.video_url; index harus mengidentifikasi keluaran nyata yang dikembalikan.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asli perlu diperiksa</h5><p class=\"note-s\">Simpan respons/header/id asli dan periksa operasi tersebut secara berkala; jangan pernah kirim ulang pembuatan yang statusnya tidak diketahui.</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\">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\">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\">status</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string when supplied</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">content.video_url</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string|string[]</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>object when supplied</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>JSON/model/tipe bidang wajib atau indeks content tidak valid.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span></td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Kunci API Ailoot tidak valid.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span></td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Tugas/keluaran tidak ada atau tidak dimiliki oleh pengguna/kunci API/grup yang sama.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span></td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>502 · <code>result_pending_check</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Pengiriman/status awal tidak lengkap; simpan ID asli, jangan kirim ulang.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span></td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Media/rute/penyelesaian tagihan awal sedang diperiksa; lanjutkan operasi awal.</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span></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=doubao-seedance-1-5-pro-251215&amp;route=Ultra&amp;caller=doubao-seedance-1-5-pro-251215&amp;fmt=videos\"><code>doubao-seedance-1-5-pro-251215</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=doubao-seedance-1-5-pro-251215&amp;route=Ultra&amp;caller=doubao-seedance-1-5-pro-251215&amp;fmt=videos\"><code>doubao-seedance-1-5-pro-251215</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "doubao-seedance-1-5-pro-251215",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "doubao-seedance-1-5-pro-251215",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|doubao-seedance-1-5-pro-251215",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Tarif yang ditampilkan memperkirakan biaya sebelum pembuatan. Biaya akhir dihitung dari biaya yang tercatat untuk proses pembuatan awal. Durasi keluaran yang terukur dan kuantitas perkiraan bukanlah kuantitas akhir yang ditagihkan.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "errors": [
              {
                "condition": "JSON/model/tipe bidang wajib atau indeks content tidak valid.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Kunci API Ailoot tidak valid.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "Tugas/keluaran tidak ada atau tidak dimiliki oleh pengguna/kunci API/grup yang sama.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Pengiriman/status awal tidak lengkap; simpan ID asli, jangan kirim ulang.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Media/rute/penyelesaian tagihan awal sedang diperiksa; lanjutkan operasi awal.",
                "http_status": 503,
                "type": "result_pending_check"
              }
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "succeeded"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed",
                "expired"
              ],
              "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "queued",
                "running"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Simpan respons/header/id asli dan periksa operasi tersebut secara berkala; jangan pernah kirim ulang pembuatan yang statusnya tidak diketahui.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ],
              [
                "text",
                "image"
              ]
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video"
            ],
            "outputs": {
              "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
              "all_results": "Simpan setiap URL aktual dalam content.video_url; index harus mengidentifikasi keluaran nyata yang dikembalikan.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string when supplied"
                },
                {
                  "description": null,
                  "name": "content.video_url",
                  "type": "string|string[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "JSON native dengan id/polling_url publik. Setelah publikasi, content.video_url memuat URL bertanda tangan milik Ailoot; sebelum publikasi, URL keluaran yang dipilih dikosongkan."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "doubao-seedance-1-5-pro-251215"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Objek teks/media native; array terluar harus tidak kosong. Tipe simpul bertingkat tidak divalidasi oleh konstruktor generik Ailoot ini.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minItems": 1,
                "name": "content",
                "required": true,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "Skema utama 1.x menetapkan 2–12; deskripsi bersama yang lebih baru menyebut 1.5 sebagai 4–12 atau -1. Contoh menggunakan 5 yang didokumentasikan oleh keduanya.",
                "default": 5,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Seedance 1.5 Pro mendukung 480p dan 720p; 1080p dikecualikan. Resolusi bawaan yang didokumentasikan adalah 720p.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Rasio bawaan Seedance 1.5 Pro yang didokumentasikan adalah adaptive. Pilihan rasio tetap tidak berubah.",
                "default": "adaptive",
                "default_known": true,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "21:9",
                  "adaptive"
                ],
                "enum_known": true,
                "name": "ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "default=online, flex=offline; pilih sebelum pembuatan.",
                "default": "default",
                "default_known": true,
                "enum": [
                  "default",
                  "flex"
                ],
                "enum_known": true,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": -1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 4294967295,
                "minimum": -1,
                "name": "seed",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Diwajibkan oleh Ailoot; kontrol kamera pada gambar referensi didokumentasikan sebagai tidak didukung dan efeknya tidak dijamin.",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "camerafixed",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "watermark",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": 172800,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 259200,
                "minimum": 3600,
                "name": "execution_expires_after",
                "required": true,
                "type": "integer",
                "unit": "detik"
              },
              {
                "availability": "source_interface",
                "conditions": "Suara tersinkron yang tertanam dalam video yang dibuat, khusus 1.5.",
                "default": true,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "generate_audio",
                "required": false,
                "type": "boolean"
              }
            ],
            "profile_binding": "Exact model ID and documented Ailoot video interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "camerafixed": {
                  "type": "boolean"
                },
                "content": {
                  "items": {
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "duration": {
                  "type": "integer"
                },
                "execution_expires_after": {
                  "maximum": 259200,
                  "minimum": 3600,
                  "type": "integer"
                },
                "generate_audio": {
                  "type": "boolean"
                },
                "model": {
                  "const": "doubao-seedance-1-5-pro-251215",
                  "type": "string"
                },
                "ratio": {
                  "default": "adaptive",
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9",
                    "adaptive"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "default": "720p",
                  "enum": [
                    "480p",
                    "720p"
                  ],
                  "type": "string"
                },
                "seed": {
                  "maximum": 4294967295,
                  "minimum": -1,
                  "type": "integer"
                },
                "service_tier": {
                  "enum": [
                    "default",
                    "flex"
                  ],
                  "type": "string"
                },
                "watermark": {
                  "type": "boolean"
                }
              },
              "required": [
                "camerafixed",
                "content",
                "execution_expires_after",
                "model",
                "seed",
                "watermark"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "1.5 bounds conflict: primary 1.x 2–12 versus later model-specific 4–12 or -1. No resolved bound for this persisted1.x path.",
              "Primary content.items.required says type+text even for its image example without text; preserve intended example branches and outer-array validation boundary."
            ],
            "unsupported": [
              "Separate cancel/delete for this generic method",
              "Separate edit/extension endpoint for this method"
            ]
          },
          "hints": [
            "Buat sekali dan simpan id/polling_url publik yang dikembalikan.",
            "Periksa tugas awal secara berkala; unduh content.video_url aktual milik Ailoot setelah succeeded."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "image_constraints": {
              "aspect_ratio_exclusive": [
                0.4,
                2.5
              ],
              "dimensions_px_exclusive": [
                300,
                6000
              ],
              "file_size_mb_exclusive": 30,
              "formats": [
                "jpeg",
                "png",
                "webp",
                "bmp",
                "tiff",
                "gif"
              ],
              "mb_bytes_definition": null
            },
            "material_types": [
              "text",
              "image"
            ],
            "optional": [
              "duration",
              "resolution",
              "ratio",
              "service_tier",
              "generate_audio"
            ],
            "required": [
              "camerafixed",
              "content",
              "execution_expires_after",
              "model",
              "seed",
              "watermark"
            ],
            "validation_scope": "Ailoot memeriksa tipe bidang wajib serta model dan array content yang tidak kosong. Bidang permintaan lainnya dipertahankan untuk model yang dipilih."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "succeeded"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed",
              "expired"
            ],
            "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "queued",
              "running"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "Preserve original response/headers/id and poll that operation; never resubmit unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text",
              "image"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video",
            "image_to_video"
          ],
          "output": {
            "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
            "all_results": "Retain every actual URL in content.video_url; index must identify a real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": "string"
              },
              {
                "description": null,
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": null,
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": null,
                "name": "status",
                "type": "string when supplied"
              },
              {
                "description": null,
                "name": "content.video_url",
                "type": "string|string[]"
              },
              {
                "description": null,
                "name": "usage",
                "type": "object when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "Native JSON with public id/polling_url. After publication content.video_url contains Ailoot-owned signed URL(s); before publication selected output URLs are blanked."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": true,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "flex"
            },
            "label": "Tingkat layanan Offline (flex). Keluaran dengan audio tersinkronisasi.",
            "units": [
              {
                "amount": "0.0024000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_flex_with_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000024",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": false,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "flex"
            },
            "label": "Tingkat layanan Offline (flex). Keluaran tanpa audio tersinkronisasi.",
            "units": [
              {
                "amount": "0.0012000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_flex_without_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000012",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": true,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "default"
            },
            "label": "Tingkat layanan Online (default). Keluaran dengan audio tersinkronisasi.",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_online_with_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": false,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "default"
            },
            "label": "Tingkat layanan Online (default). Keluaran tanpa audio tersinkronisasi.",
            "units": [
              {
                "amount": "0.0024000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_online_without_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000024",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_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": "0.1152",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1152",
                "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}\"\ncat > request.json <<'JSON_REQUEST'\n{\"model\":\"doubao-seedance-1-5-pro-251215\",\"content\":[{\"type\":\"text\",\"text\":\"女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动\"}],\"resolution\":\"480p\",\"ratio\":\"1:1\",\"duration\":5,\"service_tier\":\"default\",\"seed\":-1,\"camerafixed\":false,\"watermark\":false,\"execution_expires_after\":172800,\"generate_audio\":false}\nJSON_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",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i.startswith(\"native302_\"):raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"status\")!=\"succeeded\":raise SystemExit(\"Poll same original job until an owned result is returned.\")\nu=r.get(\"content\",{}).get(\"video_url\")\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(\"No completed video URL.\")\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n    p=urlsplit(u)\n    if p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/media/assets/\") or not p.path.endswith(\"/content\") or not p.query:raise SystemExit(\"Wait for actual Ailoot-owned signed result.\")\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain returned public id/polling_url.",
          "Poll the original job; download actual owned content.video_url after succeeded."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Pemrosesan 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"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": true,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "flex"
            },
            "label": "Offline service tier (flex). Output with synchronized audio.",
            "units": [
              {
                "amount": "0.0024000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_flex_with_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000024",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": false,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "flex"
            },
            "label": "Offline service tier (flex). Output without synchronized audio.",
            "units": [
              {
                "amount": "0.0012000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_flex_without_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000012",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": true,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "default"
            },
            "label": "Online service tier (default). Output with synchronized audio.",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_online_with_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": false,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "default"
            },
            "label": "Online service tier (default). Output without synchronized audio.",
            "units": [
              {
                "amount": "0.0024000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_online_without_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000024",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_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": "0.1152",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1152",
                "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": "doubao-seedance-1-5-pro-251215",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0024000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_flex_with_audio",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.0000024",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.0012000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_flex_without_audio",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.0000012",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.0048000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_online_with_audio",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.0000048",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.0024000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_online_without_audio",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.0000024",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.1152",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.1152",
            "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": "doubao-seedance-1-5-pro-251215",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "4f1c1b80b79d85ecee473d629d2d4167fa179a4d605d632682a8a516b7846c28",
    "input_html_sha256": "904dcf2e9cc9278b8ce10556dea4acd0f31babb392d890fcf18a6f62b58627f7",
    "private_audit_sha256": "d4b0b5e9fd18bfdf60b5bb54836f07d59d339ff71aea7457dfe569679da0939a",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/id/doubao-seedance-1-5-pro-251215/",
    "description": "Seedance 1.5 Pro menghasilkan video dari teks atau gambar dan dapat membuat suara, efek, serta musik latar yang tersinkronisasi. Audio dapat diaktifkan atau dinonaktifkan; profil yang didokumentasikan menawarkan adegan 4–12 detik, bingkai adaptif, dan pemrosesan online atau flex.",
    "locale": "id",
    "md_url": "https://ailoot.ai/models/id/doubao-seedance-1-5-pro-251215/index.md",
    "title": "ByteDance: Seedance 1.5 Pro — Ailoot",
    "url": "https://ailoot.ai/models/id/doubao-seedance-1-5-pro-251215/"
  },
  "rawModel": {
    "about": "Seedance 1.5 Pro menghasilkan video dari teks atau gambar dan dapat menghasilkan suara bersama gambar bergerak. Selektor yang tepat adalah doubao-seedance-1-5-pro-251215. Kontrol audionya membedakannya dari profil Seedance 1.0 tanpa suara: generate_audio=true meminta audio tersinkronisasi, sementara false meminta video tanpa suara. Gunakan adegan tertulis untuk konsep baru atau gambar untuk menetapkan subjek dan komposisi pembuka.\n\nJelaskan aksi visual dan suara sebagai bagian dari adegan yang sama. Tentukan subjek, latar, gerakan, dan kamera, lalu jelaskan suara manusia, efek suara, atau musik latar yang dituju. Adegan potret dapat menampilkan orang membuka mata saat kamera perlahan menjauh, dengan angin di lingkungan sekitar. Untuk adegan produk, hubungkan suara dengan peristiwa yang terlihat, seperti tutup terbuka atau objek menyentuh permukaan, alih-alih menambahkan daftar efek yang tidak berkaitan.\n\nModel dapat menghasilkan suara manusia, efek, dan musik latar dari prompt serta konten visual. Panduan merekomendasikan dialog yang diucapkan ditempatkan di dalam tanda petik ganda. Buat ucapan cukup singkat untuk aksi dan jeda yang diminta, serta bedakan pembicara ketika melibatkan lebih dari satu karakter. Tinjau kata yang benar-benar diucapkan, atribusi suara, dan sinkronisasi dengan gambar bergerak. Instruksi suara mengarahkan penampilan yang dihasilkan; instruksi itu bukan masukan rujukan suara terpisah yang diunggah dalam permintaan yang didokumentasikan untuk profil ini.\n\nGambar-ke-video menggunakan item image_url bersama teks. Berikan URL gambar yang dapat diakses atau URL data Base64 dalam format JPEG, PNG, WEBP, BMP, TIFF, atau GIF. Batas gambar yang didokumentasikan adalah kurang dari 30 MB, kedua dimensi lebih dari 300 dan kurang dari 6000 piksel, serta rasio lebar terhadap tinggi lebih dari 0.4 dan kurang dari 2.5. Siapkan potongan gambar dan subjek yang dituju dengan jelas, lalu jelaskan gerakan dari komposisi itu. Contoh gambar menggunakan rasio adaptif agar mengikuti rujukan.\n\nPanduan durasi khusus profil mencantumkan detik bulat dari empat hingga dua belas, atau -1 agar model memilih durasi dalam rentang itu. Durasi bawaannya lima detik. Seedance 1.5 Pro memiliki bawaan 720p dan tabel profil yang dipertahankan mendokumentasikan 480p serta 720p; panduan operasi khusus tidak menawarkan 1080p untuk 1.5 Pro. Pilihan rasio tetap mencakup 16:9, 4:3, 1:1, 3:4, 9:16, dan 21:9, dengan adaptive sebagai bawaan 1.5 yang didokumentasikan. Periksa durasi dan proporsi klip sebenarnya, alih-alih memperlakukan nilai yang diminta sebagai artefak yang sudah dikembalikan.\n\nPermintaan menyediakan dua tingkat pemrosesan. service_tier=default memilih pemrosesan online, sementara flex memilih pemrosesan luring untuk pekerjaan yang dapat menerima penundaan lebih lama. Tingkat itu tidak dapat diubah setelah tugas dikirimkan. Pilih sesuai kebutuhan waktu alur kerja dan simpan pilihan tersebut dalam catatan permintaan. Mode audio dan tingkat pemrosesan merupakan pilihan terpisah: klip tanpa suara tidak otomatis menjadi pekerjaan luring, dan pengaktifan audio tidak memilih tingkat pemrosesan.\n\nPastikan instruksi seed, watermark, dan kamera konsisten dengan adegan. Perintah parameter yang disisipkan dalam teks lebih diutamakan daripada parameter opsional terpisah. Kontrol kamera tetap dikecualikan dalam skenario gambar rujukan dan tidak menjamin penguncian visual pada penggunaan yang didukung. Untuk animasi yang berawal dari gambar, jelaskan gerakan yang dituju secara langsung, alih-alih menganggap kontrol kamera menghilangkan kebutuhan menjelaskan pengambilan gambar.\n\nPemakaian diukur dalam token video: lebar keluaran × tinggi keluaran × laju bingkai × durasi keluaran / 1024. Tugas yang selesai melaporkan jumlah ini sebagai usage.completion_tokens. Simpan pemakaian yang dilaporkan bersama klip jadi dan pengaturan yang diminta. Audio aktif atau nonaktif serta pemrosesan online atau flex tetap merupakan kategori terpisah dalam biaya berbasis pemakaian.\n\nPengiriman mengembalikan pengenal tugas asinkron. Ikuti tugas hingga selesai, lalu simpan video yang disediakan dalam content.video_url. Masa penyimpanan berkas yang dihasilkan yang didokumentasikan adalah tujuh hari. Kontrol kedaluwarsa dihitung sejak pembuatan, memiliki bawaan 172800 detik, dan menerima nilai dari 3600 hingga 259200 detik; tugas yang belum selesai menjadi expired setelah interval yang dikonfigurasi. Simpan klip akhir, gambar asli, dan arahan visual serta audio yang tepat bersama, lalu tinjau seluruh hasil untuk aksi, identitas, kesinambungan kamera, dan keselarasan suara.",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.1152",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.1152",
            "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": "ByteDance: Seedance 1.5 Pro",
    "formats": [
      "videos"
    ],
    "id": "doubao-seedance-1-5-pro-251215",
    "input": [
      "text",
      "image"
    ],
    "kind": "video",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Tarif yang ditampilkan memperkirakan biaya sebelum pembuatan. Biaya akhir dihitung dari biaya yang tercatat untuk proses pembuatan awal. Durasi keluaran yang terukur dan kuantitas perkiraan bukanlah kuantitas akhir yang ditagihkan.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "errors": [
              {
                "condition": "JSON/model/tipe bidang wajib atau indeks content tidak valid.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Kunci API Ailoot tidak valid.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "Tugas/keluaran tidak ada atau tidak dimiliki oleh pengguna/kunci API/grup yang sama.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Pengiriman/status awal tidak lengkap; simpan ID asli, jangan kirim ulang.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Media/rute/penyelesaian tagihan awal sedang diperiksa; lanjutkan operasi awal.",
                "http_status": 503,
                "type": "result_pending_check"
              }
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "succeeded"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed",
                "expired"
              ],
              "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "queued",
                "running"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Simpan respons/header/id asli dan periksa operasi tersebut secara berkala; jangan pernah kirim ulang pembuatan yang statusnya tidak diketahui.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ],
              [
                "text",
                "image"
              ]
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video"
            ],
            "outputs": {
              "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
              "all_results": "Simpan setiap URL aktual dalam content.video_url; index harus mengidentifikasi keluaran nyata yang dikembalikan.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string when supplied"
                },
                {
                  "description": null,
                  "name": "content.video_url",
                  "type": "string|string[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "JSON native dengan id/polling_url publik. Setelah publikasi, content.video_url memuat URL bertanda tangan milik Ailoot; sebelum publikasi, URL keluaran yang dipilih dikosongkan."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "doubao-seedance-1-5-pro-251215"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Objek teks/media native; array terluar harus tidak kosong. Tipe simpul bertingkat tidak divalidasi oleh konstruktor generik Ailoot ini.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minItems": 1,
                "name": "content",
                "required": true,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "Skema utama 1.x menetapkan 2–12; deskripsi bersama yang lebih baru menyebut 1.5 sebagai 4–12 atau -1. Contoh menggunakan 5 yang didokumentasikan oleh keduanya.",
                "default": 5,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Seedance 1.5 Pro mendukung 480p dan 720p; 1080p dikecualikan. Resolusi bawaan yang didokumentasikan adalah 720p.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Rasio bawaan Seedance 1.5 Pro yang didokumentasikan adalah adaptive. Pilihan rasio tetap tidak berubah.",
                "default": "adaptive",
                "default_known": true,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "21:9",
                  "adaptive"
                ],
                "enum_known": true,
                "name": "ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "default=online, flex=offline; pilih sebelum pembuatan.",
                "default": "default",
                "default_known": true,
                "enum": [
                  "default",
                  "flex"
                ],
                "enum_known": true,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": -1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 4294967295,
                "minimum": -1,
                "name": "seed",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Diwajibkan oleh Ailoot; kontrol kamera pada gambar referensi didokumentasikan sebagai tidak didukung dan efeknya tidak dijamin.",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "camerafixed",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "watermark",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": 172800,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 259200,
                "minimum": 3600,
                "name": "execution_expires_after",
                "required": true,
                "type": "integer",
                "unit": "detik"
              },
              {
                "availability": "source_interface",
                "conditions": "Suara tersinkron yang tertanam dalam video yang dibuat, khusus 1.5.",
                "default": true,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "generate_audio",
                "required": false,
                "type": "boolean"
              }
            ],
            "profile_binding": "Exact model ID and documented Ailoot video interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "camerafixed": {
                  "type": "boolean"
                },
                "content": {
                  "items": {
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "duration": {
                  "type": "integer"
                },
                "execution_expires_after": {
                  "maximum": 259200,
                  "minimum": 3600,
                  "type": "integer"
                },
                "generate_audio": {
                  "type": "boolean"
                },
                "model": {
                  "const": "doubao-seedance-1-5-pro-251215",
                  "type": "string"
                },
                "ratio": {
                  "default": "adaptive",
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9",
                    "adaptive"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "default": "720p",
                  "enum": [
                    "480p",
                    "720p"
                  ],
                  "type": "string"
                },
                "seed": {
                  "maximum": 4294967295,
                  "minimum": -1,
                  "type": "integer"
                },
                "service_tier": {
                  "enum": [
                    "default",
                    "flex"
                  ],
                  "type": "string"
                },
                "watermark": {
                  "type": "boolean"
                }
              },
              "required": [
                "camerafixed",
                "content",
                "execution_expires_after",
                "model",
                "seed",
                "watermark"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "1.5 bounds conflict: primary 1.x 2–12 versus later model-specific 4–12 or -1. No resolved bound for this persisted1.x path.",
              "Primary content.items.required says type+text even for its image example without text; preserve intended example branches and outer-array validation boundary."
            ],
            "unsupported": [
              "Separate cancel/delete for this generic method",
              "Separate edit/extension endpoint for this method"
            ]
          },
          "hints": [
            "Buat sekali dan simpan id/polling_url publik yang dikembalikan.",
            "Periksa tugas awal secara berkala; unduh content.video_url aktual milik Ailoot setelah succeeded."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "image_constraints": {
              "aspect_ratio_exclusive": [
                0.4,
                2.5
              ],
              "dimensions_px_exclusive": [
                300,
                6000
              ],
              "file_size_mb_exclusive": 30,
              "formats": [
                "jpeg",
                "png",
                "webp",
                "bmp",
                "tiff",
                "gif"
              ],
              "mb_bytes_definition": null
            },
            "material_types": [
              "text",
              "image"
            ],
            "optional": [
              "duration",
              "resolution",
              "ratio",
              "service_tier",
              "generate_audio"
            ],
            "required": [
              "camerafixed",
              "content",
              "execution_expires_after",
              "model",
              "seed",
              "watermark"
            ],
            "validation_scope": "Ailoot memeriksa tipe bidang wajib serta model dan array content yang tidak kosong. Bidang permintaan lainnya dipertahankan untuk model yang dipilih."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "succeeded"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed",
              "expired"
            ],
            "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "queued",
              "running"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "Preserve original response/headers/id and poll that operation; never resubmit unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text",
              "image"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video",
            "image_to_video"
          ],
          "output": {
            "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
            "all_results": "Retain every actual URL in content.video_url; index must identify a real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": "string"
              },
              {
                "description": null,
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": null,
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": null,
                "name": "status",
                "type": "string when supplied"
              },
              {
                "description": null,
                "name": "content.video_url",
                "type": "string|string[]"
              },
              {
                "description": null,
                "name": "usage",
                "type": "object when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "Native JSON with public id/polling_url. After publication content.video_url contains Ailoot-owned signed URL(s); before publication selected output URLs are blanked."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": true,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "flex"
            },
            "label": "Tingkat layanan Offline (flex). Keluaran dengan audio tersinkronisasi.",
            "units": [
              {
                "amount": "0.0024000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_flex_with_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000024",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": false,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "flex"
            },
            "label": "Tingkat layanan Offline (flex). Keluaran tanpa audio tersinkronisasi.",
            "units": [
              {
                "amount": "0.0012000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_flex_without_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000012",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": true,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "default"
            },
            "label": "Tingkat layanan Online (default). Keluaran dengan audio tersinkronisasi.",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_online_with_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": false,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "default"
            },
            "label": "Tingkat layanan Online (default). Keluaran tanpa audio tersinkronisasi.",
            "units": [
              {
                "amount": "0.0024000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_online_without_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000024",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_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": "0.1152",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1152",
                "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}\"\ncat > request.json <<'JSON_REQUEST'\n{\"model\":\"doubao-seedance-1-5-pro-251215\",\"content\":[{\"type\":\"text\",\"text\":\"女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动\"}],\"resolution\":\"480p\",\"ratio\":\"1:1\",\"duration\":5,\"service_tier\":\"default\",\"seed\":-1,\"camerafixed\":false,\"watermark\":false,\"execution_expires_after\":172800,\"generate_audio\":false}\nJSON_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",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i.startswith(\"native302_\"):raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"status\")!=\"succeeded\":raise SystemExit(\"Poll same original job until an owned result is returned.\")\nu=r.get(\"content\",{}).get(\"video_url\")\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(\"No completed video URL.\")\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n    p=urlsplit(u)\n    if p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/media/assets/\") or not p.path.endswith(\"/content\") or not p.query:raise SystemExit(\"Wait for actual Ailoot-owned signed result.\")\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain returned public id/polling_url.",
          "Poll the original job; download actual owned content.video_url after succeeded."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Pemrosesan 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"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": true,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "flex"
            },
            "label": "Offline service tier (flex). Output with synchronized audio.",
            "units": [
              {
                "amount": "0.0024000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_flex_with_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000024",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": false,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "flex"
            },
            "label": "Offline service tier (flex). Output without synchronized audio.",
            "units": [
              {
                "amount": "0.0012000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_flex_without_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000012",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": true,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "default"
            },
            "label": "Online service tier (default). Output with synchronized audio.",
            "units": [
              {
                "amount": "0.0048000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_online_with_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000048",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "generate_audio": false,
              "quoted_unit": "per 1,000 video tokens",
              "service_tier": "default"
            },
            "label": "Online service tier (default). Output without synchronized audio.",
            "units": [
              {
                "amount": "0.0024000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_online_without_audio",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000024",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_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": "0.1152",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1152",
                "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": "doubao-seedance-1-5-pro-251215",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0024000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_flex_with_audio",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.0000024",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.0012000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_flex_without_audio",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.0000012",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.0048000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_online_with_audio",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.0000048",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.0024000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_online_without_audio",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.0000024",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.1152",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.1152",
            "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": "doubao-seedance-1-5-pro-251215",
        "request_model_id": "doubao-seedance-1-5-pro-251215",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance: Seedance 1.5 Pro",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.1152,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.1152,
      "varies": false
    },
    "short": "Seedance 1.5 Pro menghasilkan video dari teks atau gambar dan dapat membuat suara, efek, serta musik latar yang tersinkronisasi. Audio dapat diaktifkan atau dinonaktifkan; profil yang didokumentasikan menawarkan adegan 4–12 detik, bingkai adaptif, dan pemrosesan online atau flex."
  },
  "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": "Seedance 1.5 Pro menghasilkan video dari teks atau gambar dan dapat membuat suara, efek, serta musik latar yang tersinkronisasi. Audio dapat diaktifkan atau dinonaktifkan; profil yang didokumentasikan menawarkan adegan 4–12 detik, bingkai adaptif, dan pemrosesan online atau flex.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "cbe2c20f772db45f2f892f39d3b59a6eb8fbd73fa971c1c7cce4cb29fde11d61",
    "renderer_sha256": "2a0471475a29000c23db326ca1e315df73dee7524f6bc2907818ee3458813f2d"
  },
  "sourceRevision": "88325859a469584e3299c95935450b16055e6bbd13acb2cf7aeaa6d967ebc4ae"
}
