Skip to content

Seedance video generation

ByteDance's Seedance, called directly against BytePlus ModelArk. All versions produce 24 fps video with an optional native audio track, and cover four input modes: text-to-video, image-to-video, first-and-last-frame, and reference-to-video with reference images, video clips, and audio clips.

Pick a version with model:

modelDurationResolutionReference budget
v2 (default)4–15 s480p / 720p / 1080p9 images · 3 videos · 3 audio, ≤15 s total
v2-fast4–15 s480p / 720psame as v2
v2-mini4–15 s480p / 720p / 1080psame as v2, cheapest tier
v2.54–30 s480p / 720p only30 images · 10 videos · 10 audio, ≤30 s total

Seedance 2.5 doubles the single-shot length to 30 seconds and triples the reference budget, and is the only version that accepts audio-only input. It drops 1080p in exchange — 1080p and 4K remain v2-only.

Default choice: model: "v2", resolution: "720p", duration: 5, aspectRatio: "adaptive". Every Seedance job exceeds the 100-second request timeout — always submit with wait=0.

The request shape

A single videoGen step on SubmitWorkflow. engine is the discriminator; model selects the version:

json
{
  "$type": "videoGen",
  "input": {
    "engine": "seedance",
    "model": "v2",
    "prompt": "…",
    "resolution": "720p",
    "duration": 5
  }
}

There is no operation discriminator — the mode is inferred from which media fields you populate:

ModePopulate
Text-to-videonothing but prompt
Image-to-videoone entry in images
First and last frametwo entries in images
Reference-to-videothree or more images, or any referenceVideos / referenceAudios

Text-to-video

http
POST https://orchestration.civitai.com/v2/consumer/workflows?wait=0
Authorization: Bearer <your-token>
Content-Type: application/json

{
  "steps": [{
    "$type": "videoGen",
    "input": {
      "engine": "seedance",
      "model": "v2",
      "prompt": "A dancing cat in a neon-lit alley, cinematic lighting",
      "aspectRatio": "16:9",
      "resolution": "720p",
      "duration": 5,
      "generateAudio": true
    }
  }]
}
POST/v2/consumer/workflows
Set your Civitai API token via the Token button in the navbar to enable Try It.
Request body — edit to customize (e.g. swap the image URL or prompt)
Valid JSON

Long-form with Seedance 2.5

v2.5 is the only version that accepts a duration above 15, up to 30 seconds in a single generation. Cost scales linearly with duration, so 480p keeps a 30-second test affordable.

json
{
  "engine": "seedance",
  "model": "v2.5",
  "prompt": "An epic landscape unfolding through the seasons, slow continuous camera push-in",
  "aspectRatio": "16:9",
  "resolution": "480p",
  "duration": 30,
  "generateAudio": true
}
POST/v2/consumer/workflows
Set your Civitai API token via the Token button in the navbar to enable Try It.
Request body — edit to customize (e.g. swap the image URL or prompt)
Valid JSON

Image-to-video

A single entry in images becomes the opening frame.

json
{
  "engine": "seedance",
  "model": "v2.5",
  "prompt": "The scene animates with gentle motion",
  "images": ["https://image.civitai.com/.../first-frame.jpeg"],
  "resolution": "720p",
  "duration": 5
}
POST/v2/consumer/workflows
Set your Civitai API token via the Token button in the navbar to enable Try It.
Request body — edit to customize (e.g. swap the image URL or prompt)
Valid JSON

First and last frame

Two entries interpolate between them — first image opens, second closes.

json
{
  "engine": "seedance",
  "model": "v2",
  "prompt": "Smooth transition between the two frames with natural motion",
  "images": [
    "https://image.civitai.com/.../start.jpeg",
    "https://image.civitai.com/.../end.jpeg"
  ],
  "resolution": "720p",
  "duration": 5
}
POST/v2/consumer/workflows
Set your Civitai API token via the Token button in the navbar to enable Try It.
Request body — edit to customize (e.g. swap the image URL or prompt)
Valid JSON

Reference-to-video

Three or more images, or any referenceVideos / referenceAudios, switch Seedance into reference mode. Refer to individual assets from the prompt as @Image 1, @Video 1, @Audio 1.

json
{
  "engine": "seedance",
  "model": "v2.5",
  "prompt": "Use the first-person POV framing from @Video 1 throughout, and use @Audio 1 as background music. @Image 1 a dew-covered red apple is picked up by hand.",
  "images": ["https://.../pic1.jpg", "https://.../pic2.jpg"],
  "referenceVideos": ["https://.../clip.mp4"],
  "referenceAudios": ["https://.../music.mp3"],
  "resolution": "480p",
  "duration": 10
}
POST/v2/consumer/workflows
Set your Civitai API token via the Token button in the navbar to enable Try It.
Request body — edit to customize (e.g. swap the image URL or prompt)
Valid JSON

