Langkau ke dokumentasi
Pada halaman ini

Seedance 2.0

Jana video dengan Seedance 2.0 menggunakan teks, bingkai pertama dan terakhir, atau rujukan multimodal. Halaman ini merangkumi aliran kerja lengkap dari permintaan hingga hasil untuk model ini.

ID model API: seedance-2-0

Penjanaan adalah asinkronus. Simpan taskId yang dikembalikan semasa mencipta tugasan, kemudian tanya statusnya atau terima webhook.

Keupayaan

CiriNilai yang disokong
Resolusi output480p · 720p · 1080p · 4k
Durasi output4–15 saat
Nisbah aspek16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Imej rujukanSehingga 9 imej
Video rujukanSehingga 3 video
Fail audio rujukanSehingga 3 fail audio
Semua rujukan digabungkanSehingga 12 fail rujukan secara keseluruhan
Jumlah durasi bagi setiap kumpulan video/audio15 saat
seed-1 hingga 4294967295

Harga & kredit

Penjanaan video dicaj dalam bentuk kredit berdasarkan durasi dibilkan dalam saat. Tanpa input video, durasi dibilkan ialah durasi output; jika ada input video, ia juga merangkumi durasi video rujukan.

Jadual di bawah menunjukkan kredit yang dicaj sesaat, bukan jumlah kos keseluruhan untuk sesuatu tugas. Kadar caj bergantung pada model, resolusi output dan sama ada video rujukan disediakan dalam mod rujukan-ke-video. Sila rujuk formula dan contoh di bawah jadual untuk pengiraan jumlah kos keseluruhan.

Resolusi outputTanpa input videoDengan input video
480p6 kredit/saat4 kredit/saat
720p12 kredit/saat8 kredit/saat
1080p30 kredit/saat20 kredit/saat
4k70 kredit/saat40 kredit/saat
  • Tanpa input video: output dalam saat × kadar tanpa video.
  • Dengan input video: (output dalam saat + durasi video rujukan yang diukur dalam saat) × kadar dengan video. Pelayan mengukur jumlah durasi video rujukan dan membundarkannya kepada saat penuh yang terdekat sebelum pengebilan.
  • Rujukan imej atau audio sahaja akan menggunakan kadar tanpa video. Kadar pengebilan video rujukan hanya digunakan dalam mod rujukan-ke-video apabila rujukan video dibekalkan.

Contoh pengiraan kos

Teks ke video 720p selama 5 saat: 5 × 12 = 60 kredit.

Output 720p selama 5 saat dengan video rujukan 5 saat: (5 + 5) × 8 = 80 kredit.

Kredit akan ditempah semasa penyerahan dan dicaj setelah tugasan berjaya. Tugasan yang gagal atau tamat masa akan memasuki aliran bayaran balik. Status pengebilan refund_failed bermakna bayaran balik tidak dapat diselesaikan; sila semak log API atau hubungi sokongan.

Pengesahan

Cipta kunci API dalam papan pemuka. Kunci lengkap hanya akan dipaparkan sekali sahaja. Simpan kunci ini pada pelayan anda dan hantarkannya sebagai token Bearer dalam setiap permintaan.

URL asas

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Tetapkan pemboleh ubah persekitaran SEEVIO_API_KEY sebelum menjalankan contoh ini. Contoh JavaScript dijalankan pada pelayan anda dengan Node.js; contoh Python menggunakan pakej requests.

Mula cepat

Hantar permintaan ringkas ini, simpan taskId yang dikembalikan, kemudian gunakan contoh pertanyaan tugasan di bawah. Nilai kredit dalam respons penciptaan ialah amaun yang ditempah.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Contoh respons cipta tugasan

Selepas permintaan di atas diterima, API akan mengembalikan respons JSON ini. taskId ialah pengecam tugasan yang digunakan untuk pertanyaan status seterusnya; credits pula ialah jumlah kredit yang dikuntukkan bagi tugasan ini. Respons ini hanya mengesahkan penciptaan tugasan dan tidak bermakna video tersebut sudah sedia. Anda perlu menyemak status tugasan secara berkala atau menggunakan Webhook untuk menerima hasil video.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 60
}

Cipta tugasan

POST https://api.seevio.ai/v1/videos/generations

Hantar objek JSON yang mengandungi model dan input, serta callback_url pilihan. Sentiasa nyatakan ID model tepat yang dipaparkan pada halaman ini; jika model diabaikan, ia akan memilih seedance-2-0 secara lalai.

Badan permintaan

MedanJenisDiperlukanPenerangan & had
model
stringYa

ID Model. Untuk menggunakan Seedance 2.0, tetapkan medan ini kepada seedance-2-0.

callback_url
stringTidak

Titik akhir HTTPS awam untuk panggilan semula POST bagi status selesai dan gagal. Rangkaian peribadi dan localhost adalah tidak dibenarkan.

