Seedance 2.0
Seedance 2.0 models are called through one unified, asynchronous job API. Start a task with POST /api/generate, then poll GET /api/generate/{taskId} until it finishes. This family exposes 3 endpoints.
Overview
Every endpoint shares the same envelope — only model and the input fields change. Run any from the Models Market playground.
bytedance/seedance-2, -fast, and -mini share one input schema — pick a mode by which fields you send (mutually exclusive groups):
- Text-to-video: prompt only (optional reference_*)
- Single-frame I2V:
first_frame_url+ prompt withaspect_ratioadaptive - First/last:
first_frame_url+last_frame_url+ prompt, alsoadaptive; noreference_* - Omni reference:
reference_image_urls+ optional video/audio; use@image1,@video1,@audio1in prompt
On direct routes, every input image is automatically uploaded to the virtual asset library; videos and audio remain direct public URLs. On success, resultUrls are /api/media/{taskId}/0.mp4 proxy links playable in CN.
reference_portrait_kinds, first_frame_portrait_kind, or last_frame_portrait_kind. Videos and audio remain direct public URLs.Seedance 2 reference media limits
Reference images
- Formats
- JPEG, PNG, WEBP, BMP, TIFF, GIF
- Width / height
- 300-6000 px
- Aspect ratio
- 0.4-2.5
- File size
- < 30 MB
Reference videos
- Formats
- MP4, MOV
- Resolution tiers
- 480p, 720p
- Duration per file
- 2-15 s
- Count / total duration
- Up to 3 / no more than 15 s total
- Width / height
- 300-6000 px
- Total pixels
- 409600-927408
- Aspect ratio
- 0.4-2.5
- File size
- <= 50 MB
- Frame rate
- 24-60 FPS
Reference audio
- Formats
- WAV, MP3
- Duration per file
- 2-15 s
- Count / total duration
- Up to 3 / no more than 15 s total
- File size
- <= 15 MB
- Sample rate / channels
- Not publicly disclosed
- Audio codec
- Not publicly disclosed
Output video
- resolution
- 480p, 720p, 1080p, 4k
- aspect_ratio
- 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, adaptive
- Exact pixel dimensions
- Not publicly disclosed; a fixed width and height are not guaranteed
Authentication
Create an API key at /api-keys, then send it as a Bearer token. Requests from the browser while logged in also work via the session cookie.
Authorization: Bearer <YOUR_API_KEY>Create Task
POST https://api.lithovas.com/api/generateBody: { "model": "<slug>", "input": { … } }
Response: { "taskId": "<id>", "state": "waiting" }
Query Result
GET https://api.lithovas.com/api/generate/<taskId>Response: { "taskId", "state": "waiting" | "success" | "fail", "resultUrls": [ … ], "creditsConsumed", "failMsg", "balance" }
{
"state": "success",
"resultUrls": [
"https://api.lithovas.com/api/media/task_lithovas_example/0.mp4"
],
"creditsConsumed": 161,
"balance": 9958,
"_comment": "resultUrls are first-party /api/media proxy links playable in CN; the server refreshes upstream signatures on demand."
}state becomes success or fail. Failed tasks are not billed.Upload media first
If your image, video, or audio is local, upload it to Lithovas first. Then pass the returned url as first_frame_url, reference_image_urls, reference_video_urls, or reference_audio_urls. Do not send local file paths to the model.
curl -X POST https://api.lithovas.com/api/uploads \
-H "Authorization: Bearer $API_KEY" \
-F "file=@portrait.png"
# Use the returned "url" as first_frame_url or inside reference_image_urls.Endpoints
| Model | Task | model slug |
|---|---|---|
| Seedance 2 | Image to Video | bytedance/seedance-2 |
| Seedance 2 Fast | Image to Video | bytedance/seedance-2-fast |
| Seedance 2 Mini | Image to Video | bytedance/seedance-2-mini |
Seedance 2 · Image to Video
bytedance/seedance-2promptstringrequiredText prompt (max 30000 characters). Use @image1, @video1, @audio1 to refer to reference_* media by array order.
first_frame_urlstringoptionalFirst-frame image URL. The platform uploads it to the virtual asset library before generation. Mutually exclusive with reference_* fields.
last_frame_urlstringoptionalLast-frame image URL. The platform uploads it to the virtual asset library before generation. Requires first_frame_url.
reference_image_urlsarray<string>optionalPublic https reference image URLs (max 9). Every image is uploaded to the virtual asset library before generation. Mutually exclusive with strict first/last frame mode.
reference_imagesarray<object>optionalStructured reference images: [{ url }]. Alternative to reference_image_urls; every image uses virtual asset ingest.
virtual_portraitsarray<string>optionalPortrait URLs always uploaded to the virtual portrait library before generation.
real_portraitsarray<string>optionalPortrait URLs (including real-person photos) uploaded to the virtual portrait library before generation.
reference_video_urlsarray<string>optionalPublic https reference video URLs (max 3). Motion/camera/rhythm cues only; videos that contain real people may be rejected upstream. Use portrait images marked virtual/real for person consistency.
reference_audio_urlsarray<string>optionalPublic https reference audio URLs (max 3). Used as BGM/voice/sfx cues and mapped to @audioN slots.
generate_audiobooleanoptionalGenerate synchronized output audio for the video. Disabled by default; enable only with an original sound description or authorized reference audio. Independent of reference_audio_urls, which only provides an audio cue.
return_last_framebooleanoptionalAsk the result to include the generated video's final frame when available.
resolutionenum<string>optionalOutput video resolution (480p–4K).
aspect_ratioenum<string>optionalOutput aspect ratio. Use adaptive for single-frame or first/last-frame I2V.
durationintegeroptionalOutput video duration from 4 to 15 seconds.
output_formatenum<string>optionalOutput container format. mp4 is recommended for most integrations.
web_searchbooleanoptionalEnable model-side web/search context when available. Keep false for normal video generation.
curl -X POST https://api.lithovas.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance/seedance-2",
"input": {
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "720p",
"return_last_frame": false,
"web_search": false,
"prompt": "镜头缓慢推近,电影感自然光,人物回头微笑",
"aspect_ratio": "16:9"
}
}'Seedance 2 Fast · Image to Video
bytedance/seedance-2-fastpromptstringrequiredText prompt (max 30000 characters). Use @image1, @video1, @audio1 to refer to reference_* media by array order.
first_frame_urlstringoptionalFirst-frame image URL. The platform uploads it to the virtual asset library before generation. Mutually exclusive with reference_* fields.
last_frame_urlstringoptionalLast-frame image URL. The platform uploads it to the virtual asset library before generation. Requires first_frame_url.
reference_image_urlsarray<string>optionalPublic https reference image URLs (max 9). Every image is uploaded to the virtual asset library before generation. Mutually exclusive with strict first/last frame mode.
reference_imagesarray<object>optionalStructured reference images: [{ url }]. Alternative to reference_image_urls; every image uses virtual asset ingest.
virtual_portraitsarray<string>optionalPortrait URLs always uploaded to the virtual portrait library before generation.
real_portraitsarray<string>optionalPortrait URLs (including real-person photos) uploaded to the virtual portrait library before generation.
reference_video_urlsarray<string>optionalPublic https reference video URLs (max 3). Motion/camera/rhythm cues only; videos that contain real people may be rejected upstream. Use portrait images marked virtual/real for person consistency.
reference_audio_urlsarray<string>optionalPublic https reference audio URLs (max 3). Used as BGM/voice/sfx cues and mapped to @audioN slots.
generate_audiobooleanoptionalGenerate synchronized output audio for the video. Disabled by default; enable only with an original sound description or authorized reference audio. Independent of reference_audio_urls, which only provides an audio cue.
return_last_framebooleanoptionalAsk the result to include the generated video's final frame when available.
resolutionenum<string>optionalOutput video resolution (480p or 720p).
aspect_ratioenum<string>optionalOutput aspect ratio. Use adaptive for single-frame or first/last-frame I2V.
durationintegeroptionalOutput video duration from 4 to 15 seconds.
output_formatenum<string>optionalOutput container format. mp4 is recommended for most integrations.
web_searchbooleanoptionalEnable model-side web/search context when available. Keep false for normal video generation.
curl -X POST https://api.lithovas.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance/seedance-2-fast",
"input": {
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "720p",
"return_last_frame": false,
"web_search": false,
"prompt": "镜头缓慢推近,电影感自然光,人物回头微笑",
"aspect_ratio": "16:9"
}
}'Seedance 2 Mini · Image to Video
bytedance/seedance-2-minipromptstringrequiredText prompt (max 30000 characters). Use @image1, @video1, @audio1 to refer to reference_* media by array order.
first_frame_urlstringoptionalFirst-frame image URL. The platform uploads it to the virtual asset library before generation. Mutually exclusive with reference_* fields.
last_frame_urlstringoptionalLast-frame image URL. The platform uploads it to the virtual asset library before generation. Requires first_frame_url.
reference_image_urlsarray<string>optionalPublic https reference image URLs (max 9). Every image is uploaded to the virtual asset library before generation. Mutually exclusive with strict first/last frame mode.
reference_imagesarray<object>optionalStructured reference images: [{ url }]. Alternative to reference_image_urls; every image uses virtual asset ingest.
virtual_portraitsarray<string>optionalPortrait URLs always uploaded to the virtual portrait library before generation.
real_portraitsarray<string>optionalPortrait URLs (including real-person photos) uploaded to the virtual portrait library before generation.
reference_video_urlsarray<string>optionalPublic https reference video URLs (max 3). Motion/camera/rhythm cues only; videos that contain real people may be rejected upstream. Use portrait images marked virtual/real for person consistency.
reference_audio_urlsarray<string>optionalPublic https reference audio URLs (max 3). Used as BGM/voice/sfx cues and mapped to @audioN slots.
generate_audiobooleanoptionalGenerate synchronized output audio for the video. Disabled by default; enable only with an original sound description or authorized reference audio. Independent of reference_audio_urls, which only provides an audio cue.
return_last_framebooleanoptionalAsk the result to include the generated video's final frame when available.
resolutionenum<string>optionalOutput video resolution (480p or 720p).
aspect_ratioenum<string>optionalOutput aspect ratio. Use adaptive for single-frame or first/last-frame I2V.
durationintegeroptionalOutput video duration from 4 to 15 seconds.
output_formatenum<string>optionalOutput container format. mp4 is recommended for most integrations.
web_searchbooleanoptionalEnable model-side web/search context when available. Keep false for normal video generation.
curl -X POST https://api.lithovas.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance/seedance-2-mini",
"input": {
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "720p",
"return_last_frame": false,
"web_search": false,
"prompt": "镜头缓慢推近,电影感自然光,人物回头微笑",
"aspect_ratio": "16:9"
}
}'Seedance 2.0 mode examples
Live-aligned examples below. One model slug switches modes by field groups; swap the model to bytedance/seedance-2-fast or -mini for other tiers.
curl -X POST https://api.lithovas.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance/seedance-2",
"input": {
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "720p",
"return_last_frame": false,
"web_search": false,
"prompt": "镜头缓慢推近,人物回头微笑,自然光",
"first_frame_url": "https://frw-images.aiaipic.win/users/3514640099037941760/ai_generated/20260818/038f9f68-004f-4017-a09d-74b3da84e569.png",
"aspect_ratio": "adaptive"
}
}'curl -X POST https://api.lithovas.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance/seedance-2",
"input": {
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "480p",
"return_last_frame": false,
"web_search": false,
"prompt": "从首帧平滑过渡到尾帧,电影感运镜",
"first_frame_url": "https://frw-images.aiaipic.win/users/3492453287637028864/image/20260805/c743c3df-581f-4e3f-9c8d-01029926bcfa_thumb.jpg",
"last_frame_url": "https://frw-images.aiaipic.win/users/3492453287637028864/image/20260805/9abd34e1-1f37-44ed-b482-386a44febf6a_thumb.jpg",
"aspect_ratio": "adaptive"
}
}'curl -X POST https://api.lithovas.com/api/generate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance/seedance-2",
"input": {
"duration": 5,
"generate_audio": true,
"output_format": "mp4",
"resolution": "720p",
"return_last_frame": false,
"web_search": false,
"prompt": " @image1与 @image2在 @image3的场景中,参考 @video1的运镜,背景音乐参考 @audio1",
"aspect_ratio": "16:9",
"reference_image_urls": [
"https://frw-images.aiaipic.win/users/3514640099037941760/ai_generated/20260818/038f9f68-004f-4017-a09d-74b3da84e569.png",
"https://frw-images.aiaipic.win/users/3514640099037941760/image/20260819/fb280368-8f54-41eb-aacf-cee1c189b29b.png"
],
"reference_video_urls": [
"https://frw-images.aiaipic.win/users/3492453287637028864/video/20260818/3524765235086888960.mp4"
],
"reference_audio_urls": [
"https://frw-images.aiaipic.win/users/3492453287637028864/audio/20260818/3524725649950380032.mp3"
]
}
}'