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:
| Name | Type | Required | Description |
|---|---|---|---|
model | string | Yes | Model ID. See details below |
content | object[] | Yes | Input content list. Text-to-video needs one type=text item |
content[].type | string | Yes | Content type; must be text |
content[].text | string | Yes | Text prompt |
resolution | string | No | Video resolution. See details below |
ratio | string | No | Aspect ratio. See details below |
duration | integer | No | Duration in seconds. Range [4, 15] or -1; default 5 |
generate_audio | boolean | No | Whether to generate audio. true (default) with audio; false silent |
watermark | boolean | No | Whether to add an "AI generated" watermark. Default false |
callback_url | string | No | Callback URL for task status changes |
return_last_frame | boolean | No | Whether to return the last frame image. Default false |
execution_expires_after | integer | No | Task timeout in seconds. Range [3600, 259200]; default 172800 (48h) |
priority | integer | No | Queue priority. Range [0, 9]; default 0. Higher values run first |
tools | object[] | No | Tool config such as web search. See details below |
safety_identifier | string | No | End-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.
| Model | Description | Default resolution | Available resolutions |
|---|---|---|---|
doubao-seedance-2-0-260128 | Standard, quality-oriented | 720p | 480p, 720p, 1080p, 4k |
doubao-seedance-2-0-fast-260128 | Fast, lower latency | 720p | 480p, 720p |
doubao-seedance-2-0-mini-260615 | Lightweight | 720p | 480p, 720p |
contentobject[](Required)
Input for video generation. Text-to-video uses text only.
Content type; must be text.
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: default720p; options480p,720p,1080p,4kdoubao-seedance-2-0-fast-260128/doubao-seedance-2-0-mini-260615: default720p; options480p,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:
| Resolution | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 |
|---|---|---|---|---|---|---|
| 480p | 864×496 | 752×560 | 640×640 | 560×752 | 496×864 | 992×432 |
| 720p | 1280×720 | 1112×834 | 960×960 | 834×1112 | 720×1280 | 1470×630 |
| 1080p | 1920×1080 | 1664×1248 | 1440×1440 | 1248×1664 | 1080×1920 | 2206×946 |
| 4k | 3840×2160 | 3326×2494 | 2880×2880 | 2494×3326 | 2160×3840 | 4398×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.
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:
| Name | Type | Description |
|---|---|---|
id | string | Task 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), whereTis the request UTC timestamp (second precision) - Video URLs are valid for 24 hours; download or transfer them promptly
Headers
| Name | Type | Required | Description |
|---|---|---|---|
Authorization | string | Yes | Bearer auth. Format: Bearer sk-xxxxxx |
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The 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:
| Name | Type | Description |
|---|---|---|
id | string | Video generation task ID |
model | string | Model name and version used by the task (model-name-version) |
status | string | Task status; see details below |
error | object / null | Error info; null on success, error object on failure |
created_at | integer | Task creation Unix timestamp (seconds) |
updated_at | integer | Unix timestamp (seconds) when the task status was last updated |
content | object | Task output content |
content.video_url | string | Generated video URL (mp4). Valid for 24 hours |
content.last_frame_url | string | Last-frame image URL. Valid for 24 hours. Returned only when create used "return_last_frame": true |
seed | integer | Seed integer used for this request |
resolution | string | Output video resolution |
ratio | string | Output video aspect ratio |
duration | integer | Output duration in seconds. Mutually exclusive with frames in the response; returned when create did not specify frames |
frames | integer | Output frame count. Mutually exclusive with duration; returned when create specified frames |
framespersecond | integer | Output frame rate |
generate_audio | boolean | Whether the video includes synchronized audio. Returned for Seedance 2.0 series |
tools | object[] | Tools actually used for this request. Omitted when no tool was used |
tools[].type | string | Tool type used, e.g. web_search |
safety_identifier | string | End-user identifier. Echoed when set at create time |
priority | integer | Execution priority of the request |
service_tier | string | Service tier that actually processed the task |
execution_expires_after | integer | Task timeout threshold in seconds |
usage | object | Token usage for this request |
usage.completion_tokens | integer | Tokens consumed to generate the video; usable for billing reconciliation |
usage.total_tokens | integer | Total tokens for the request. Input tokens are not counted for video models, so total_tokens = completion_tokens |
usage.tool_usage | object | Tool usage counters |
usage.tool_usage.web_search | integer | Number of web-search calls; returned only when web search was enabled |
statusstring
Task status:
queued: waiting in queuerunning: runningcancelled: cancelled (auto-deleted after 24h; only queued tasks can be cancelled)succeeded: succeededfailed: failedexpired: 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.
Error code.
Error message.
contentobject
Output content of the video generation task.
Generated video URL in mp4 format. Valid for 24 hours; download or transfer promptly.
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 audiofalse: silent video
usageobject
Token usage for this request.
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 tokens for the request. Video models do not count input tokens (0), so total_tokens = completion_tokens.
Tool usage counters.
web_search(integer): number of web-search calls; returned only when web search was enabled
Error handling
HTTP 400
| Case | Suggestion |
|---|---|
Missing content / model | Provide required fields |
| Unknown model | Use one of the three Seedance 2.0 model IDs |
| Unsupported resolution | Fast / Mini do not support 1080p or 4k |
HTTP 401 / 403
401 Unauthorized: Invalid or expired API Key403 Forbidden: API Key not allowed for this model
HTTP 402
Insufficient balance. Top up in the AutoRouter console.
Task failed / expired
| Cause | Suggestion |
|---|---|
| Content moderation | Adjust the prompt |
| Invalid parameter combo | Follow Request Body rules |
| Timeout | Increase execution_expires_after and retry |
Failed tasks are automatically refunded.
PixVerse Video Generation
PixVerse is a high-quality AI video generation platform. AutoRouter integrates with PixVerse OpenAPI v2 and exposes it via the OpenAI-compatible /v1/videos endpoint. All 8 PixVerse model versions are supported for text-to-video and image-to-video. PixVerse uses an async task-based API: submit a request, receive a task_id, poll for status, then download the video via the proxy endpoint. ---
Image-to-Video
Generate video from a first frame or first-and-last frames plus an optional text prompt. Async task API: submit, poll, then download.