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.The specific model ID should follow the models visible in the Autorouter Models catalog and to your API key.

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