Preparing page…
▥ Seedance 2.5 is here! ›
PricingDocsUpdatesAccount
GuidesOverviewImage APIVideo API
On this pageGeneration modesRequest exampleParametersModelsTask lifecycleWebhooks
ResourcesModel catalogPricingAPI keysWebhook endpointsOpenAPI specificationService statusProduct updates
OverviewImage APIVideo API
Video API

Generate videos

Run Seedance 2.5, Seedance 2.5 CN, Seedance 2.0, Seedance 2.0 CN, Seedance 2.0 Fast, Seedance 2.0 Fast CN, Seedance 2.0 Mini, Seedance 2.0 Mini CN. Every video request creates a task that you poll or receive by webhook.

Generation modes

Set mode to choose a workflow. It defaults to text_to_video. Select a mode to update the example below.

Request example

POSThttps://api.mlmux.com/v1/videos/generations
curl https://api.mlmux.com/v1/videos/generations \
  -H "Authorization: Bearer $MLMUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "model/seedance-2.5-max",
  "prompt": "A cinematic tracking shot along a coastal road at sunrise, warm backlight, gentle camera drift",
  "mode": "text_to_video",
  "ratio": "16:9",
  "resolution": "720p",
  "duration": 8,
  "generate_audio": true,
  "route_mode": "official-cheap"
}'

Parameters

FieldTypeRequiredDescription
modelstringYesA model ID from the table below.
promptstringYesScene, subject, motion, camera, lighting, and sound direction.
modestringNotext_to_video (default), image_to_video, first_last_frame, or multi_ref.
ratiostringNo16:9, 9:16, 4:3, 3:4, 1:1, 21:9, or adaptive where listed. Defaults to adaptive.
resolutionstringNo480p, 720p, 1080p, or 4K, as listed for the model. Defaults to 720p.
durationintegerNoClip length in seconds, within the model's range. Defaults to 5. Use -1 to let the model choose.
generate_audiobooleanNoGenerate synchronized audio with the clip.
route_modestringNoofficial or official-cheap. Defaults to the key's route mode, then official-cheap.
image_urlstringConditionalRequired for image_to_video: the start frame.
first_frame_url
last_frame_url
stringConditionalRequired for first_last_frame. You can send two ordered image_urls instead.
image_urlsstring[]ConditionalReference images for multi_ref.
video_urls
audio_urls
string[]ConditionalReference videos and audio for multi_ref.

multi_ref needs at least one reference. Seedance 2.5 accepts up to 30 images, 10 videos, and 10 audio files (50 in total); the other models accept up to 9 images, 3 videos, and 3 audio files (12 in total). Use public https URLs, or upload files first with POST /v1/uploads.

Models

ModelModel IDResolutionRatioDuration
Seedance 2.5model/seedance-2.5-max480p · 720p · 1080padaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:164–30 s
Seedance 2.5 CNmodel/seedance-2.5-cn-max480p · 720p · 1080padaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:164–30 s
Seedance 2.0model/seedance-2.0-max480p · 720p · 1080p · 4Kadaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:164–15 s
Seedance 2.0 CNmodel/seedance-2.0-cn-max480p · 720p · 1080p · 4Kadaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:164–15 s
Seedance 2.0 Fastmodel/seedance-2.0-fast-max480p · 720padaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:164–15 s
Seedance 2.0 Fast CNmodel/seedance-2.0-fast-cn-max480p · 720padaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:164–15 s
Seedance 2.0 Minimodel/seedance-2.0-mini-max480p · 720padaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:164–15 s
Seedance 2.0 Mini CNmodel/seedance-2.0-mini-cn-max480p · 720padaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:164–15 s

These IDs end in -max, so ratio, resolution, and duration are optional and fall back to the defaults above.

Task lifecycle

Creating a video always returns HTTP 202 with a task. Save its id and poll poll_url. When status is succeeded, the response includes video, usage, and actual_charge_credits.

GEThttps://api.mlmux.com/v1/videos/generations/{task_id}
202 Accepted
{
  "id": "task_01a9...",
  "object": "video.generation.task",
  "status": "queued",
  "created": 1767225600,
  "model": "model/seedance-2.5-max",
  "api_method": "videos.generations.create",
  "poll_url": "/v1/videos/generations/task_01a9...",
  "progress": 0,
  "message": "queued",
  "estimated_charge_credits": 1.84
}
Succeeded
{
  "id": "task_01a9...",
  "object": "video.generation.task",
  "status": "succeeded",
  "progress": 100,
  "message": "completed",
  "video": "https://.../generated/01a9....mp4",
  "last_frame_image": "https://.../generated/01a9....jpg",
  "usage": {
    "output_tokens": 172800,
    "video_seconds": 8,
    "video_resolution": "720p"
  },
  "estimated_charge_credits": 1.84,
  "actual_charge_credits": 1.79
}

A failed task has status failed and the reason in message. Output URLs are hosted by MLMux; download the files you want to keep.

Webhooks

Instead of polling, subscribe to request.succeeded and request.failed. See Webhooks for the payload and signature check.

PreviousImage APINextModel catalog