MarketSupport← Back to app

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.

Seedance 2.0: one slug, multiple modes

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 with aspect_ratio adaptive
  • First/last: first_frame_url + last_frame_url + prompt, also adaptive; no reference_*
  • Omni reference: reference_image_urls + optional video/audio; use @image1, @video1, @audio1 in 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.

Image asset handling
Every input image is automatically uploaded to the virtual asset library. Do not send reference_portrait_kinds, first_frame_portrait_kind, or last_frame_portrait_kind. Videos and audio remain direct public URLs.

Seedance 2 reference media limits

These values are public validation rules for the upstream interface currently connected to Lithovas. They are not permanent official model limits. Available ranges can vary by route; use the API response as the final authority.

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
POST https://api.lithovas.com/api/generate

Body: { "model": "<slug>", "input": { … } }

Response: { "taskId": "<id>", "state": "waiting" }

Query Result

GET
GET https://api.lithovas.com/api/generate/<taskId>

Response: { "taskId", "state": "waiting" | "success" | "fail", "resultUrls": [ … ], "creditsConsumed", "failMsg", "balance" }

Success response example
JSON
{
  "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."
}
Asynchronous
A 200 from Create Task only means the task was accepted — not finished. Poll this endpoint until 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
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

ModelTaskmodel slug
Seedance 2Image to Videobytedance/seedance-2
Seedance 2 FastImage to Videobytedance/seedance-2-fast
Seedance 2 MiniImage to Videobytedance/seedance-2-mini

Seedance 2 · Image to Video

POSTImage to Videobytedance/seedance-2
input fields
promptstringrequired

Text prompt (max 30000 characters). Use @image1, @video1, @audio1 to refer to reference_* media by array order.

first_frame_urlstringoptional

First-frame image URL. The platform uploads it to the virtual asset library before generation. Mutually exclusive with reference_* fields.

last_frame_urlstringoptional

Last-frame image URL. The platform uploads it to the virtual asset library before generation. Requires first_frame_url.

reference_image_urlsarray<string>optional

Public 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>optional

Structured reference images: [{ url }]. Alternative to reference_image_urls; every image uses virtual asset ingest.

virtual_portraitsarray<string>optional

Portrait URLs always uploaded to the virtual portrait library before generation.

real_portraitsarray<string>optional

Portrait URLs (including real-person photos) uploaded to the virtual portrait library before generation.

reference_video_urlsarray<string>optional

Public 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>optional

Public https reference audio URLs (max 3). Used as BGM/voice/sfx cues and mapped to @audioN slots.

generate_audiobooleanoptional

Generate 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_framebooleanoptional

Ask the result to include the generated video's final frame when available.

resolutionenum<string>optional

Output video resolution (480p–4K).

aspect_ratioenum<string>optional

Output aspect ratio. Use adaptive for single-frame or first/last-frame I2V.

durationintegeroptional

Output video duration from 4 to 15 seconds.

output_formatenum<string>optional

Output container format. mp4 is recommended for most integrations.

web_searchbooleanoptional

Enable model-side web/search context when available. Keep false for normal video generation.

Example
cURL
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

POSTImage to Videobytedance/seedance-2-fast
input fields
promptstringrequired

Text prompt (max 30000 characters). Use @image1, @video1, @audio1 to refer to reference_* media by array order.

first_frame_urlstringoptional

First-frame image URL. The platform uploads it to the virtual asset library before generation. Mutually exclusive with reference_* fields.

last_frame_urlstringoptional

Last-frame image URL. The platform uploads it to the virtual asset library before generation. Requires first_frame_url.

reference_image_urlsarray<string>optional

Public 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>optional

Structured reference images: [{ url }]. Alternative to reference_image_urls; every image uses virtual asset ingest.

virtual_portraitsarray<string>optional

Portrait URLs always uploaded to the virtual portrait library before generation.

real_portraitsarray<string>optional

Portrait URLs (including real-person photos) uploaded to the virtual portrait library before generation.

reference_video_urlsarray<string>optional

Public 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>optional

Public https reference audio URLs (max 3). Used as BGM/voice/sfx cues and mapped to @audioN slots.

generate_audiobooleanoptional

Generate 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_framebooleanoptional

Ask the result to include the generated video's final frame when available.

resolutionenum<string>optional

Output video resolution (480p or 720p).

aspect_ratioenum<string>optional

Output aspect ratio. Use adaptive for single-frame or first/last-frame I2V.

durationintegeroptional

Output video duration from 4 to 15 seconds.

output_formatenum<string>optional

Output container format. mp4 is recommended for most integrations.

web_searchbooleanoptional

Enable model-side web/search context when available. Keep false for normal video generation.

Example
cURL
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

POSTImage to Videobytedance/seedance-2-mini
input fields
promptstringrequired

Text prompt (max 30000 characters). Use @image1, @video1, @audio1 to refer to reference_* media by array order.

first_frame_urlstringoptional

First-frame image URL. The platform uploads it to the virtual asset library before generation. Mutually exclusive with reference_* fields.

last_frame_urlstringoptional

Last-frame image URL. The platform uploads it to the virtual asset library before generation. Requires first_frame_url.

reference_image_urlsarray<string>optional

Public 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>optional

Structured reference images: [{ url }]. Alternative to reference_image_urls; every image uses virtual asset ingest.

virtual_portraitsarray<string>optional

Portrait URLs always uploaded to the virtual portrait library before generation.

real_portraitsarray<string>optional

Portrait URLs (including real-person photos) uploaded to the virtual portrait library before generation.

reference_video_urlsarray<string>optional

Public 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>optional

Public https reference audio URLs (max 3). Used as BGM/voice/sfx cues and mapped to @audioN slots.

generate_audiobooleanoptional

Generate 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_framebooleanoptional

Ask the result to include the generated video's final frame when available.

resolutionenum<string>optional

Output video resolution (480p or 720p).

aspect_ratioenum<string>optional

Output aspect ratio. Use adaptive for single-frame or first/last-frame I2V.

durationintegeroptional

Output video duration from 4 to 15 seconds.

output_formatenum<string>optional

Output container format. mp4 is recommended for most integrations.

web_searchbooleanoptional

Enable model-side web/search context when available. Keep false for normal video generation.

Example
cURL
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.

Image-to-video (automatic image ingest)
cURL
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"
  }
}'
First / last frame (automatic ingest + adaptive)
cURL
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"
  }
}'
Omni reference (automatic image ingest)
cURL
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"
    ]
  }
}'