Prompt punctuation is meaningful in reference mode: () marks music, <> sound effects, {} dialogue, and 【】 subtitles.

Reference media must be publicly reachable

BytePlus fetches referenceVideos and referenceAudios server-side, from its own infrastructure. Relative URLs and non-http(s) schemes are dropped before submission; signed URLs that expire and private buckets fail with an opaque error. Images passed via images go through the Civitai image pipeline first and don't have this restriction.

Seedance 2.5 rejects real human faces in reference media

v2.5 and the v2 series refuse reference images and videos containing real human faces. Your own recent Seedance outputs are accepted as references.

Parameters

The schema in the API reference is authoritative.

FieldDefaultNotes
engine— ✅"seedance"
model"v2""v2", "v2-fast", "v2-mini", "v2.5".
prompt— ✅
resolution"720p""480p", "720p", "1080p". 1080p is rejected on v2.5.
duration5Integer seconds. 4–15 on the v2 series; 4–30 on v2.5 — a value above 15 on any other model is rejected.
aspectRatio"adaptive""adaptive", "21:9", "16:9", "4:3", "1:1", "3:4", "9:16". On v2.5 anything but text-to-video is forced to "adaptive" (see below).
generateAudiotrueOutput audio is always mono.
seedrandomAssigned automatically when omitted. Not sent for v2.5, which ignores it.
images[][]Role is positional — see the mode table above.
referenceVideos[][]2–30 s each. MP4/MOV, ≤200 MB, H.264/H.265.
referenceAudios[][]2–30 s each. WAV/MP3, ≤15 MB.

Image limits: 300–6000 px per side, aspect ratio between 0.4 and 2.5, ≤30 MB, JPEG/PNG/WEBP/BMP/TIFF/GIF/HEIC/HEIF.

aspectRatio is coerced on Seedance 2.5

v2.5 classifies each request into a task type and only accepts adaptive for the frame-anchored and reference-driven ones — and it enforces that asynchronously, failing only after the task has queued. Any v2.5 request that isn't plain text-to-video therefore has aspectRatio rewritten to "adaptive" before submission; output geometry follows the input media.

Cost

Billed per second in Buzz on the workflow's transactions. Use whatif=true for an exact preview; see Payments (Buzz) for currency selection.

total = ratePerSecond × duration

Buzz per second of output:

model480p720p1080p
v290200490
v2-fast55120
v2-mini4498223
v2.5134300

v2-mini is charged at a reduced rate — 26 / 59 / 134 — when the request includes a referenceVideos entry. v2.5 is charged at the flat rate above regardless of reference media.

Worked examples:

ScenarioTotal
v2, 720p, 5 s1 000
v2-mini, 720p, 5 s490
v2.5, 720p, 5 s1 500
v2.5, 480p, 30 s4 020
v2.5, 720p, 30 s9 000

Failed generations and clips rejected by BytePlus's content review are not charged.

Reading the result

Same as any videoGen step — a single video blob:

json
{
  "steps": [{
    "output": {
      "video": {
        "id": "…",
        "url": "https://orchestration.civitai.com/v2/consumer/blobs/…"
      }
    }
  }]
}

The blob URL is signed and expires — refetch the workflow with GetWorkflow for a fresh one rather than storing it.

The output is H.264 in an MP4 container at 24 fps, with an AAC audio track when generateAudio is on.

Runtime

Well past the 100-second inline request budget, and roughly proportional to duration — a 30-second v2.5 clip takes considerably longer than a 5-second one. Submit with wait=0 and collect the result via a webhook or by polling — see Results and webhooks.

Troubleshooting

SymptomCauseFix
400 on durationAbove 15 s on v2 / v2-fast / v2-miniSwitch to model: "v2.5", which allows up to 30 s.
400 on resolution1080p with model: "v2.5"2.5 tops out at 720p; use v2 for 1080p.
Job fails after sitting in the queueBytePlus classified a v2.5 request into a task type your parameters don't satisfyUsually prompt-driven: edit/extend wording ("add", "remove", "extend") over reference media switches task type. Rephrase, or drop the reference media.
Reference media errorURL not publicly fetchable, or a clip outside the size/duration limitsCheck the limits above and that the URL resolves from the public internet.
Content-policy rejectionBytePlus's own input review — including its ban on real human faces in reference mediaRephrase the prompt or swap the source media. Not billed.

Civitai Developer Documentation