Contoh: https://example.com/webhooks/seevio
input
objectYa

Tetapan penjanaan. Mesti mengandungi prom yang tidak kosong.

Parameter input

image_urls diperlukan dalam mod image-to-video. Mod reference-to-video memerlukan sekurang-kurangnya satu rujukan sama ada melalui image_urls, video_urls atau audio_urls.

Sediakan image_urls, video_urls dan audio_urls sebagai tatasusunan rentetan URL (string[]). Setiap URL yang diberikan mestilah boleh diakses secara terbuka melalui HTTPS, termasuk media yang diabaikan oleh mod yang dipilih.

MedanJenisDiperlukanNilai lalaiPenerangan & had
input.prompt
stringYa

Gesa (prompt) diperlukan untuk setiap mod. Ia boleh mengandungi maksimum 10,000 aksara sebelum dipotong dan tidak boleh terdiri daripada ruang kosong sahaja.

Contoh: A cat surfing at sunset
input.generation_type
stringTidaktext-to-video

text-to-video hanya menggunakan prom; image-to-video menggunakan 1–2 imej; reference-to-video menggunakan rujukan imej, video dan/atau audio.

Nilai yang disokong
text-to-video | image-to-video | reference-to-video
input.image_urls
string[]Bersyarat[]

image-to-video: 1 imej untuk bingkai pertama, atau 2 imej mengikut urutan untuk bingkai pertama dan terakhir. reference-to-video: sehingga 9 imej. Diabaikan dalam text-to-video.

Contoh: ["https://example.com/first-frame.jpg"]
input.video_urls
string[]Bersyarat[]

Hanya dihantar dalam reference-to-video; sehingga 3 video dan gabungan durasi 15 saat. Diabaikan dalam mod lain.

Contoh: ["https://example.com/source.mp4"]
input.audio_urls
string[]Bersyarat[]

Hanya dihantar dalam reference-to-video; sehingga 3 fail audio dan gabungan durasi 15 saat. Diabaikan dalam mod lain. Audio tidak boleh digunakan sebagai satu-satunya bahan rujukan untuk model ini. Apabila menyediakan audio_urls, anda juga mesti menyediakan sekurang-kurangnya satu imej rujukan dalam image_urls atau satu video rujukan dalam video_urls.

Contoh: ["https://example.com/music.mp3"]
input.duration
integerTidak5

Integer durasi output dari 4 hingga 15 saat.

Nilai yang disokong
4–15
Contoh: 5
input.aspect_ratio
stringTidakadaptive

Nisbah aspek output. Pilihan adaptive membolehkan model menentukan nisbah aspek sendiri.

Nilai yang disokong
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Contoh: adaptive
input.resolution
stringTidak720p

Gunakan salah satu daripada resolusi output disokong yang disenaraikan di sini.

Nilai yang disokong
480p | 720p | 1080p | 4k
Contoh: 720p
input.generate_audio
booleanTidaktrue

Minta penjanaan audio yang disinkronkan.

Nilai yang disokong
true | false
Contoh: true
input.watermark
booleanTidakfalse

Minta tera air AI pada video yang dijana.

Nilai yang disokong
true | false
Contoh: false
input.web_search
booleanTidakfalse

Benarkan carian web apabila disokong oleh model.

Nilai yang disokong
true | false
Contoh: false
input.return_last_frame
booleanTidakfalse

Minta bingkai terakhir. Hasil pertanyaan mengandungi data.last_frame_url apabila bingkai tersebut tersedia; jika tidak, nilainya adalah null.

Nilai yang disokong
true | false
Contoh: true
input.seed
integerTidak-1

Integer dari -1 hingga 4294967295. Nilai -1 memilih seed rawak.

Nilai yang disokong
-1 hingga 4294967295
Contoh: 42

Medan boolean mestilah bernilai JSON true atau false, bukannya dalam bentuk rentetan atau nombor.

Respons cipta

HTTP 200 mengembalikan taskId (rentetan) dan credits (nombor). Ini menunjukkan tugasan telah berjaya dicipta, bukan diselesaikan. Amaun di bawah sepadan dengan contoh mula cepat 720p selama 5 saat.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 60
}

Mod penjanaan & contoh

Gantikan URL media contoh.com dengan fail HTTPS anda sendiri yang boleh diakses secara awam. URL contoh disediakan hanya untuk menunjukkan struktur permintaan dan bukannya aset sampel yang boleh dimuat turun.

Teks ke video

Jana daripada prom teks. URL media tidak akan dihantar dalam mod ini.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Bingkai pertama

Sediakan satu imej sebagai bingkai pertama, kemudian huraikan pergerakan dalam prom anda.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Bingkai pertama dan terakhir

