Create Video
Use the unified video endpoint to submit asynchronous video generation tasks. New integrations should use the official-style top-level content array, with text, images, videos, and audio in the same array.
Endpoint
POST /v1/video/generationsRecommended Format: content
content is a multimodal content array. Text, images, videos, and audio inputs are all placed in the same array. Use type for the media type and role for the media purpose.
Text to Video
{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "A cinematic aerial shot of a futuristic cubic city at sunrise"
}
],
"duration": 5,
"ratio": "16:9",
"generate_audio": false,
"watermark": false
}Image to Video
{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "Animate image 1 naturally with a cinematic camera move"
},
{
"type": "image_url",
"role": "first_frame",
"image_url": {
"url": "https://example.com/input.jpg"
}
}
],
"duration": 5,
"ratio": "16:9"
}First and Last Frame
{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "Create a smooth transition from image 1 to image 2"
},
{
"type": "image_url",
"role": "first_frame",
"image_url": {
"url": "https://example.com/start.jpg"
}
},
{
"type": "image_url",
"role": "last_frame",
"image_url": {
"url": "https://example.com/end.jpg"
}
}
],
"duration": 5,
"ratio": "16:9"
}Multimodal Reference
{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "Use image 1, video 1, and audio 1 to create a product showcase video"
},
{
"type": "image_url",
"role": "reference_image",
"image_url": {
"url": "asset://reviewed-image-asset-id"
}
},
{
"type": "video_url",
"role": "reference_video",
"video_url": {
"url": "https://example.com/reference.mp4"
}
},
{
"type": "audio_url",
"role": "reference_audio",
"audio_url": {
"url": "https://example.com/reference.wav"
}
}
],
"duration": 5,
"ratio": "1:1",
"generate_audio": true
}Top-level Fields
| Field | Required | Description |
|---|---|---|
model | Yes | Video model name, for example doubao-seedance-2.0 or doubao-seedance-2.0-fast |
content | Recommended | Official-style multimodal content array. Recommended for new integrations |
duration | No | Duration in seconds. Seedance 2.0 commonly supports 4 to 15; default is usually 5 |
ratio | No | Aspect ratio, for example adaptive, 16:9, 9:16, 1:1, 4:3, 3:4, 21:9 |
resolution | No | Output resolution, for example 480p, 720p, 1080p. Availability depends on the model and account |
generate_audio | No | Whether to generate synchronized audio |
watermark | No | Whether to add a watermark |
content
| Field | Required | Description |
|---|---|---|
content[].type | Yes | text, image_url, video_url, or audio_url |
content[].text | Conditional | Required when type is text |
content[].image_url.url | Conditional | Public image URL, or an approved asset://<asset ID> |
content[].video_url.url | Conditional | Public video URL |
content[].audio_url.url | Conditional | Public audio URL |
content[].role | Conditional | Asset role |
Supported roles:
| Asset | role |
|---|---|
| Image | first_frame, last_frame, reference_image |
| Video | reference_video |
| Audio | reference_audio |
Asset Limits
- Base64 and inline binary media are not supported in the public request body.
- Image, video, and audio URLs must be directly reachable by the platform server.
- Up to 9 reference images.
- Up to 3 reference videos. Each video should be at most 15 seconds, and the total reference video duration should not exceed 15 seconds.
- Up to 3 reference audios. Each audio should be at most 15 seconds, and the total reference audio duration should not exceed 15 seconds.
- Audio cannot be the only asset. Provide at least one image or video together with audio.
- Do not mix first-frame/last-frame scenarios with
reference_image,reference_video, orreference_audio.
Real-person Images and Moderation
If an input image contains a real person or private information, the upstream may return a PrivacyInformation safety error. For stable use of these assets, submit the image to the moderation endpoint first:
POST /v1/images/moderationsAfter approval, use the returned items[].asset_url in content[].image_url.url.
Response
Task submission returns a task ID:
{
"id": "video_xxx",
"task_id": "video_xxx",
"object": "video",
"model": "doubao-seedance-2.0",
"status": "queued",
"created_at": 1770000000
}Query the task:
GET /v1/video/generations/{task_id}Read the video URL from the task query response after the task succeeds. See the model-specific page for the exact response fields.