API Seedance
Sepandukan penjanaan video ke dalam produk anda dengan Seedance 2.5 atau Seedance 2.0, tugas async, webhook dan bil peka kredit.
https://api.seevio.aiDalam halaman ini
Pengenalan
API membolehkan anda menyerahkan tugas penjanaan video Seedance 2.5 dan Seedance 2.0 secara programatik. Seedance 2.5 ialah model yang disyorkan dan menyokong teks-ke-video, imej-ke-video bingkai pertama atau bingkai pertama-dan-terakhir, serta rujukan-ke-video berbilang mod. Penjanaan adalah secara tak segerak (async): cipta tugas, terima ID tugas dengan serta-merta, kemudian dapatkan video yang telah siap dengan membuat pengundian (polling) pada titik akhir tugas atau melalui webhook.
Tugas async
Pengundian (polling) sesuai untuk pembangunan dan integrasi mudah.
Sedia webhook
Webhook disyorkan untuk persekitaran pengeluaran (production) kerana ia mengelakkan pengundian yang agresif dan memberitahu perkhidmatan anda apabila tugas telah mencapai keadaan penamat.
Peka kredit
Kredit akan dikhaskan semasa penyerahan. Tugas yang berjaya akan dikenakan caj daripada tempahan tersebut; tugas yang gagal atau tamat masa akan dikembalikan secara automatik.
Pengesahan
Cipta kunci API dalam papan pemuka dan hantarkannya sebagai token Bearer pada setiap permintaan. Kunci penuh hanya dipaparkan sekali sahaja semasa penciptaan.
Authorization: Bearer sk_live_xxxxxxxxGunakan kunci sk_live_ untuk trafik pengeluaran (production).
Gunakan kunci sk_test_ untuk ujian integrasi sandbox dengan kontrak API yang sama.
Kunci yang hilang, tidak sah atau dibatalkan akan mengembalikan invalid_api_key dengan HTTP 401.
Mula Pantas
Serahkan tugas terlebih dahulu. Selepas tugas diterima, pilih satu kaedah penghantaran hasil: buat pengundian pada titik akhir tugas, atau terima hasil akhir melalui webhook.
Cipta tugas video tak segerak (async) dan terima ID tugas dengan serta-merta.
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cat surfing on a neon wave, cinematic lighting",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false
}
}'Dapatkan data daripada titik akhir status tugas apabila integrasi anda lebih gemar menggunakan pengundian eksplisit.
curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"Sertakan callback_url semasa menyerahkan tugas untuk menerima panggilan balik apabila selesai atau gagal, kemudian kemas kini rekod tugas anda sendiri.
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrl = callbackData.data.results[0];
// Save the video URL or update your own task record here.
}
if (callbackData.status === "failed") {
const errorMessage = callbackData.data.failed_reason;
// Mark your own task record as failed here.
}
return new Response(null, { status: 200 });
}Cipta tugas video
Cipta tugas video dengan POST /v1/videos/generations. Isi permintaan mempunyai model peringkat atas, callback_url pilihan, dan objek input yang mengandungi prom serta tetapan penjanaan.
/v1/videos/generationscurl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cat surfing on a neon wave, cinematic lighting",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false
}
}'Mod penjanaan
generation_type mengawal jenis input media yang diterima dan cara model mentafsirkannya.
Tetapkan model kepada seedance-2-5 untuk menjana hasil 480p atau 720p dengan durasi dari 4 hingga 30 saat.
- Teks-ke-video dengan nisbah aspek adaptif, 16:9, 9:16, 1:1, 4:3, 3:4 atau 21:9
- Imej-ke-video daripada satu imej bingkai pertama atau dua imej bingkai pertama-dan-terakhir; nisbah aspek mestilah adaptif
- Rujukan-ke-video dengan sehingga 30 imej, 10 video, dan 10 fail audio, dengan maksimum 50 bahan secara keseluruhan
- Setiap rujukan video atau audio mestilah berdurasi 2-30 saat; gabungan durasi video dan gabungan durasi audio masing-masing mestilah 30 saat atau kurang
- Input rujukan audio sahaja dan return_last_frame disokong; seed tidak disokong
| Mod | Media wajib | Media pilihan | Nota |
|---|---|---|---|
text-to-video | prom | duration, aspect_ratio, resolution, seed | Prom teks sahaja. image_urls, video_urls dan audio_urls tidak diperlukan. |
image-to-video | prom + tatasusunan image_urls (1-2 URL imej) | duration, aspect_ratio, resolution, seed | image_urls mestilah dalam bentuk tatasusunan. Sediakan 1 URL imej untuk bingkai pertama, atau 2 URL imej untuk bingkai pertama dan terakhir. Video dan audio akan diabaikan. |
reference-to-video | prom + sekurang-kurangnya satu rujukan imej, video atau audio | imej, video dan audio dalam had bahan | Seedance 2.5 menyokong rujukan audio sahaja. Untuk Seedance 2.0, sila tambah sekurang-kurangnya satu imej atau video apabila audio disediakan. |
text-to-videoGunakan teks-ke-video apabila prom bertulis merupakan satu-satunya input kreatif.
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cinematic drone shot over a futuristic coastal city at sunrise",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false
}
}'image-to-videoGunakan imej-ke-video apabila input.image_urls ialah tatasusunan (array) dengan 1-2 URL imej: satu URL menetapkan bingkai pertama, dan dua URL menetapkan bingkai pertama dan terakhir. Rujukan video dan audio akan diabaikan dalam mod ini.
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"input": {
"prompt": "the subject turns toward camera, soft studio motion",
"generation_type": "image-to-video",
"image_urls": ["https://your.cdn.com/first-frame.jpg"],
"duration": 5,
"resolution": "720p"
}
}'reference-to-videoGunakan rujukan-ke-video untuk arahan yang lebih terperinci menggunakan imej, video dan audio rujukan. Seedance 2.5 menerima audio sebagai satu-satunya jenis rujukan; Seedance 2.0 memerlukan sekurang-kurangnya satu imej atau video apabila audio disediakan.
Had bahan
- Seedance 2.5: sehingga 30 imej rujukan
- Seedance 2.5: sehingga 10 video rujukan, setiap satu 2-30 saat dan jumlah durasi <= 30 saat
- Seedance 2.5: sehingga 10 audio rujukan, setiap satu 2-30 saat dan jumlah durasi <= 30 saat
- Seedance 2.5: maksimum 50 bahan secara keseluruhan untuk semua jenis
- Varian Seedance 2.0 mengekalkan had sedia ada: 9 imej, 3 video, 3 audio, dan 15 saat bagi setiap kumpulan video/audio
Gabungan input yang disokong
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"input": {
"prompt": "use the product from image 1 and the camera motion from the reference video",
"generation_type": "reference-to-video",
"image_urls": ["https://your.cdn.com/product.jpg"],
"video_urls": ["https://your.cdn.com/camera-motion.mp4"],
"audio_urls": [],
"duration": 8,
"resolution": "720p"
}
}'Parameter permintaan
Nama parameter, nilai enum, laluan titik akhir, dan contoh adalah sebahagian daripada kontrak API. Penerangan di bawah menjelaskan fungsi setiap medan.
Pengepala
| Pengepala | Wajib | Penerangan | Contoh |
|---|---|---|---|
Authorization | Ya | Kunci API Bearer yang digunakan untuk mengesahkan permintaan. | Bearer sk_live_xxx |
Content-Type | Ya | Semua permintaan tulis menggunakan JSON. | application/json |
Medan peringkat atas
| Medan | Jenis | Wajib | Lalai | Julat / Enum | Mod | Contoh |
|---|---|---|---|---|---|---|
modelVarian model yang digunakan untuk penjanaan. Gunakan seedance-2-5 untuk Seedance 2.5, seedance-2-0 untuk Seedance 2.0, seedance-2-0-fast untuk Seedance 2.0 Fast, atau seedance-2-0-mini untuk Seedance 2.0 Mini. | string | Ya | - | seedance-2-5 | seedance-2-0 | seedance-2-0-fast | seedance-2-0-mini | semua | seedance-2-5 |
callback_urlTitik akhir HTTPS yang menerima panggilan balik apabila tugas selesai atau gagal. | string | Tidak | - | URL HTTPS, tiada rangkaian peribadi | semua | https://your-domain.com/hook |
inputTetapan penjanaan dan rujukan media. | object | Ya | - | - | semua | - |
input.* medan
| Medan | Jenis | Wajib | Lalai | Julat / Enum | Mod | Contoh |
|---|---|---|---|---|---|---|
input.promptProm teks yang menerangkan video yang ingin dicipta. | string | Ya | - | teks tidak kosong | semua | a cat surfing |
input.generation_typeMod penjanaan. Lalai kepada text-to-video. | string | Tidak | text-to-video | text-to-video | image-to-video | reference-to-video | - | image-to-video |
input.image_urlsURL imej yang boleh diakses secara umum. Untuk imej-ke-video, hantar 1 imej untuk bingkai pertama atau 2 imej untuk bingkai pertama dan terakhir. Untuk rujukan-ke-video, Seedance 2.5 menerima sehingga 30 imej dan Seedance 2.0 menerima sehingga 9. | string[] | Bersyarat | [] | Imej-ke-video: 1 atau 2 imej. Rujukan-ke-video: sehingga 30 untuk Seedance 2.5; sehingga 9 untuk Seedance 2.0. | image-to-video / reference-to-video | ["https://.../a.jpg"] |
input.video_urlsVideo rujukan yang boleh diakses secara umum untuk rujukan-ke-video sahaja. Seedance 2.5 menerima sehingga 10 video, setiap satu 2-30 saat dengan gabungan masa main balik <= 30 saat. Seedance 2.0 menerima sehingga 3 dengan gabungan masa main balik <= 15 saat. | string[] | Tidak | [] | Seedance 2.5: sehingga 10 video, setiap satu 2-30 saat, gabungan panjang <= 30 saat. Seedance 2.0: sehingga 3, gabungan panjang <= 15 saat. | reference-to-video | [] |
input.audio_urlsFail audio rujukan yang boleh diakses secara umum untuk rujukan-ke-video sahaja. Seedance 2.5 menerima sehingga 10 fail audio, setiap satu 2-30 saat dengan gabungan masa main balik <= 30 saat, dan membenarkan rujukan audio sahaja. Seedance 2.0 menerima sehingga 3 dengan gabungan masa main balik <= 15 saat. | string[] | Tidak | [] | Seedance 2.5: sehingga 10 fail audio, setiap satu 2-30 saat, gabungan panjang <= 30 saat. Seedance 2.0: sehingga 3, gabungan panjang <= 15 saat. | reference-to-video | [] |
input.durationPanjang video hasil dalam saat. | int | Tidak | 5 | Seedance 2.5: 4-30 saat. Seedance 2.0: 4-15 saat. | semua | 5 |
input.aspect_ratioNisbah aspek hasil. adaptive membolehkan sistem menentukan nisbah terbaik. Mod imej-ke-video Seedance 2.5 hanya menyokong adaptive. | string | Tidak | adaptive | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptive | semua | 16:9 |
input.resolutionTahap resolusi hasil. | string | Tidak | 720p | Seedance 2.5: 480p | 720p. Seedance 2.0: 480p | 720p | 1080p | 4k (bergantung pada varian). | semua | 720p |
input.generate_audioSama ada model patut menjana audio apabila disokong. | boolean | Tidak | true | true | false | semua | true |
input.watermarkSama ada ingin menambah tera air (watermark). | boolean | Tidak | false | true | false | semua | false |
input.web_searchSama ada ingin membenarkan bantuan carian web apabila disokong. | boolean | Tidak | false | true | false | semua | false |
input.return_last_frameSama ada ingin mengembalikan URL bingkai terakhir apabila tersedia. | boolean | Tidak | false | true | false | semua | false |
input.seedSeed deterministik untuk varian Seedance 2.0. Seedance 2.5 tidak menyokong medan ini; sila abaikan. | int | Tidak | -1 | -1 atau 0-4294967295 | semua | -1 |
Kredit berbeza mengikut resolusi, durasi, model, dan sama ada rujukan-ke-video menyertakan rujukan video. Nilai kredit yang dikembalikan oleh respons ciptaan adalah jumlah sebenar yang ditempah untuk tugas tersebut.
Lihat harga kreditRespons
Ini ialah respons kejayaan daripada POST /v1/videos/generations. Ini bermakna tugas telah diterima dan kredit telah dikhaskan. Gunakan taskId yang dikembalikan untuk melakukan pengundian GET /v1/tasks/:id atau untuk dipadankan dengan panggilan balik selesai atau gagal.
Respons berjaya POST /v1/videos/generations
{
"taskId": "3f2aK9mR...",
"credits": 100
}Dapatkan status tugas
Gunakan GET /v1/tasks/:id untuk mendapatkan keadaan tugas semasa. Lakukan pengundian tidak lebih daripada sekali setiap 10 saat. Untuk sistem pengeluaran, webhook adalah pilihan yang lebih disyorkan.
curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"Respons tugas selesai
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-5",
"billing_status": "charged",
"credits": 100,
"failed_reason": null,
"data": {
"results": ["https://cdn.seevio.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Respons tugas gagal
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-5",
"billing_status": "refunded",
"credits": 100,
"failed_reason": "provider_failed"
}| Nilai | Maksud |
|---|---|
status=queued | Diterima dan sedang menunggu untuk diserahkan atau diproses. |
status=generating | Penyedia sedang memproses penjanaan. |
status=completed | Video selesai dan data.results mengandungi URL hasil. |
status=failed | Penjanaan gagal atau tamat masa. |
billing_status=reserved | Kredit dikhaskan sementara tugas sedang berjalan. |
billing_status=charged | Tugas berjaya dan tempahan kredit telah diselesaikan. |
billing_status=refunded | Tugas gagal atau tamat masa dan kredit telah dikembalikan. |
billing_status=refund_failed | Transaksi bayaran balik gagal dan memerlukan tindakan manual. |
Selepas video_expires_at, data.results akan menjadi kosong. Muat turun dan simpan fail sebelum tempoh sah tamat.
Webhook
Apabila callback_url disediakan, Seedance akan memanggil titik akhir anda apabila tugas selesai atau gagal, dan menghantar data JSON yang menerangkan hasil akhir. Jika titik akhir anda mengembalikan respons selain 2xx atau tidak bertindak balas dalam masa 15 saat, penghantaran akan dicuba semula sehingga 5 kali. Percubaan semula menggunakan id tugas yang sama, jadi sila lakukan penyahduplikasian berdasarkan id. Kembalikan respons 200 sebaik sahaja anda telah merekodkan data panggilan balik dengan selamat.
Panggilan balik tugas selesai
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-5",
"data": {
"results": ["https://cdn.seevio.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Panggilan balik tugas gagal
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-5",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 100
}
}export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrl = callbackData.data.results[0];
// Save the video URL or update your own task record here.
}
if (callbackData.status === "failed") {
const errorMessage = callbackData.data.failed_reason;
// Mark your own task record as failed here.
}
return new Response(null, { status: 200 });
}Sahkan bentuk data panggilan balik, lakukan penyahduplikasian berdasarkan id, kemas kini rekod tugas anda sendiri, dan balas dengan segera.
callback_url mestilah HTTPS dan tidak boleh menghala ke julat rangkaian peribadi, loopback, atau pautan tempatan (link-local).
Ralat
POST /v1/videos/generations dan GET /v1/tasks/:id mengembalikan bentuk ralat ini apabila permintaan API itu sendiri gagal, seperti parameter tidak sah, kunci API tidak sah, kredit tidak mencukupi, had kadar dipenuhi, atau tugas tidak ditemui. Sesetengah ralat menyertakan medan tambahan seperti required, available, atau retry_after bergantung pada keadaan.
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits for this task.",
"required": 100,
"available": 12
}
}| Kod | HTTP | Maksud | Cuba semula? |
|---|---|---|---|
invalid_request | 400 | Parameter hilang atau tidak sah. | Tidak, betulkan permintaan dahulu. |
invalid_api_key | 401 | Kunci API hilang, tidak sah, atau telah dibatalkan. | Tidak, gunakan kunci yang sah. |
insufficient_credits | 402 | Kredit tidak mencukupi. Tugas tidak diterima atau dicaj. | Selepas tambah nilai. |
forbidden | 403 | Kunci API tidak mempunyai skop yang diperlukan. | Tidak. |
not_found | 404 | Tugas tidak wujud atau bukan kepunyaan pemilik kunci. | Tidak. |
rate_limited | 429 | Had kadar permintaan telah dilampaui. | Ya, ikut arahan Retry-After. |
internal_error | 500 | Ralat pelayan. | Ya, cuba sebentar lagi. |
Had kadar
Had kadar digunakan bagi setiap kunci API dengan tetingkap gelongsor (sliding window). Penjanaan ditetapkan secara lalai kepada 100 permintaan seminit; pertanyaan status adalah lebih longgar. Respons HTTP 429 menyertakan pengepala Retry-After.
Penjanaan
100/min
Pertanyaan status
Lebih longgar
Pengepala 429
Retry-After
Pengebilan & kredit
API menggunakan kaedah tempah semasa serah, caj apabila berjaya, dan pulangkan jika gagal. Halaman penggunaan papan pemuka memaparkan sejarah kredit API, log tugas, dan statistik penggunaan mengikut masa.
Dikhaskan
Kredit disemak dan dikhaskan apabila tugas diterima.
Dicaj
Tugas yang selesai akan menyelesaikan tempahan kredit sedia ada.
Dikembalikan
Tugas yang gagal atau tamat masa akan mengembalikan kredit yang dikhaskan secara automatik.
Periksa penggunaan dalam papan pemuka
Lihat log API, garis masa tugas, sejarah kredit dan metrik penggunaan berasaskan masa.