Skip to content

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.

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

PropertyValue
MethodPOST
Path/v1/video/generations
Base URLhttps://open.dieyuyun.com
ProtocolOpenAI-compatible

Authentication

All requests must include your API key in the header:

http
Authorization: Bearer YOUR_API_KEY

Request Fields

FieldTypeRequiredDefaultDescription
modelstringYesModel identifier, e.g. doubao-seedance-2-0
promptstringYesVideo content description
sizestringNo1280x720Video resolution: 1280x720, 720x1280, or 1920x1080
durationintegerNo5Video duration in seconds: 5 or 10
imagestringNoStarting frame image URL (image-to-video mode)
modestringNotextGeneration mode: text (text-to-video), image (image-to-video), audio (audio-driven)

Extended Fields (metadata)

FieldTypeDescription
metadata.generate_audiobooleanAuto-generate voiceover. Default: false
metadata.seedintegerRandom seed for reproducible results
metadata.camera_fixedbooleanLock camera position (no camera movement). Default: false
metadata.watermarkbooleanAdd watermark. Default: false
metadata.audio_urlstringAudio file URL for audio-driven mode
metadata.video_urlstringReference 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

  1. Digital avatars: Use audio mode with a front-facing photo and speech audio to generate lip-synced avatar videos
  2. Action descriptions: Seedance 2.0 responds well to detailed motion descriptions — describe character actions explicitly for better consistency
  3. Fixed camera: For scenes that don't require camera movement (e.g., news broadcasts), set metadata.camera_fixed: true for greater stability
  4. Image-to-video: Providing a high-resolution, front-facing reference image significantly improves facial expression and motion naturalness
  5. Duration selection: 5 seconds is ideal for testing and short clips; 10 seconds works well for complete narrative scenes

Rate Limits

LimitValue
Requests/min5 RPM
Daily requests100/day
Concurrent tasks2

Need higher limits? Submit a ticket in the Console.