Video model · ByteDance
Seedance 2.0 Mini API
Seedance 2.0 Mini is the lowest-cost model of ByteDance's Seedance 2.0 series, meant for high-volume video production. It takes the same requests as Seedance 2.0 Pro.
- Model ID
seedance-2-0-mini- Input
- Text, images
- Output
- Video with audio
- Mode
- Async task
Capabilities
Capabilities & endpoints
Video generation is asynchronous: create a task, then poll it. A 4-second 480p clip took 3.5 to 4 minutes in testing.
POSThttps://tokenra.io/v1/video/generationsTested
Create a task. Returns
task_id immediately.GEThttps://tokenra.io/v1/video/generations/{task_id}Tested
Query the task. The video link is in
data.result_url when data.status is SUCCESS.Modes
Generation modes
All three request shapes produced a video on 2026-10-23.
A. Text to video
Only a prompt. Output settings go in metadata.
{
"model": "seedance-2-0-mini",
"prompt": "A paper boat drifting down a rainy neon street at night, cinematic close-up",
"metadata": {
"resolution": "720p",
"ratio": "16:9",
"duration": 5
}
}B. Image to video (first frame)
Put image URLs in images; one image is used as the first frame.
{
"model": "seedance-2-0-mini",
"prompt": "The girl in the picture turns around and smiles",
"images": ["https://example.com/first-frame.png"],
"metadata": {"resolution": "720p", "duration": 5}
}C. Reference images
To give images a role, send Volcengine Ark content items inside metadata. The prompt is added as the text item automatically.
{
"model": "seedance-2-0-mini",
"prompt": "The character from image 1 walks into the room from image 2",
"metadata": {
"resolution": "720p",
"ratio": "16:9",
"content": [
{
"type": "image_url",
"image_url": {"url": "https://example.com/character.png"},
"role": "reference_image"
},
{
"type": "image_url",
"image_url": {"url": "https://example.com/room.png"},
"role": "reference_image"
}
]
}
}Request
Request parameters
Put output settings in metadata
Top-level
resolution, ratio and duration are ignored for Seedance 2.0. A test on 2026-10-23 with top-level ratio: "9:16" and duration: 4 produced a 16:9, 5-second video, while metadata.resolution was applied. With the same values in metadata, the video was 9:16 and 4 seconds long.Top-level fields
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | seedance-2-0-mini. seedance-2-0-pro and seedance-2-0-fast take the same parameters. |
prompt | string | Yes | Describe the scene, the motion and the camera. |
images | string[] | No | Image URLs. Plain strings only; use metadata.content when you need roles. |
metadata | object | No | Output settings and Ark-native fields, see the next table. |
metadata fields
| Parameter | Type | Required | Description |
|---|---|---|---|
resolution | string | No | 480p, 720p or 1080p; 480p was tested. Also decides the price. |
ratio | string | No | 16:9, 9:16, 4:3, 3:4, 1:1, 21:9 or adaptive. 16:9 and 9:16 were tested. |
duration | integer | No | Length in seconds, 4 to 15. Default 5; 4 was tested. |
generate_audio | boolean | No | Generate a matching soundtrack. On by default: every test video had an audio track. |
seed | integer | No | Random seed for repeatable results. |
camera_fixed | boolean | No | Keep the camera still. |
watermark | boolean | No | Add the upstream watermark. |
content | array | No | Ark material items: image_url with role such as first_frame, last_frame or reference_image. |
Response
Response format
Create response
{
"id": "task_FUhA4FK80TV1p70mpHlyZXCxeHR0dPPa",
"task_id": "task_FUhA4FK80TV1p70mpHlyZXCxeHR0dPPa",
"object": "video",
"model": "seedance-2-0-mini",
"status": "queued",
"progress": 0,
"created_at": 1792766873
}Query response
{
"code": "success",
"message": "",
"data": {
"task_id": "task_FUhA4FK80TV1p70mpHlyZXCxeHR0dPPa",
"action": "generate",
"status": "SUCCESS",
"fail_reason": "",
"result_url": "https://example.com/output.mp4",
"submit_time": 1792766873,
"start_time": 1792766890,
"finish_time": 1792767085,
"progress": "100%",
"data": {"resolution": "720p", "ratio": "16:9", "duration": 5, "...": "..."}
}
}data.data holds the raw upstream task, including the resolution, ratio and duration that were actually used.
| data.status | Meaning |
|---|---|
NOT_START / SUBMITTED / QUEUED | Accepted, waiting to start. |
IN_PROGRESS | Generating. |
SUCCESS | Done. Download result_url. |
FAILURE | Failed. The reason is in fail_reason; the pre-charged amount is refunded. |
Errors
Errors & limits
Common errors
| HTTP | error.code | Meaning | What to do |
|---|---|---|---|
401 | — | Missing, wrong or deleted API key. The message is Invalid token. | Check the Authorization: Bearer header and the key in the console. |
400 | — | The body is not valid JSON. | Fix the JSON and send Content-Type: application/json. |
500 | invalid_request | A required field is missing, for example messages. | Add the field named in the message. Retrying will not help. |
403 | insufficient_user_quota | Your balance or plan quota is used up. | Top up in the console, then retry. |
503 | model_not_found | Unknown model ID, or no channel serves it for your group. | Check the ID in the model list or with GET /v1/models. |
429 | — | Too many requests. | Back off exponentially and retry. |
5xx | — | The upstream provider failed or timed out. | Retry a few times; keep the request id if it persists. |
Limits and notes
- Poll every 10–15 seconds. Test tasks (4 s, 480p) finished in 3.5 to 4 minutes.
result_urlis a temporary link. Download and store the video yourself.- The price depends on
metadata.resolutionand on whether a video reference is included. See the live rate in the Model Square.