Video model · ByteDance
Seedance 2.5 Pro API
Seedance 2.5 Pro is ByteDance's Seedance 2.5 video model, served on TokenRa under the ID artsdance-2-5-pro-260801. It takes text and reference images and returns a video with audio. The request format differs from Seedance 2.0.
- Model ID
artsdance-2-5-pro-260801- Input
- Text, reference images
- Output
- 720p or 1080p video
- Mode
- Async task
Capabilities
Capabilities & endpoints
Video generation is asynchronous: create a task, then poll it. A 4–5 second 720p clip took about 5 minutes in testing.
task_id immediately.data.result_url when data.status is SUCCESS.Modes
Generation modes
A. Text to video
Output settings sit at the top level of the request. Tested on 2026-10-23: the video came back 720x1280, 4.08 seconds long and without an audio track.
{
"model": "artsdance-2-5-pro-260801",
"prompt": "A paper boat drifting down a rainy neon street at night, cinematic close-up",
"resolution": "720p",
"ratio": "9:16",
"duration": 4,
"generate_audio": false
}B. Reference images
Image URLs in images are sent to the model as reference images. Tested on 2026-10-23: a 1280x720, 5-second video with audio, the defaults when ratio, duration and generate_audio are left out.
{
"model": "artsdance-2-5-pro-260801",
"prompt": "The logo card slowly zooms in while a soft light sweeps across it",
"images": ["https://example.com/logo-card.png"],
"resolution": "720p"
}C. content array
To control each item, send content instead of prompt and images: 1 to 16 items of type text or image_url, with at least one text item. role is passed to the model as given. Mode B is converted into this same request.
{
"model": "artsdance-2-5-pro-260801",
"resolution": "720p",
"content": [
{"type": "text", "text": "The character from image 1 walks into the room from image 2"},
{
"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
resolution, ratio, duration and generate_audio from the top level of the request. This is the opposite of Seedance 2.0, which reads them from metadata.| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | artsdance-2-5-pro-260801 |
prompt | string | Yes | Describe the scene, the motion and the camera. Optional when content contains a text item. |
resolution | string | Yes | 720p or 1080p. Required; 480p and a missing value are rejected. Also decides the price. |
ratio | string | No | Aspect ratio such as 16:9 or 9:16; 9:16 was tested. |
duration | integer | No | Length in seconds. Default 5; 4 was tested. |
generate_audio | boolean | No | Generate a soundtrack. On by default; false produced a silent video. |
images | string[] | No | Reference image URLs, see mode B. |
content | array | No | Text and image items, see mode C. Replaces prompt and images. |
metadatais ignored. A request that putresolutiononly inmetadatawas rejected withinvalid_resolution.- Video and audio references are not available:
video_urlandaudio_urlitems fail withunsupported content type. - Only the fields in the table are sent to the model. Others, such as
seed,watermark,return_last_frameorcallback_url, are dropped without an error.
Response
Response format
Create response
{
"id": "task_FUhA4FK80TV1p70mpHlyZXCxeHR0dPPa",
"task_id": "task_FUhA4FK80TV1p70mpHlyZXCxeHR0dPPa",
"object": "video",
"model": "artsdance-2-5-pro-260801",
"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": {
"id": "cgt-20261023154938-amaq7",
"object": "video.generation",
"status": "completed",
"data": [{"url": "https://example.com/output.mp4"}],
"usage": {"total_tokens": 104140, "completion_tokens": 104140}
}
}
}data.data holds the raw upstream task. Unlike Seedance 2.0 it does not repeat the resolution, ratio or duration; usage.total_tokens is the billed video token count.
| 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
Errors from this model
| HTTP | code | Message | Cause |
|---|---|---|---|
400 | invalid_resolution | resolution must be 720p or 1080p | resolution missing, 480p, or only inside metadata. |
400 | invalid_request | prompt is required | No prompt and no text item in content. |
500 | build_request_failed | unsupported content type: video_url | A content item other than text or image_url. |
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–5 s, 720p) finished in about 5 minutes.
result_urlis a temporary link. Download and store the video yourself.- The price depends on
resolution(720p or 1080p). See the live rate in the Model Square.