Doubao Seedance 2.0 Video Generation
Doubao Seedance 2.0 is ByteDance's next-generation video generation model. It supports text-to-video, image-to-video, and audio-driven video modes, with excellent motion consistency and visual coherence — ideal for short-form video creation, digital avatars, and ad production.
Try it Online
Quick Start
bash
curl -X POST https://open.dieyuyun.com/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0",
"prompt": "A female news anchor presenting in a studio, front-facing camera, natural expression",
"size": "1280x720",
"duration": 5
}'Endpoint
| Property | Value |
|---|---|
| Method | POST |
| Path | /v1/video/generations |
| Base URL | https://open.dieyuyun.com |
| Protocol | OpenAI-compatible |
Authentication
All requests must include your API key in the header:
http
Authorization: Bearer YOUR_API_KEYRequest Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| model | string | Yes | — | Model identifier, e.g. doubao-seedance-2-0 |
| prompt | string | Yes | — | Video content description |
| size | string | No | 1280x720 | Video resolution: 1280x720, 720x1280, or 1920x1080 |
| duration | integer | No | 5 | Video duration in seconds: 5 or 10 |
| image | string | No | — | Starting frame image URL (image-to-video mode) |
| mode | string | No | text | Generation mode: text (text-to-video), image (image-to-video), audio (audio-driven) |
Extended Fields (metadata)
| Field | Type | Description |
|---|---|---|
| metadata.generate_audio | boolean | Auto-generate voiceover. Default: false |
| metadata.seed | integer | Random seed for reproducible results |
| metadata.camera_fixed | boolean | Lock camera position (no camera movement). Default: false |
| metadata.watermark | boolean | Add watermark. Default: false |
| metadata.audio_url | string | Audio file URL for audio-driven mode |
| metadata.video_url | string | Reference video URL for style transfer |
Request Examples
Text-to-Video
bash
curl -X POST https://open.dieyuyun.com/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0",
"prompt": "A chef tossing food in a wok, flames rising, slow motion close-up",
"size": "1280x720",
"duration": 5
}'python
import requests
response = requests.post(
"https://open.dieyuyun.com/v1/video/generations",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"model": "doubao-seedance-2-0",
"prompt": "A chef tossing food in a wok, flames rising, slow motion close-up",
"size": "1280x720",
"duration": 5
}
)
task = response.json()
task_id = task["task_id"]
print(f"Task created: {task_id}")javascript
const response = await fetch('https://open.dieyuyun.com/v1/video/generations', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'doubao-seedance-2-0',
prompt: 'A chef tossing food in a wok, flames rising, slow motion close-up',
size: '1280x720',
duration: 5,
}),
})
const task = await response.json()
console.log('Task created:', task.task_id)Image-to-Video
bash
curl -X POST https://open.dieyuyun.com/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0",
"mode": "image",
"prompt": "The person smiles and slowly turns their head",
"image": "https://example.com/portrait.jpg",
"size": "720x1280",
"duration": 5
}'Audio-Driven
bash
curl -X POST https://open.dieyuyun.com/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedance-2-0",
"mode": "audio",
"prompt": "A digital avatar narrating the following audio content",
"image": "https://example.com/avatar.jpg",
"duration": 10,
"metadata": {
"audio_url": "https://example.com/speech.mp3"
}
}'Response Format
Video generation is asynchronous. Submit a task to receive a task ID, then poll for results.
Task Creation Response
json
{
"task_id": "task_seed456",
"status": "queued",
"progress": 0,
"created_at": "2025-01-15T10:30:00Z"
}Polling Task Status
bash
curl https://open.dieyuyun.com/v1/video/generations/task_seed456 \
-H "Authorization: Bearer YOUR_API_KEY"Completed Task Response
json
{
"task_id": "task_seed456",
"status": "completed",
"progress": 100,
"metadata": {
"url": "https://cdn.dieyuyun.com/videos/task_seed456.mp4",
"duration": 5,
"size": "1280x720"
},
"completed_at": "2025-01-15T10:34:00Z"
}Polling Example
python
import time
import requests
# Submit task
resp = requests.post(
"https://open.dieyuyun.com/v1/video/generations",
headers={"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"},
json={
"model": "doubao-seedance-2-0",
"prompt": "A female news anchor presenting in a studio",
"duration": 5
}
)
task_id = resp.json()["task_id"]
# Poll for result
while True:
status = requests.get(
f"https://open.dieyuyun.com/v1/video/generations/{task_id}",
headers={"Authorization": "Bearer YOUR_API_KEY"}
).json()
if status["status"] == "completed":
print(f"Video URL: {status['metadata']['url']}")
break
elif status["status"] == "failed":
print("Generation failed")
break
time.sleep(5)Best Practices
- Digital avatars: Use
audiomode with a front-facing photo and speech audio to generate lip-synced avatar videos - Action descriptions: Seedance 2.0 responds well to detailed motion descriptions — describe character actions explicitly for better consistency
- Fixed camera: For scenes that don't require camera movement (e.g., news broadcasts), set
metadata.camera_fixed: truefor greater stability - Image-to-video: Providing a high-resolution, front-facing reference image significantly improves facial expression and motion naturalness
- Duration selection: 5 seconds is ideal for testing and short clips; 10 seconds works well for complete narrative scenes
Rate Limits
| Limit | Value |
|---|---|
| Requests/min | 5 RPM |
| Daily requests | 100/day |
| Concurrent tasks | 2 |
Need higher limits? Submit a ticket in the Console.