Seedance 2.0 API

Bina penjanaan video ke dalam produk anda dengan penciptaan tugas async, tinjauan status, cangkuk web, dan pengebilan prihatin kredit.

URL Asas
https://api.seedance2.ai
Pada 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_xxxxxxxx
sk_live_

Gunakan kunci sk_live_ untuk trafik pengeluaran.

sk_test_

Gunakan kunci sk_test_ untuk ujian integrasi kotak pasir dengan kontrak API yang sama.

401

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.

Serahkan tugas

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
    }
  }'
Pilihan hasil: Peninjauan

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"
Pilihan hasil: Cangkuk web

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.

POST
/v1/videos/generations
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
    }
  }'

Mod penjanaan

generation_type mengawal input media yang diterima dan bagaimana model menafsirkannya.

ModMedia diperlukanMedia pilihanNota
text-to-videopromptduration, aspect_ratio, resolution, seedPrompt teks sahaja. image_urls, video_urls, dan audio_urls tidak diperlukan.
image-to-videoprompt + tatasusunan image_urls (1-2 URL imej)duration, aspect_ratio, resolution, seedimage_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-videoprompt + sekurang-kurangnya satu imej atau videoimej, video, dan audio dalam had bahanAudio tidak boleh digunakan bersendirian dengan teks. Tambah sekurang-kurangnya satu imej atau video apabila audio disediakan.
text-to-video

Gunakan 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-video

Gunakan 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-video

Gunakan 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

Teks + Imej
Teks + Video
Teks + Imej + Video
Teks + Imej + Audio
Teks + Video + Audio
Teks + Imej + Video + Audio
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

PengepalaDiperlukanPeneranganContoh
AuthorizationYaKunci API Pembawa yang digunakan untuk mengesahkan permintaan.Bearer sk_live_xxx
Content-TypeYaSemua permintaan tulis menggunakan JSON.application/json

Medan peringkat atas

MedanJenisDiperlukanLalaiJulat / EnumModContoh
model

Varian model yang digunakan untuk penjanaan.

stringYa-seedance-2-0 | seedance-2-0-fastsemuaseedance-2-0
callback_url

Titik akhir HTTPS yang menerima panggilan balik penyelesaian dan kegagalan tugas.

stringTidak-URL HTTPS, tiada rangkaian peribadisemuahttps://your-domain.com/hook
input

Tetapan penjanaan dan rujukan media.

objectYa--semua-

input.* medan

MedanJenisDiperlukanLalaiJulat / EnumModContoh
input.prompt

Prompt teks yang menerangkan video yang akan dicipta.

stringYa-teks tidak kosongsemuaa cat surfing
input.generation_type

Mod penjanaan. Lalai kepada teks-ke-video. (text-to-video)

stringTidaktext-to-videotext-to-video | image-to-video | reference-to-video-image-to-video
input.image_urls

URL 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_urls

Video 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_urls

Fail 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.duration

Panjang video output dalam saat.

intTidak54-15 saatsemua5
input.aspect_ratio

Nisbah aspek output. adaptif membolehkan perkhidmatan menyimpulkan nisbah terbaik.

stringTidakadaptive16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptifsemua16:9
input.resolution

Lapisan resolusi output.

stringTidak720p480p | 720p | 1080psemua720p
input.generate_audio

Sama ada model harus menjana audio apabila disokong.

booleanTidaktruetrue | falsesemuatrue
input.watermark

Sama ada untuk menambah tanda air.

booleanTidakfalsetrue | falsesemuafalse
input.web_search

Sama ada untuk membenarkan penambahan carian web apabila disokong.

booleanTidakfalsetrue | falsesemuafalse
input.return_last_frame

Sama ada untuk mengembalikan URL bingkai terakhir apabila tersedia.

booleanTidakfalsetrue | falsesemuafalse
input.seed

Benih deterministik. Gunakan -1 untuk benih rawak.

intTidak-1-1 atau 0-4294967295semua-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 kredit

Respons

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"
}
NilaiMaksud
status=queuedDiterima dan menunggu untuk diserahkan atau diproses.
status=generatingPenyedia sedang memproses penjanaan.
status=completedVideo selesai dan data.results mengandungi URL hasil.
status=failedPenjanaan gagal atau tamat masa.
billing_status=reservedKredit ditempah semasa tugas sedang berjalan.
billing_status=chargedTugas berjaya dan tempahan diselesaikan.
billing_status=refundedTugas gagal atau tamat masa dan kredit dikembalikan.
billing_status=refund_failedTransaksi 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
  }
}
KodHTTPMaksudCuba semula?
invalid_request400Parameter hilang atau tidak sah.Tidak, betulkan permintaan.
invalid_api_key401Kunci API hilang, tidak sah, atau dibatalkan.Tidak, gunakan kunci yang sah.
insufficient_credits402Kredit tidak mencukupi. Tugas tidak diterima atau dicaj.Selepas tambah nilai.
forbidden403Kunci API kekurangan skop yang diperlukan.Tidak.
not_found404Tugas tidak wujud atau tidak dimiliki oleh pemilik kunci.Tidak.
rate_limited429Kadar permintaan melebihi had.Ya, ikut Cuba Semula Selepas. (Retry-After)
internal_error500Ralat 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.

Log API