API DocsAI Model APIsVideosSeedance 2.0

Multimodal Reference-to-Video

Generate video from reference images, videos, audio, and an optional text prompt. Async task API: submit, poll, then download.

Generate one target video from reference images (0–9) + videos (0–3) + audio (0–3) + optional text. Supports creating new videos, editing, and extending.

Note: Audio alone is not allowed; include at least one reference video or image.

Optional synchronized audio. Up to 15 seconds and 4K resolution (standard model).

This is an async task-based API: submit a request to receive a task id, poll for status, then download the video when complete.

Only Doubao Seedance 2.0 series models are supported.

Note: First frame, first & last frames, and multimodal reference-to-video are mutually exclusive. You can prompt the model to treat a reference image as the first/last frame; for strict frame matching, prefer Image-to-Video.

Base URL

  • https://api.autorouter.top — Production

Authentication

BearerAuth: http (bearer) Authenticate using a Bearer Token. Format: Authorization: Bearer sk-xxxxxx

Endpoints

POST /api/v3/contents/generations/tasks

Create Video Generation Task

Create a video generation task from multimodal reference assets.

Request Body

Content-Type: application/json

Example:

{
  "model": "doubao-seedance-2-0-260128",
  "content": [
    {
      "type": "text",
      "text": "Extend this clip so the cat walks out of frame"
    },
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/ref-cat.jpg"
      },
      "role": "reference_image"
    },
    {
      "type": "video_url",
      "video_url": {
        "url": "https://example.com/cat-original.mp4"
      },
      "role": "reference_video"
    }
  ],
  "resolution": "720p",
  "ratio": "adaptive",
  "duration": 5,
  "generate_audio": true,
  "watermark": false
}

Properties:

NameTypeRequiredDescription
modelstringYesModel ID. See details below
contentobject[]YesInput list: text, images, videos, audio
content[].typestringYestext / image_url / video_url / audio_url
content[].textstringNoText prompt when type=text
content[].image_url.urlstringYes*Reference image URL / Base64 / asset ID
content[].video_url.urlstringYes*Reference video URL / asset ID
content[].audio_url.urlstringYes*Reference audio URL / Base64 / asset ID
content[].rolestringYes*reference_image / reference_video / reference_audio
resolutionstringNoVideo resolution. See details below
ratiostringNoAspect ratio. Default adaptive
durationintegerNoDuration in seconds. Range [4, 15] or -1; default 5
generate_audiobooleanNoWhether to generate audio. Default true
watermarkbooleanNoWhether to add watermark. Default false
callback_urlstringNoCallback URL for status changes
return_last_framebooleanNoReturn last-frame image. Default false
execution_expires_afterintegerNoTimeout in seconds. Range [3600, 259200]; default 172800
priorityintegerNoQueue priority. Range [0, 9]; default 0
toolsobject[]NoTool config such as web search
safety_identifierstringNoEnd-user identifier (ASCII, ≤64 chars)

Allowed combinations (text always optional): images only; video only; image+audio; image+video; video+audio; image+video+audio. Audio alone is not allowed.

Seedance 2.0 does not accept reference images/videos containing real human faces uploaded directly. Use preset virtual avatars, authorized real-person assets, or face-containing outputs generated by Seedance 2.0 under your account within the last 30 days.

modelstring(Required)

Model ID to call.

ModelDescriptionDefault resolutionAvailable resolutions
doubao-seedance-2-0-260128Standard, quality-oriented720p480p, 720p, 1080p, 4k
doubao-seedance-2-0-fast-260128Fast, lower latency720p480p, 720p
doubao-seedance-2-0-mini-260615Lightweight720p480p, 720p

contentobject[](Required)

Input for video generation: text, images, audio, and video.

typestring(Required)

Content type: text, image_url, video_url, or audio_url.

textstring(Optional)

Text prompt.

  • Languages: Chinese and English; also Spanish, Indonesian, Portuguese, and Japanese
  • Length: Prefer ≤500 Chinese characters or ≤1000 English words
image_url.urlstring(Optional)