Sediakan dua URL imej mengikut urutan: bingkai pertama, diikuti bingkai terakhir. Contoh ini juga meminta bingkai terakhir video yang dijana.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg",
      "https://example.com/last-frame.jpg"
    ],
    "aspect_ratio": "adaptive",
    "return_last_frame": true
  }
}'

Rujukan multimodal

Gabungkan rujukan imej, video dan audio. Prom masih tetap diperlukan. Input video rujukan akan mengubah formula pengebilan.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/camera.mp4"
    ],
    "audio_urls": [
      "https://example.com/ambience.mp3"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Tanya status tugasan

GET https://api.seevio.ai/v1/tasks/{taskId}

Gantikan ID contoh dengan taskId yang dikembalikan semasa penciptaan. Pertanyaan hanya mengembalikan tugasan milik pengguna kunci API tersebut; ID yang tidak boleh diakses atau tidak dikenali akan mengembalikan ralat HTTP 404.

Lakukan pengundian (polling) setiap 10–20 saat sebagai permulaan, kurangkan kekerapan jika menerima ralat HTTP 429, dan hentikan apabila status bertukar kepada completed atau failed. Sebaik-baiknya gunakan webhook untuk persekitaran pengeluaran. Setiap contoh kod di bawah melakukan satu pertanyaan.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusPenerangan & had
queuedDiterima dan sedang menunggu untuk dihantar.
generatingPenjanaan sedang dijalankan.
completedBerjaya sepenuhnya. Muat turun data.results sebelum tamat tempoh.
failedGagal sepenuhnya. Periksa failed_reason dan billing_status.
MedanJenisPenerangan & had
idstring
Pengecam tugasan. Ini ialah taskId daripada respons cipta.
created_atnumber
Masa penciptaan tugasan dalam saat Unix.
modelstring
ID model awam yang digunakan untuk tugasan ini.
billing_statusstring
reserved, charged, refunded atau refund_failed.
creditsnumber
Kredit yang ditempah untuk tugasan ini. Nilai ini dikekalkan selepas bayaran balik; periksa billing_status untuk menentukan hasil pengebilan.
failed_reasonstring | null
Punca kegagalan bagi tugasan yang gagal; bernilai null jika sebaliknya. Respons pertanyaan yang gagal mengabaikan bahagian data.
dataobject
Ada pada pertanyaan tugasan yang tidak gagal. Mengandungi butiran output dan pemprosesan.
data.resultsstring[]
Tatasusunan URL video. Kosong sehinggalah tugasan selesai atau selepas video tamat tempoh.
data.video_expires_atstring | null
Masa tamat tempoh video sebagai penanda masa ISO 8601, atau null sebelum ia tersedia. Simpan hasil sebelum waktu ini.
data.last_frame_urlstring | null
URL bingkai terakhir apabila diminta dan tersedia, jika tidak nilainya adalah null.
data.processing_timenumber | null
Durasi pemprosesan penyedia dalam saat apabila tersedia, jika tidak nilainya adalah null.

Tugasan selesai: respons pertanyaan dengan hasil video

Apabila pertanyaan mengembalikan status=completed, ini bermakna penjanaan video telah selesai. Baca URL video daripada data.results dan muat turun video tersebut sebelum data.video_expires_at. billing_status=charged menunjukkan bahawa kredit yang diketepikan telah ditolak.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "completed",
  "billing_status": "charged",
  "credits": 60,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Tugasan gagal: respons pertanyaan dengan butiran kegagalan dan pengebilan

Apabila pertanyaan mengembalikan status=failed, ini bermakna penjanaan telah tamat tetapi gagal. Rujuk failed_reason untuk mengetahui punca kegagalan dan billing_status untuk status bayaran balik. Dalam contoh ini, refunded bermakna kredit telah dikembalikan semula. credits mengekalkan amaun asal yang diketepikan, dan respons ini tidak mengandungi data.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "failed",
  "billing_status": "refunded",
  "credits": 60,
  "failed_reason": "provider_failed"
}

Webhook

Tetapkan callback_url dalam permintaan cipta untuk menerima POST JSON apabila tugasan selesai atau gagal. Kembalikan respons 2xx dalam masa 15 saat. Penghantaran yang gagal akan dicuba semula; proses penghantaran berulang secara idempotensi menggunakan ID tugasan.

Pangkalan akhir (endpoint) panggilan balik anda mesti menerima permintaan POST dengan badan permintaan JSON (Content-Type: application/json).

Cipta tugasan dengan panggilan semula

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

Muatan webhook berbeza daripada respons pertanyaan tugasan: ia mengabaikan billing_status dan credits; butiran kegagalan berada di dalam data.failed_reason dan data.credits_refunded. Nilai created_at webhook ialah masa penciptaan acara dalam saat Unix.

Tugasan selesai: muatan panggilan balik yang berjaya

