Seedance_sup
Seedance 2.0 is ByteDance's video generation model family, supporting text-to-video and image/video reference generation. It uses the unified POST /v1/videos endpoint and returns responses in OpenAI Video style (id / status / result_url).
Difference from native Seedance V3
The platform also offers native Seedance V3 (doubao-seedance-*): it uses the Volcengine-native protocol /v3/video/tasks and ships with a separate asset library at /v3/assets. Model names, endpoints and asset libraries differ — do not mix them up. The Seedance_sup (this page) has its own asset library at /v1/assets — see Asset Library; the native one is at Asset Library V3.
Endpoints
- Create task:
POST $URL/v1/videos - Query task:
GET $URL/v1/videos/{task_id}
Available Models
| Model Name | Positioning | Supported Resolutions |
|---|---|---|
seedance-2-0 | Standard version, highest quality | 720p / 1080p / 4K |
seedance-2-0-fast | Fast version, balance of speed and quality | 720p / 1080p |
seedance-2-0-mini | Lightweight version, best cost performance | 720p |
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | seedance-2-0 / seedance-2-0-fast / seedance-2-0-mini |
prompt | string | Yes | Video content description; describe subject, action, scene and camera shot |
seconds | string | No | Output video duration in seconds, e.g. "5", "10" |
size | string | No | Resolution: 720p / 1080p / 4k, default 720p |
image | string | No | Reference image URL (single image, image-to-video) |
images | array | No | Reference image URLs (multi-image reference) |
input_reference | string | No | Reference image or video URL for image-to-video / video-reference generation |
metadata.ratio | string | No | Aspect ratio, e.g. 16:9, 9:16, 1:1 |
metadata.generate_audio | boolean | No | Whether to generate audio |
mode | string | No | Generation mode, defaults to std (auto-filled by the server, optional) |
Asset library for this family
This series (Seedance_sup) has its own asset library (/v1/assets, virtual/real portrait libraries): upload assets and reference them via asset://asset-xxx in images. You may also pass publicly accessible image/video URLs directly in image / images / input_reference (the upstream fetches them server-side; internal or localhost URLs will fail). See Asset Library.
Request Example
Text-to-video
# 1. Create video task
curl $URL/v1/videos \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"prompt": "A cat wearing sunglasses walking on a neon street, cyberpunk style",
"seconds": "5",
"size": "720p",
"metadata": { "ratio": "16:9", "generate_audio": true }
}'
# 2. Query task status (replace {task_id} with the id from step 1)
curl $URL/v1/videos/{task_id} \
-H "Authorization: Bearer $YOUR_API_KEY"import time
import requests
url = "$URL/v1/videos"
headers = {"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"}
payload = {"model": "seedance-2-0", "prompt": "A cat walking on a neon street", "seconds": "5", "size": "720p"}
task = requests.post(url, json=payload, headers=headers).json()
task_id = task["id"]
while True:
result = requests.get(f"{url}/{task_id}", headers=headers).json()
if result["status"] in ("completed", "failed"):
break
time.sleep(8)
print(result)Image-to-video
curl $URL/v1/videos \
-H "Authorization: Bearer $YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"prompt": "Make the person in the frame turn and walk toward the camera",
"image": "https://example.com/ref.png",
"seconds": "5",
"size": "720p"
}'Response Fields
Both create and query return the same structure (OpenAI Video style):
| Field | Type | Description |
|---|---|---|
id | string | Task ID |
status | string | Task status (see below) |
result_url | string | Video URL after completion (at the top level of the response, only when completed) |
progress | integer | Generation progress, 0~100 |
completed_at | integer | Completion timestamp (seconds, only when completed) |
error.message | string | Failure reason (only when failed) |
Task Status
| Status | Meaning | Action |
|---|---|---|
queued | Queued | Keep polling |
in_progress | Generating | Keep polling |
completed | Success | Get the video URL from the response and download it soon |
failed | Failed | Check error.message |
Poll every 5-10 seconds
Video URLs expire after a while — download and save them as soon as the task completes.
Response Example
{ "id": "task_xxxxxxxx", "status": "in_progress", "progress": 30 }After completion:
{ "id": "task_xxxxxxxx", "status": "completed", "progress": 100, "result_url": "https://cdn.volctokens.com/.../result.mp4", "completed_at": 1786431715 }FAQ
Q: How long does a task take?
Usually 1-3 minutes for 720p/5s; 4K takes longer. Poll the query endpoint; tasks stuck over 20 minutes are auto-failed.
Q: Do video links expire?
Yes. Download and store the video soon after generation completes.
Q: Does this family have an asset library?
Yes. The Seedance_sup (this page) has its own /v1/assets library (virtual/real portrait libraries — see Asset Library); native Seedance V3 has a separate /v3/assets library (see Asset Library V3). Assets cannot be referenced across the two.