Reference image: public URL, Base64 (data:image/<format>;base64,...), or asset ID (asset://<ASSET_ID>).

Per-image limits:

  • Formats: jpeg, png, webp, bmp, tiff, gif, heic, heif
  • Aspect ratio: [0.4, 2.5]
  • Side length: [300, 6000] px
  • Size: < 30 MB each; request body ≤ 64 MB
  • Count: 1–9 images

role is required and must be reference_image.

video_url.urlstring(Optional)

Reference video: public URL or asset ID (asset://<ASSET_ID>).

Per-video limits:

  • Formats: mp4, mov (H.264/AVC, H.265/HEVC; audio AAC, MP3)
  • Resolution: 480p, 720p, 1080p, 4k
  • Duration: [2, 15] s each; up to 3 videos; total video duration ≤ 15 s
  • Aspect ratio: [0.4, 2.5]; side length [300, 6000] px
  • Total pixels: [409600, 8295044]
  • Size: ≤ 200 MB each
  • FPS: [24, 60]

role is required and must be reference_video.

audio_url.urlstring(Optional)

Reference audio: public URL, Base64 (data:audio/<format>;base64,...), or asset ID (asset://<ASSET_ID>).

Per-audio limits:

  • Formats: wav, mp3
  • Duration: [2, 15] s each; up to 3 clips; total audio duration ≤ 15 s
  • Size: ≤ 15 MB each; request body ≤ 64 MB. Avoid Base64 for large files

role is required and must be reference_audio.

Note: Audio alone is not allowed; include at least one reference video or image.

resolutionstring(Optional)

Video resolution.

  • doubao-seedance-2-0-260128: default 720p; options 480p, 720p, 1080p, 4k
  • doubao-seedance-2-0-fast-260128 / doubao-seedance-2-0-mini-260615: default 720p; options 480p, 720p

ratiostring(Optional)

Output aspect ratio. Default adaptive.

Options: 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive

adaptive rules:

  • Extend / edit: map from the first extended/edited video's aspect ratio
  • Reference generation: map from the first media file (priority: video > image)

Pixel sizes by resolution:

Resolution16:94:31:13:49:1621:9
480p864×496752×560640×640560×752496×864992×432
720p1280×7201112×834960×960834×1112720×12801470×630
1080p1920×10801664×12481440×14401248×16641080×19202206×946
4k3840×21603326×24942880×28802494×33262160×38404398×1886

durationinteger(Optional)

Output duration in seconds. Default 5; range [4, 15] or -1.

When duration = -1, the model chooses an integer duration within the valid range.

generate_audioboolean(Optional)

Whether the output includes synchronized audio. Default true.

Generated audio is always mono, regardless of input audio channels.

toolsobject[](Optional)

Tools the model may invoke. Currently web_search.

{
  "tools": [
    { "type": "web_search" }
  ]
}

Actual search count is in usage.tool_usage.web_search on the query response.

Responses

200: Task created successfully

Content-Type: application/json

400: Invalid request parameters

Content-Type: application/json

429: Rate limited

Content-Type: application/json

Request examples

curl -X POST "https://api.autorouter.top/api/v3/contents/generations/tasks" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxx" \
  -d '{
  "model": "doubao-seedance-2-0-260128",
  "content": [
    {
      "type": "text",
      "text": "Extend this clip so the cat walks out of frame"
    },
    {
      "type": "video_url",
      "video_url": {
        "url": "https://example.com/cat-original.mp4"
      },
      "role": "reference_video"
    }
  ],
  "resolution": "720p",
  "duration": 5,
  "generate_audio": true
}'

Response examples

{
  "id": "cgt-2025xxxxxx-xxxxx"
}

Response fields:

NameTypeDescription
idstringTask ID (kept for 7 days). Poll the query API for results

GET /api/v3/contents/generations/tasks/{id}

Get Video Generation Task

Query the status and result of a video generation task.

  • Only the last 7 days of task records are queryable, in the interval [T-7 days, T), where T is the request UTC timestamp (second precision)
  • Video URLs are valid for 24 hours; download or transfer them promptly

Headers

NameTypeRequiredDescription
AuthorizationstringYesBearer auth. Format: Bearer sk-xxxxxx

Path Parameters

NameTypeRequiredDescription
idstringYesThe video generation task ID to query

Responses

200: Query succeeded

Content-Type: application/json

Request examples

curl -X GET "https://api.autorouter.top/api/v3/contents/generations/tasks/{id}" \
  -H "Authorization: Bearer sk-xxxxxx"

Response examples

{
  "id": "cgt-2025xxxxxx-xxxxx",
  "model": "doubao-seedance-2-0-260128",
  "status": "succeeded",
  "error": null,
  "created_at": 1730000000,
  "updated_at": 1730000060,
  "content": {
    "video_url": "https://ark-video-xxx.volces.com/xxx.mp4",
    "last_frame_url": "https://ark-video-xxx.volces.com/xxx.png"
  },
  "seed": -1,
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5,
  "framespersecond": 24,
  "generate_audio": true,
  "tools": [
    { "type": "web_search" }
  ],
  "safety_identifier": "user_hash_xxx",
  "priority": 0,
  "service_tier": "default",
  "execution_expires_after": 172800,
  "usage": {
    "completion_tokens": 108000,
    "total_tokens": 108000,
    "tool_usage": {
      "web_search": 1
    }
  }
}

Response fields:

NameTypeDescription
idstringVideo generation task ID
modelstringModel name and version used by the task (model-name-version)
statusstringTask status; see details below
errorobject / nullError info; null on success, error object on failure
created_atintegerTask creation Unix timestamp (seconds)
updated_atintegerUnix timestamp (seconds) when the task status was last updated
contentobjectTask output content
content.video_urlstringGenerated video URL (mp4). Valid for 24 hours
content.last_frame_urlstringLast-frame image URL. Valid for 24 hours. Returned only when create used "return_last_frame": true
seedintegerSeed integer used for this request
resolutionstringOutput video resolution
ratiostringOutput video aspect ratio
durationintegerOutput duration in seconds. Mutually exclusive with frames in the response; returned when create did not specify frames
framesintegerOutput frame count. Mutually exclusive with duration; returned when create specified frames
framespersecondintegerOutput frame rate
generate_audiobooleanWhether the video includes synchronized audio. Returned for Seedance 2.0 series
toolsobject[]Tools actually used for this request. Omitted when no tool was used
tools[].typestringTool type used, e.g. web_search
safety_identifierstringEnd-user identifier. Echoed when set at create time
priorityintegerExecution priority of the request
service_tierstringService tier that actually processed the task
execution_expires_afterintegerTask timeout threshold in seconds
usageobjectToken usage for this request
usage.completion_tokensintegerTokens consumed to generate the video; usable for billing reconciliation
usage.total_tokensintegerTotal tokens for the request. Input tokens are not counted for video models, so total_tokens = completion_tokens
usage.tool_usageobjectTool usage counters
usage.tool_usage.web_searchintegerNumber of web-search calls; returned only when web search was enabled

statusstring

Task status:

  • queued: waiting in queue
  • running: running
  • cancelled: cancelled (auto-deleted after 24h; only queued tasks can be cancelled)
  • succeeded: succeeded
  • failed: failed
  • expired: timed out

Poll every 3–5 seconds until status is succeeded, failed, cancelled, or expired.

errorobject / null

Error details. null on success; error data on failure.

codestring

Error code.

messagestring

Error message.

contentobject

Output content of the video generation task.

video_urlstring

Generated video URL in mp4 format. Valid for 24 hours; download or transfer promptly.

last_frame_urlstring

Last-frame image URL. Valid for 24 hours; download or transfer promptly.

Returned only when create used "return_last_frame": true.

generate_audioboolean

Whether the output video includes synchronized audio. Returned for Seedance 2.0 series.

  • true: with synchronized audio
  • false: silent video

usageobject

Token usage for this request.

completion_tokensinteger

Tokens consumed to generate the video; usable for billing reconciliation.

Note: Seedance 2.0 series has a minimum token usage. If actual usage is below the minimum, this field returns the minimum and billing uses that minimum.

total_tokensinteger

Total tokens for the request. Video models do not count input tokens (0), so total_tokens = completion_tokens.

tool_usageobject

Tool usage counters.

  • web_search (integer): number of web-search calls; returned only when web search was enabled

Error handling

HTTP 400

CaseSuggestion
Audio only, no image/videoInclude at least one reference video or image
Missing / wrong roleUse reference_image / reference_video / reference_audio
Mixed with first-frame modesModes are mutually exclusive
Too many refs or over total duration≤3 videos and ≤3 audio clips; each modality total ≤ 15 s
Fast / Mini with 1080p or 4kUse 480p / 720p, or switch to the standard model

HTTP 401 / 403

  • 401 Unauthorized: Invalid or expired API Key
  • 403 Forbidden: API Key not allowed for this model

HTTP 402

Insufficient balance. Top up in the AutoRouter console.

Task failed / expired

CauseSuggestion
Content moderationAdjust prompt or reference assets
Media URL unreachableUse a public URL, Base64, or asset ID
Unauthorized real faceUse virtual avatars, authorized assets, or recent Seedance outputs
TimeoutIncrease execution_expires_after and retry

Failed tasks are automatically refunded.

On this page