Apabila penjanaan berjaya, panggilan balik akan mengandungi status=completed. Gunakan id untuk mengenal pasti tugasan dan data.results untuk mendapatkan URL video. Muat turun dan simpan keputusan sebelum data.video_expires_at.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "completed",
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Tugasan gagal: muatan panggilan balik yang gagal

Apabila penjanaan gagal, panggilan balik akan mengandungi status=failed. Gunakan id untuk mengenal pasti tugasan, data.failed_reason untuk mengetahui punca kegagalan dan data.credits_refunded untuk jumlah kredit yang dikembalikan.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "failed",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 60
  }
}

Contoh penerima

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData.data;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

Contoh Next.js ini membaca badan panggilan balik JSON dan mengendalikan tugasan yang selesai serta gagal secara terus. Tambahkan fungsi persistensi dan penyahduplikasian ID tugasan untuk aplikasi anda; masukkan kerja yang lambat ke dalam giliran (queue) sebelum mengesahkan panggilan balik.

Keperluan & had media

  • Semua URL media dan panggilan semula mestilah URL HTTPS awam. Elakkan localhost, IP peribadi dan fail yang memerlukan kuki atau log masuk. URL video/audio rujukan mestilah merujuk terus kepada media yang boleh dibaca.
  • Dalam rujukan-ke-video, sediakan sekurang-kurangnya satu rujukan, dengan tidak lebih daripada 9 imej, 3 video, 3 fail audio dan gabungan 12 bahan rujukan. Jumlah durasi video dan jumlah durasi audio masing-masing mestilah tidak melebihi 15 saat.
  • text-to-video mengabaikan semua rujukan media. image-to-video hanya menghantar imej bingkai pertama/terakhir dan mengabaikan rujukan video serta audio. Gunakan reference-to-video untuk menggabungkan media.
  • Untuk model Seedance 2.0, gunakan audio dengan sekurang-kurangnya satu imej atau video untuk keserasian model. Contoh audio sahaja disediakan pada halaman Seedance 2.5.

Keperluan imej

  • Setiap imej mestilah kurang daripada 30 MB.
  • Format yang disokong: jpeg, png, webp, bmp, tiff, gif.
  • Nisbah aspek (lebar ÷ tinggi): 0.4 hingga 2.5, inklusif.
  • Lebar dan tinggi masing-masing mestilah antara 300 dan 6,000 piksel, inklusif.

Keperluan video

  • Format yang disokong: mp4, mov.
  • Setiap video tidak boleh melebihi 100 MB.
  • Kadar bingkai: 24 hingga 60 FPS, inklusif.
  • Nisbah aspek (lebar ÷ tinggi): 0.4 hingga 2.5, inklusif.
  • Jumlah piksel (lebar × tinggi): 407,696 hingga 8,295,044, inklusif. Sebagai contoh, 614 × 664 = 407,696 dan 3,326 × 2,494 = 8,295,044. Ini adalah contoh pengiraan piksel, bukannya had lebar dan tinggi yang ditetapkan.

Keperluan audio

  • Format yang disokong: wav, mp3.
  • Setiap fail audio tidak boleh melebihi 15 MB.

Ralat

Ralat HTTP mengandungi objek ralat dengan kod dan mesej. Tugasan yang berjaya diterima masih boleh gagal kemudian; tanya status tugasan atau kendalikan panggilan semula kegagalannya.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPMedanTindakan yang perlu diambil
400invalid_request
Betulkan fail JSON, prom yang hilang, julat parameter atau URL media sebelum mencuba semula.
401invalid_api_key
Semak token Bearer dan pastikan kunci API adalah aktif.
402insufficient_credits
Tambah kredit atau kurangkan kos tugasan. Respons mungkin menyertakan amaun yang diperlukan dan amaun yang tersedia.
403forbidden
Sila semak sekatan peringkat akaun yang dinyatakan dalam mesej ralat.
404not_found
Semak ID tugasan dan pastikan kunci tersebut milik pengguna tugasan berkenaan.
429rate_limited
Tunggu selang masa Retry-After sebelum mencuba semula.
500internal_error
Periksa mesej ralat dan log API. Cuba semula dengan berhati-hati; menghantar semula permintaan cipta boleh mencipta satu lagi tugasan yang boleh dicaj.

Had kadar

Cipta tugasan: setiap kunci API membenarkan sehingga 100 permintaan seminit secara lalai. Had kadar tersuai tidak ditawarkan buat masa ini.

Kueri tugasan: setiap kunci API membenarkan sehingga 120 permintaan seminit secara lalai. Permintaan kueri dan permintaan penciptaan tugasan dikira secara berasingan.

HTTP 429 menyertakan Retry-After: 60 untuk penciptaan dan Retry-After: 5 untuk pertanyaan. Gunakan fungsi undur masa (backoff) dan elakkan daripada melakukan pengundian lebih kerap daripada yang diperlukan.