Seedance 2.0
Cinema-grade AI video generation by ByteDance. Text-to-video, image-to-video, video-to-video, and audio-driven lipsync. Up to 15 seconds at 1080p with native audio.
seedance-2AsyncStudioGenerate
/api/v1/generateReturns a task_id immediately. Poll /api/v1/status for the result. Credits are deducted upfront and auto-refunded if the generation fails.
Parameters
modelseedance-2prompt@image1 @video1 @audio1 tags to reference attached media (see References below).Include camera and lens instructions directly in the prompt for cinematic control (see Cinema Controls below).
duration5aspect_ratio16:9 9:16 1:1 4:3 3:4 21:9. Default: 16:9resolution480p 720p 1080p. Default: 720p. Fast mode supports 480p and 720p (1080p is standard only).modestandard (cinema-grade, 2-10 min) or fast (good quality, 1-5 min). Default: standardreference_images@image1, @image2 in prompt. Single image = image-to-video. Multiple = reference mode. Upload via /api/v1/upload.reference_videos@video1 in prompt. Enables video-to-video: motion transfer, style reference, video editing.reference_audio@audio1 in prompt. Enables lipsync (sync mouth to dialogue) and beat-sync (sync motion to music). Does not change the generation mode.last_framereference_images[0]) to this end pose/scene.reference_modetrue to force reference mode even with a single image: the image becomes an identity/style hint and the model composes its own opening shot instead of pinning your image as the first frame.tagcharacter object style location. Tagged outputs appear in your library.Examples
curl -X POST https://www.lunostudio.ai/api/v1/generate \
-H "Authorization: Bearer luno_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2",
"prompt": "Cinematic drone shot over a misty mountain lake at sunrise, shot on ARRI ALEXA 65",
"duration": 8,
"aspect_ratio": "16:9",
"resolution": "1080p",
"mode": "standard"
}'curl -X POST https://www.lunostudio.ai/api/v1/generate \
-H "Authorization: Bearer luno_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2",
"prompt": "@image1 walks through a neon-lit Tokyo street at night",
"duration": 6,
"reference_images": ["https://storage.lunostudio.ai/.../character.jpg"]
}'curl -X POST https://www.lunostudio.ai/api/v1/generate \
-H "Authorization: Bearer luno_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2",
"prompt": "@image1 and @image2 shake hands in a boardroom, medium shot",
"duration": 5,
"reference_images": [
"https://storage.lunostudio.ai/.../person-a.jpg",
"https://storage.lunostudio.ai/.../person-b.jpg"
],
"tag": "character"
}'curl -X POST https://www.lunostudio.ai/api/v1/generate \
-H "Authorization: Bearer luno_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2",
"prompt": "@image1 delivers the monologue from @audio1, close-up shot, warm lighting",
"duration": 10,
"reference_images": ["https://storage.lunostudio.ai/.../actor.jpg"],
"reference_audio": ["https://storage.lunostudio.ai/.../dialogue.mp3"]
}'curl -X POST https://www.lunostudio.ai/api/v1/generate \
-H "Authorization: Bearer luno_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2",
"prompt": "Recreate the camera movement from @video1 but with a mountain landscape at sunset",
"duration": 8,
"reference_videos": ["https://storage.lunostudio.ai/.../reference-clip.mp4"]
}'curl -X POST https://www.lunostudio.ai/api/v1/generate \
-H "Authorization: Bearer luno_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2",
"prompt": "@image1 slowly sits down in the chair",
"duration": 5,
"reference_images": ["https://storage.lunostudio.ai/.../standing.jpg"],
"last_frame": "https://storage.lunostudio.ai/.../sitting.jpg"
}'{
"task_id": "sd2_abc123def456",
"credit_cost": 42,
"status": "pending",
"model": "bytedance/seedance-2.0",
"type": "video"
}References & Tags
Use @ tags in your prompt to tell the model how to use each reference. The number matches the array index (1-based). All URLs must be publicly accessible -- use /api/v1/upload to host your files.
@image1, @image2, ...via reference_imagesCharacter consistency, style transfer, scene composition. Single image = image-to-video. Multiple = reference mode (the model maintains consistency across all referenced subjects).
Example: "@image1 and @image2 shake hands in a boardroom"
@video1, @video2, ...via reference_videosMotion transfer, camera movement reference, video-to-video editing. The model matches movement, camera work, or editing style from the reference.
Example: "Recreate the camera movement from @video1 but with a mountain landscape"
@audio1via reference_audioLipsync: sync character mouth movements to dialogue. Beat-sync: match motion timing to music. Attach MP3/WAV dialogue for talking-head videos.
Example: "@image1 delivers the monologue from @audio1, close-up"
last_frameStart-to-end motion. Provide a start image as reference_images[0] and an end image as last_frame. The video transitions from start to end pose.
reference_videos keeps the pinned first frame. See Pinned First Frame + Audio.Pinned First Frame + Audio
A single reference_images URL is used as the first frame of the video. reference_audio can be attached at the same time for voice and lipsync, and last_frame sets the final frame. To chain clips, pass the previous clip's final frame as the next clip's first frame.
curl -X POST https://www.lunostudio.ai/api/v1/generate \
-H "Authorization: Bearer luno_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2",
"prompt": "The narrator continues speaking, camera slowly pushes in",
"duration": 8,
"reference_images": ["https://storage.lunostudio.ai/.../prev-clip-final-frame.jpg"],
"reference_audio": ["https://storage.lunostudio.ai/.../narration-part2.mp3"]
}'Identity references + a fixed first frame
With 2+ images the request runs in reference mode and no frame is pinned. To combine identity references with a fixed first frame, generate the opening frame as a still with a multi-reference image model such as Nano Banana Pro, then pass that image plus your audio here.
Set reference_mode: true to use the image as an identity/style reference instead of the first frame.
Modes & Resolution
| Mode | Quality | Speed | Max Res |
|---|---|---|---|
| standard | Cinema-grade | 2-10 min | 1080p |
| fast | Good for iteration | 1-5 min | 720p |
Audio
Seedance 2.0 generates native audio with every video automatically. No toggle needed. The model generates:
- Dialogue -- synced to character lip movements
- Ambient sound -- environment-matched backgrounds
- Sound effects -- footsteps, doors, impacts matched to action
- Music -- when prompted (e.g. "upbeat background music")
For lipsync to specific dialogue, attach audio via reference_audio and use @audio1 in the prompt.
Cinema Controls
Include camera, lens, focal length, and aperture instructions directly in your prompt. The model responds to these as real cinematography direction.
{
"model": "seedance-2",
"prompt": "A woman walks through rain on a neon-lit street, shot on ARRI ALEXA 65, Panavision C-Series Anamorphic lens, 35mm, f/2.8, slow dolly forward",
"duration": 8,
"aspect_ratio": "21:9",
"resolution": "1080p"
}Check Status
/api/v1/status?task_id={task_id}Poll every 5-10 seconds. Typical generation time is 2-10 minutes, and can exceed 10 minutes for longer or higher-resolution videos.
curl "https://www.lunostudio.ai/api/v1/status?task_id=sd2_abc123def456" \
-H "Authorization: Bearer luno_sk_your_key_here"{ "task_id": "sd2_abc123def456", "status": "generating" }{
"task_id": "sd2_abc123def456",
"status": "success",
"output": ["https://storage.lunostudio.ai/generations/user/1716234567.mp4"]
}{
"task_id": "sd2_abc123def456",
"status": "failed",
"error": "Generation failed",
"refunded": true
}Status values
pendingQueued, waiting
generatingActively rendering
successDone. Output in response.
failedFailed. Credits refunded.
Need help?
Engineering team responds within 5 minutes.