API DocsAI Model APIsVideosSeedance 2.0

Text-to-Video

Generate video from a text prompt. Async task API: submit a request, receive a task ID, then poll for status to get the result.

Generate one target video from a text prompt, with 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.

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 a text prompt.

Request Body

Content-Type: application/json

Example:

{
  "model": "doubao-seedance-2-0-260128",
  "content": [
    {
      "type": "text",
      "text": "A kitten yawns at the camera"
    }
  ],
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5,
  "generate_audio": true,
  "watermark": false
}

Properties:

NameTypeRequiredDescription
modelstringYesModel ID. See details below
contentobject[]YesInput content list. Text-to-video needs one type=text item
content[].typestringYesContent type; must be text
content[].textstringYesText prompt
resolutionstringNoVideo resolution. See details below
ratiostringNoAspect ratio. See details below
durationintegerNoDuration in seconds. Range [4, 15] or -1; default 5
generate_audiobooleanNoWhether to generate audio. true (default) with audio; false silent
watermarkbooleanNoWhether to add an "AI generated" watermark. Default false
callback_urlstringNoCallback URL for task status changes
return_last_framebooleanNoWhether to return the last frame image. Default false
execution_expires_afterintegerNoTask timeout in seconds. Range [3600, 259200]; default 172800 (48h)
priorityintegerNoQueue priority. Range [0, 9]; default 0. Higher values run first
toolsobject[]NoTool config such as web search. See details below
safety_identifierstringNoEnd-user identifier (ASCII, ≤64 chars) for safety auditing

Note: resolution, ratio, duration, and watermark can also be appended to the prompt as weakly validated --[parameters] (e.g. --rs 720p --rt 16:9 --dur 5 --wm false). Prefer request-body strong validation.

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-to-video uses text only.

typestring(Required)

Content type; must be text.

textstring(Required)

Text prompt describing the desired video.

  • Languages: Chinese and English; also Spanish, Indonesian, Portuguese, and Japanese
  • Length: Prefer ≤500 Chinese characters or ≤1000 English words. Excess length may cause the model to drop details
  • For audio generation, put dialogue in quotes, e.g. The man says to the woman: "Remember, never point at the moon."

Example: A kitten yawns at the camera

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

Note: Standard 4K output uses 10-bit depth and H.265 encoding; some players may not support it.

ratiostring(Optional)

Output aspect ratio. Default adaptive (auto-select from the prompt).

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

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.

The duration returned by the query API is an approximate integer (floor of total frames / 24).

generate_audioboolean(Optional)

Whether the output video includes synchronized audio. Default true.

  • true: with audio (speech, SFX, BGM derived from prompt and visuals)
  • false: silent video

Note: Generated audio is always mono.

toolsobject[](Optional)

Tools the model may invoke.

typestring(Required)

Tool type. Currently web_search. When enabled, the model may search the web based on the prompt (higher latency).

Actual search count is in usage.tool_usage.web_search on the query response; 0 means no search.

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

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": "A kitten yawns at the camera"
    }
  ],
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5,
  "generate_audio": true,
  "watermark": false
}'

Response examples

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

Response fields:

NameTypeDescription
idstringTask ID (kept for 7 days from created_at). 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
Missing content / modelProvide required fields
Unknown modelUse one of the three Seedance 2.0 model IDs
Unsupported resolutionFast / Mini do not support 1080p or 4k

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 the prompt
Invalid parameter comboFollow Request Body rules
TimeoutIncrease execution_expires_after and retry

Failed tasks are automatically refunded.

On this page