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.
Set mode to choose a workflow. It defaults to text_to_video. Select a mode to update the example below.
https://api.mlmux.com/v1/videos/generationscurl 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"
}'| Field | Type | Required | Description |
|---|---|---|---|
model | string | Yes | A model ID from the table below. |
prompt | string | Yes | Scene, subject, motion, camera, lighting, and sound direction. |
mode | string | No | text_to_video (default), image_to_video, first_last_frame, or multi_ref. |
ratio | string | No | 16:9, 9:16, 4:3, 3:4, 1:1, 21:9, or adaptive where listed. Defaults to adaptive. |
resolution | string | No | 480p, 720p, 1080p, or 4K, as listed for the model. Defaults to 720p. |
duration | integer | No | Clip length in seconds, within the model's range. Defaults to 5. Use -1 to let the model choose. |
generate_audio | boolean | No | Generate synchronized audio with the clip. |
route_mode | string | No | official or official-cheap. Defaults to the key's route mode, then official-cheap. |
image_url | string | Conditional | Required for image_to_video: the start frame. |
first_frame_urllast_frame_url | string | Conditional | Required for first_last_frame. You can send two ordered image_urls instead. |
image_urls | string[] | Conditional | Reference images for multi_ref. |
video_urlsaudio_urls | string[] | Conditional | Reference 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.
| Model | Model ID | Resolution | Ratio | Duration |
|---|---|---|---|---|
| Seedance 2.5 | model/seedance-2.5-max | 480p · 720p · 1080p | adaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:16 | 4–30 s |
| Seedance 2.5 CN | model/seedance-2.5-cn-max | 480p · 720p · 1080p | adaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:16 | 4–30 s |
| Seedance 2.0 | model/seedance-2.0-max | 480p · 720p · 1080p · 4K | adaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:16 | 4–15 s |
| Seedance 2.0 CN | model/seedance-2.0-cn-max | 480p · 720p · 1080p · 4K | adaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:16 | 4–15 s |
| Seedance 2.0 Fast | model/seedance-2.0-fast-max | 480p · 720p | adaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:16 | 4–15 s |
| Seedance 2.0 Fast CN | model/seedance-2.0-fast-cn-max | 480p · 720p | adaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:16 | 4–15 s |
| Seedance 2.0 Mini | model/seedance-2.0-mini-max | 480p · 720p | adaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:16 | 4–15 s |
| Seedance 2.0 Mini CN | model/seedance-2.0-mini-cn-max | 480p · 720p | adaptive · 16:9 · 21:9 · 4:3 · 1:1 · 3:4 · 9:16 | 4–15 s |
These IDs end in -max, so ratio, resolution, and duration are optional and fall back to the defaults above.
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.
https://api.mlmux.com/v1/videos/generations/{task_id}{
"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
}{
"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.
Instead of polling, subscribe to request.succeeded and request.failed. See Webhooks for the payload and signature check.