API Seedance

Sepandukan penjanaan video ke dalam produk anda dengan Seedance 2.5 atau Seedance 2.0, tugas async, webhook dan bil peka kredit.

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

Gunakan kunci sk_live_ untuk trafik pengeluaran (production).

sk_test_

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

401

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.

Serahkan tugas

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
    }
  }'
Pilihan hasil: Pengundian (Polling)

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

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.

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

Mod penjanaan

generation_type mengawal jenis input media yang diterima dan cara model mentafsirkannya.

Keupayaan Seedance 2.5
seedance-2-5

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
ModMedia wajibMedia pilihanNota
text-to-videopromduration, aspect_ratio, resolution, seedProm teks sahaja. image_urls, video_urls dan audio_urls tidak diperlukan.
image-to-videoprom + tatasusunan image_urls (1-2 URL imej)duration, aspect_ratio, resolution, seedimage_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-videoprom + sekurang-kurangnya satu rujukan imej, video atau audioimej, video dan audio dalam had bahanSeedance 2.5 menyokong rujukan audio sahaja. Untuk Seedance 2.0, sila tambah sekurang-kurangnya satu imej atau video apabila audio disediakan.
text-to-video

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

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

Gunakan 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

Teks + Imej
Teks + Video
Teks + Audio (Seedance 2.5)
Teks + Imej + Video
Teks + Imej + Audio
Teks + Video + Audio
Teks + Imej + Video + Audio
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

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

Medan peringkat atas

MedanJenisWajibLalaiJulat / EnumModContoh
model

Varian 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.

stringYa-seedance-2-5 | seedance-2-0 | seedance-2-0-fast | seedance-2-0-minisemuaseedance-2-5
callback_url

Titik akhir HTTPS yang menerima panggilan balik apabila tugas selesai atau gagal.

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

Tetapan penjanaan dan rujukan media.

objectYa--semua-

input.* medan

MedanJenisWajibLalaiJulat / EnumModContoh
input.prompt

Prom teks yang menerangkan video yang ingin dicipta.

stringYa-teks tidak kosongsemuaa cat surfing
input.generation_type

Mod penjanaan. Lalai kepada text-to-video.

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

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

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

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

Panjang video hasil dalam saat.

intTidak5Seedance 2.5: 4-30 saat. Seedance 2.0: 4-15 saat.semua5
input.aspect_ratio

Nisbah aspek hasil. adaptive membolehkan sistem menentukan nisbah terbaik. Mod imej-ke-video Seedance 2.5 hanya menyokong adaptive.

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

Tahap resolusi hasil.

stringTidak720pSeedance 2.5: 480p | 720p. Seedance 2.0: 480p | 720p | 1080p | 4k (bergantung pada varian).semua720p
input.generate_audio

Sama ada model patut menjana audio apabila disokong.

booleanTidaktruetrue | falsesemuatrue
input.watermark

Sama ada ingin menambah tera air (watermark).

booleanTidakfalsetrue | falsesemuafalse
input.web_search

Sama ada ingin membenarkan bantuan carian web apabila disokong.

booleanTidakfalsetrue | falsesemuafalse
input.return_last_frame

Sama ada ingin mengembalikan URL bingkai terakhir apabila tersedia.

booleanTidakfalsetrue | falsesemuafalse
input.seed

Seed deterministik untuk varian Seedance 2.0. Seedance 2.5 tidak menyokong medan ini; sila abaikan.

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

Respons

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"
}
NilaiMaksud
status=queuedDiterima dan sedang 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 dikhaskan sementara tugas sedang berjalan.
billing_status=chargedTugas berjaya dan tempahan kredit telah diselesaikan.
billing_status=refundedTugas gagal atau tamat masa dan kredit telah dikembalikan.
billing_status=refund_failedTransaksi 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
  }
}
KodHTTPMaksudCuba semula?
invalid_request400Parameter hilang atau tidak sah.Tidak, betulkan permintaan dahulu.
invalid_api_key401Kunci API hilang, tidak sah, atau telah dibatalkan.Tidak, gunakan kunci yang sah.
insufficient_credits402Kredit tidak mencukupi. Tugas tidak diterima atau dicaj.Selepas tambah nilai.
forbidden403Kunci API tidak mempunyai skop yang diperlukan.Tidak.
not_found404Tugas tidak wujud atau bukan kepunyaan pemilik kunci.Tidak.
rate_limited429Had kadar permintaan telah dilampaui.Ya, ikut arahan Retry-After.
internal_error500Ralat 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.

Log API