Seedance 2.0 API
Bina penjanaan video ke dalam produk anda dengan penciptaan tugas async, tinjauan status, cangkuk web, dan pengebilan prihatin kredit.
https://api.seedance2.aiPada halaman ini
Pengenalan
API membolehkan anda menyerahkan tugas penjanaan video Seedance 2.0 secara programatik. Penjanaan adalah tak segerak: cipta tugas, terima ID tugas serta-merta, kemudian dapatkan video yang telah selesai dengan meninjau titik akhir tugas atau dengan menerima cangkuk web.
Tugas async
Peninjauan berfungsi dengan baik untuk pembangunan dan integrasi mudah.
Cangkuk web sedia
Cangkuk web disyorkan untuk pengeluaran kerana ia mengelakkan peninjauan agresif dan memberitahu perkhidmatan anda apabila tugas mencapai status terminal.
Prihatin kredit
Kredit ditempah semasa penyerahan. Tugas yang berjaya dicaj dari tempahan itu; tugas yang gagal atau tamat masa akan dikembalikan secara automatik.
Pengesahan
Cipta kunci API dalam papan pemuka dan hantarkannya sebagai token Pembawa pada setiap permintaan. Kunci penuh hanya ditunjukkan sekali pada masa penciptaan.
Authorization: Bearer sk_live_xxxxxxxxGunakan kunci sk_live_ untuk trafik pengeluaran.
Gunakan kunci sk_test_ untuk ujian integrasi kotak pasir dengan kontrak API yang sama.
Kunci yang hilang, tidak sah, atau dibatalkan mengembalikan invalid_api_key dengan HTTP 401.
Mula Pantas
Serahkan tugas terlebih dahulu. Selepas tugas diterima, pilih satu kaedah penghantaran hasil: tinjau titik akhir tugas, atau terima hasil akhir melalui cangkuk web.
Cipta tugas video tak segerak dan terima ID tugas serta-merta.
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"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,
"seed": -1
}
}'Ambil titik akhir status tugas apabila integrasi anda lebih memilih peninjauan eksplisit.
curl https://api.seedance2.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"Lulus callback_url semasa menyerahkan tugas, kemudian terima panggilan balik penyelesaian atau kegagalan dan 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 arahan dan tetapan penjanaan.
/v1/videos/generationscurl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"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,
"seed": -1
}
}'Mod penjanaan
generation_type mengawal input media yang diterima dan bagaimana model menafsirkannya.
| Mod | Media diperlukan | Media pilihan | Nota |
|---|---|---|---|
text-to-video | prompt | duration, aspect_ratio, resolution, seed | Prompt teks sahaja. image_urls, video_urls, dan audio_urls tidak diperlukan. |
image-to-video | prompt + tatasusunan image_urls (1-2 URL imej) | duration, aspect_ratio, resolution, seed | image_urls mesti adalah tatasusunan. Sediakan 1 URL imej untuk bingkai pertama, atau 2 URL imej untuk bingkai pertama dan terakhir. Video dan audio diabaikan. |
reference-to-video | prompt + sekurang-kurangnya satu imej atau video | imej, video, dan audio dalam had bahan | Audio tidak boleh digunakan bersendirian dengan teks. Tambah sekurang-kurangnya satu imej atau video apabila audio disediakan. |
text-to-videoGunakan teks-ke-video apabila prompt adalah satu-satunya input kreatif. (text-to-video)
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"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,
"seed": -1
}
}'image-to-videoGunakan imej-ke-video apabila input.image_urls adalah tatasusunan dengan 1-2 URL imej: satu URL menetapkan bingkai pertama, dan dua URL menetapkan bingkai pertama dan terakhir. Rujukan video dan audio diabaikan dalam mod ini. (image-to-video)
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"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 kaya dengan imej rujukan, video, dan audio. Audio tidak boleh digunakan bersendirian dengan teks; sertakan sekurang-kurangnya satu imej atau video apabila audio disediakan. (reference-to-video)
Had bahan
- Sehingga 9 imej rujukan
- Sehingga 3 video rujukan, jumlah tempoh <= 15 saat
- Sehingga 3 audio rujukan, jumlah tempoh <= 15 saat
- Maksimum 12 bahan secara keseluruhan merentasi semua jenis
Gabungan input yang disokong
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"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": "1080p"
}
}'Parameter permintaan
Nama parameter, nilai enum, laluan titik akhir, dan contoh adalah sebahagian daripada kontrak API. Penerangan di bawah menerangkan bagaimana setiap medan berkelakuan.
Pengepala
| Pengepala | Diperlukan | Penerangan | Contoh |
|---|---|---|---|
Authorization | Ya | Kunci API Pembawa yang digunakan untuk mengesahkan permintaan. | Bearer sk_live_xxx |
Content-Type | Ya | Semua permintaan tulis menggunakan JSON. | application/json |
Medan peringkat atas
| Medan | Jenis | Diperlukan | Lalai | Julat / Enum | Mod | Contoh |
|---|---|---|---|---|---|---|
modelVarian model yang digunakan untuk penjanaan. | string | Ya | - | seedance-2-0 | seedance-2-0-fast | semua | seedance-2-0 |
callback_urlTitik akhir HTTPS yang menerima panggilan balik penyelesaian dan kegagalan tugas. | 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 | Diperlukan | Lalai | Julat / Enum | Mod | Contoh |
|---|---|---|---|---|---|---|
input.promptPrompt teks yang menerangkan video yang akan dicipta. | string | Ya | - | teks tidak kosong | semua | a cat surfing |
input.generation_typeMod penjanaan. Lalai kepada teks-ke-video. (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 dicapai secara awam. Untuk imej-ke-video, hantar 1 imej untuk bingkai pertama atau 2 imej untuk bingkai pertama dan terakhir. Untuk rujukan-ke-video, hantar sehingga 9 imej sebagai rujukan visual. (image-to-video) (reference-to-video) | string[] | Bersyarat | [] | Imej-ke-video: 1 atau 2 imej. Rujukan-ke-video: sehingga 9 imej. (image-to-video) (reference-to-video) | image-to-video / reference-to-video | ["https://.../a.jpg"] |
input.video_urlsVideo rujukan yang boleh dicapai secara awam untuk rujukan-ke-video sahaja. Anda boleh menghantar sehingga 3 fail video, dan masa main balik gabungan mereka mestilah 15 saat atau kurang. (reference-to-video) | string[] | Tidak | [] | Sehingga 3 video. Panjang video gabungan mestilah 15 saat atau kurang. | reference-to-video | [] |
input.audio_urlsFail audio rujukan yang boleh dicapai secara awam untuk rujukan-ke-video sahaja. Anda boleh menghantar sehingga 3 fail audio, dan masa main balik gabungan mereka mestilah 15 saat atau kurang. (reference-to-video) | string[] | Tidak | [] | Sehingga 3 fail audio. Panjang audio gabungan mestilah 15 saat atau kurang. | reference-to-video | [] |
input.durationPanjang video output dalam saat. | int | Tidak | 5 | 4-15 saat | semua | 5 |
input.aspect_ratioNisbah aspek output. adaptif membolehkan perkhidmatan menyimpulkan nisbah terbaik. | string | Tidak | adaptive | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptif | semua | 16:9 |
input.resolutionLapisan resolusi output. | string | Tidak | 720p | 480p | 720p | 1080p | semua | 720p |
input.generate_audioSama ada model harus menjana audio apabila disokong. | boolean | Tidak | true | true | false | semua | true |
input.watermarkSama ada untuk menambah tanda air. | boolean | Tidak | false | true | false | semua | false |
input.web_searchSama ada untuk membenarkan penambahan carian web apabila disokong. | boolean | Tidak | false | true | false | semua | false |
input.return_last_frameSama ada untuk mengembalikan URL bingkai terakhir apabila tersedia. | boolean | Tidak | false | true | false | semua | false |
input.seedBenih deterministik. Gunakan -1 untuk benih rawak. | int | Tidak | -1 | -1 atau 0-4294967295 | semua | -1 |
Kredit berbeza mengikut resolusi, tempoh, model, dan sama ada rujukan-ke-video termasuk rujukan video. Nilai kredit yang dikembalikan oleh respons cipta adalah jumlah tempahan sebenar untuk tugas itu. (reference-to-video)
Lihat harga kreditRespons
Ini adalah respons kejayaan daripada POST /v1/videos/generations. Ini bermakna tugas telah diterima dan kredit telah ditempah. Gunakan taskId yang dikembalikan untuk meninjau GET /v1/tasks/:id atau untuk memadankan panggilan balik penyelesaian atau kegagalan.
Respons kejayaan POST /v1/videos/generations
{
"taskId": "3f2aK9mR...",
"credits": 60
}Dapatkan status tugas
Gunakan GET /v1/tasks/:id untuk mengambil status tugas semasa. Tinjau tidak lebih daripada sekali setiap 10 saat. Untuk sistem pengeluaran, lebih suka cangkuk web.
curl https://api.seedance2.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"Respons tugas yang lengkap
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-0",
"billing_status": "charged",
"credits": 60,
"failed_reason": null,
"data": {
"results": ["https://cdn.seedance2.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Respons tugas yang gagal
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-0",
"billing_status": "refunded",
"credits": 60,
"failed_reason": "provider_failed"
}| Nilai | Maksud |
|---|---|
status=queued | Diterima dan 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 ditempah semasa tugas sedang berjalan. |
billing_status=charged | Tugas berjaya dan tempahan diselesaikan. |
billing_status=refunded | Tugas gagal atau tamat masa dan kredit dikembalikan. |
billing_status=refund_failed | Transaksi pembayaran balik gagal dan memerlukan pengendalian manual. |
Selepas video_expires_at, data.results adalah kosong. Muat turun dan simpan fail sebelum tetingkap kesahihan berakhir.
Cangkuk web
Apabila callback_url hadir, Seedance memanggil titik akhir anda apabila tugas selesai atau gagal, dan menghantar data JSON yang menerangkan hasil akhir. Jika titik akhir anda mengembalikan respons bukan-2xx atau tidak bertindak balas dalam masa 15 saat, penghantaran akan dicuba semula sehingga 5 kali. Mencuba semula menggunakan ID tugas yang sama, jadi nyah-duplikasi mengikut ID. Kembalikan respons 200 sebaik sahaja anda merekodkan data panggilan balik dengan selamat.
Panggilan balik penyelesaian tugas
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-0",
"data": {
"results": ["https://cdn.seedance2.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Panggilan balik kegagalan tugas
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-0",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 60
}
}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, nyah-duplikasi mengikut ID, kemas kini rekod tugas anda sendiri, dan bertindak balas dengan cepat.
callback_url mesti HTTPS dan tidak boleh menunjuk ke rangkaian peribadi, gelung balik, atau rangkaian tempatan pautan.
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, atau tugas tidak ditemui. Sesetengah ralat termasuk medan tambahan seperti diperlukan, tersedia, atau retry_after bergantung kepada keadaan.
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits for this task.",
"required": 60,
"available": 12
}
}| Kod | HTTP | Maksud | Cuba semula? |
|---|---|---|---|
invalid_request | 400 | Parameter hilang atau tidak sah. | Tidak, betulkan permintaan. |
invalid_api_key | 401 | Kunci API hilang, tidak sah, atau dibatalkan. | Tidak, gunakan kunci yang sah. |
insufficient_credits | 402 | Kredit tidak mencukupi. Tugas tidak diterima atau dicaj. | Selepas tambah nilai. |
forbidden | 403 | Kunci API kekurangan skop yang diperlukan. | Tidak. |
not_found | 404 | Tugas tidak wujud atau tidak dimiliki oleh pemilik kunci. | Tidak. |
rate_limited | 429 | Kadar permintaan melebihi had. | Ya, ikut Cuba Semula Selepas. (Retry-After) |
internal_error | 500 | Ralat pelayan. | Ya, cuba semula nanti. |
Had kadar
Had kadar dikenakan setiap kunci API dengan tetingkap gelongsor. Penjanaan lalai kepada 60 permintaan seminit; pertanyaan status adalah lebih longgar. Respons HTTP 429 termasuk Cuba Semula Selepas. (Retry-After)
Penjanaan
60/min
Pertanyaan status
Lebih longgar
Pengepala 429
Retry-After
Pengebilan & kredit
API menggunakan tempahan semasa penyerahan, caj semasa kejayaan, dan bayaran balik semasa kegagalan. Halaman penggunaan papan pemuka menunjukkan sejarah kredit API, log tugas, dan statistik penggunaan berdasarkan masa.
Ditempah
Kredit disemak dan ditempah apabila tugas diterima.
Dicaj
Tugas yang telah selesai menyelesaikan tempahan sedia ada.
Dibayar Balik
Tugas yang gagal atau tamat masa akan mengembalikan kredit yang ditempah secara automatik.
Periksa penggunaan dalam papan pemuka
Lihat log API, garis masa tugas, sejarah kredit, dan metrik penggunaan berdasarkan masa.