Seedance Video
Seedance Video uses an asynchronous video task API. Create a task first, then poll the retrieve endpoint for status and the final video URL.
Recommended integration
For new integrations, use the unified /v1/video/generations endpoint with the official-style top-level content array for text, images, videos, and audio.
Endpoints
| Capability | Method | Path |
|---|---|---|
| Create video task (v3 compatible) | POST | /api/v3/contents/generations/tasks |
| Retrieve video task (v3 compatible) | GET | /api/v3/contents/generations/tasks/{task_id} |
| Create video task | POST | /v1/video/generations |
| Retrieve video task | GET | /v1/video/generations/{task_id} |
| Moderate images | POST | /v1/images/moderations |
Supported Models
| Model | Notes |
|---|---|
doubao-seedance-2.0 | Seedance 2.0 standard model |
doubao-seedance-2.0-fast | Seedance 2.0 fast model; availability depends on account permissions and platform configuration |
Top-Level Parameters
| Parameter | Required | Description |
|---|---|---|
model | Yes | Seedance model name, such as doubao-seedance-2.0 |
content | Recommended | Multimodal content array for prompts, media inputs, media types, and roles |
duration | No | Duration in integer seconds. Default is usually 5; Seedance 2.0 commonly supports 4 to 15 |
ratio | No | Output aspect ratio. Supported values include adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 |
resolution | No | Output resolution. Common values are 480p, 720p, and 1080p; doubao-seedance-2.0-fast does not support 1080p |
generate_audio | No | Whether to generate synchronized audio. Set false for silent video |
watermark | No | Whether to add a watermark |
Examples
Text-to-Video
curl -X POST https://cubicspace.cn/v1/video/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "A cinematic aerial shot of a futuristic cubic city at sunrise"
}
],
"duration": 5,
"resolution": "720p",
"ratio": "16:9",
"generate_audio": false,
"watermark": false
}'Image-to-Video
curl -X POST https://cubicspace.cn/v1/video/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "Use image 1 as the product appearance reference. Generate a clean 5-second studio showcase while preserving the subject."
},
{
"type": "image_url",
"role": "reference_image",
"image_url": {
"url": "asset://reviewed-image-asset-id"
}
}
],
"duration": 5,
"resolution": "720p",
"ratio": "1:1",
"watermark": false
}'First And Last Frame
{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "Generate a smooth transition video from image 1 to image 2."
},
{
"type": "image_url",
"role": "first_frame",
"image_url": {
"url": "asset://first-frame-asset-id"
}
},
{
"type": "image_url",
"role": "last_frame",
"image_url": {
"url": "asset://last-frame-asset-id"
}
}
],
"duration": 8,
"resolution": "720p",
"ratio": "16:9"
}Video Reference Input
{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "Use video 1 as the camera-motion and pacing reference, then generate a new scene in the same style."
},
{
"type": "video_url",
"role": "reference_video",
"video_url": {
"url": "https://example.com/reference.mp4"
}
}
],
"duration": 5,
"resolution": "720p",
"ratio": "16:9"
}Image and Audio Reference
{
"model": "doubao-seedance-2.0",
"content": [
{
"type": "text",
"text": "Use image 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": "audio_url",
"role": "reference_audio",
"audio_url": {
"url": "https://example.com/reference.wav"
}
}
],
"duration": 5,
"ratio": "1:1",
"generate_audio": true
}content Items
| Field | Required | Description |
|---|---|---|
content[].type | Yes | text, image_url, video_url, or audio_url |
content[].text | Conditional | Used when type is text |
content[].image_url.url | Conditional | Public image URL, or an approved image asset://<asset ID> |
content[].video_url.url | Conditional | Public video URL. Cubicspaces checks that the URL is downloadable |
content[].audio_url.url | Conditional | Public audio URL, or an upstream-supported audio asset URL |
content[].role | Conditional | Media role; see the combination rules below |
Media Combination Rules
| Scenario | Recommended input | role requirements |
|---|---|---|
| Text-to-video | Text-only content | No media role needed |
| Single image-to-video | One image_url content item | first_frame, or omit the role |
| First-and-last-frame video | Two image_url content items | First image is first_frame; last image is last_frame |
| Multimodal reference video | Send reference images/videos/audios in content | Images use reference_image, videos use reference_video, audio uses reference_audio |
Limits and guidance:
- At most 9 reference images. First-and-last-frame requests should contain exactly 2 images.
- At most 3 reference videos. Each video can be up to 15 seconds, and the total reference-video duration must not exceed 15 seconds.
- At most 3 reference audio files. Each audio file can be up to 15 seconds, and the total reference-audio duration must not exceed 15 seconds.
- Audio cannot be the only media input; provide at least one image or video as well.
- Do not mix first-frame / first-and-last-frame roles with
reference_image,reference_video, orreference_audio. - In prompts, refer to media by order, such as "image 1", "video 1", or "audio 1". Do not write Asset IDs directly in the prompt.
Media File Limits
| Media | Limits |
|---|---|
| Image | Common formats include jpeg, jpg, png, webp, bmp, tiff, and gif; each image should be below 30 MB; recommended aspect ratio is between 0.4 and 2.5; recommended width and height are between 300 and 6000 px |
| Video | mp4 or mov; recommended resolution is 480p or 720p; the standard model may use 1080p when supported by the account and model, while the fast model does not support 1080p; each video should be below 50 MB; recommended frame rate is 4 to 60 FPS; the public URL must download video bytes directly, not an HTML login page |
| Audio | mp3 or wav; each audio file should be below 15 MB |
The current public API does not support base64 or inline binary media. Upload media to a publicly reachable URL first. For images, you can also use the moderation endpoint and pass the returned asset_url.
Moderate Images
When Seedance uses real-person or library-managed image assets, submit public image URLs to the image moderation endpoint first. After approval and ingestion, use the returned items[].asset_url as content[].image_url.url.
Submit all images used by the same Seedance generation request together in one image moderation request under the images array. Do not split images from the same generation request across multiple moderation calls; separate moderation batches can lead to inconsistent asset review batches or asset bindings.
POST /v1/images/moderations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/jsonRequest Parameters
| Parameter | Required | Description |
|---|---|---|
model | Yes | Used to select Seedance capability. Use doubao-seedance-2.0 |
images | Yes | Image URL array; all images used by the same generation request must be submitted in the same batch |
asset_type | No | Asset type, defaults to Image; keep the default for image moderation |
Images must be public http or https URLs. Base64 and inline binary content are not supported.
Request Example
curl -X POST https://cubicspace.cn/v1/images/moderations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "doubao-seedance-2.0",
"images": [
"https://example.com/person.png",
"https://example.com/product.png"
]
}'Response Example
{
"code": "success",
"message": "",
"data": {
"object": "asset_moderation",
"status": "approved",
"review_batch_id": "review-batch-id",
"task_id": "moderation-task-id",
"items": [
{
"source_url": "https://example.com/person.png",
"asset_url": "asset://reviewed-person-asset-id",
"submit_review_status": 1,
"passed": true
},
{
"source_url": "https://example.com/product.png",
"asset_url": "asset://reviewed-product-asset-id",
"submit_review_status": 1,
"passed": true
}
]
}
}When passed is true and submit_review_status is 1, the image is approved.
Response and Retrieval
Official-Compatible API
The official-compatible video task endpoints are supported:
POST /api/v3/contents/generations/tasks
GET /api/v3/contents/generations/tasks/{task_id}Full URLs:
POST https://cubicspace.cn/api/v3/contents/generations/tasks
GET https://cubicspace.cn/api/v3/contents/generations/tasks/{task_id}Unified Video API
A successful create request returns a standard video task object:
{
"id": "task_xxx",
"task_id": "task_xxx",
"object": "video",
"model": "doubao-seedance-2.0",
"status": "queued",
"progress": 0,
"created_at": 1770000000
}Retrieve the task:
curl https://cubicspace.cn/v1/video/generations/task_xxx \
-H "Authorization: Bearer YOUR_API_KEY"Use the public task_xxx returned by the create request and the same API key that created the task. A different token receives task_not_exist.
Example response after the task succeeds:
{
"code": "success",
"message": "",
"data": {
"task_id": "task_xxx",
"action": "generate",
"status": "SUCCESS",
"progress": "100%",
"result_url": "https://example.com/generated-video.mp4",
"properties": {
"prompt": "A cat running across a meadow",
"origin_model_name": "doubao-seedance-2.0"
},
"usage": {
"prompt_tokens": 0,
"completion_tokens": 38800,
"total_tokens": 38800
}
}
}- Read the final video URL from
data.result_url. data.usage.completion_tokensanddata.usage.total_tokensare the final effective token counts returned by the upstream provider after completion, not the estimate used when the task was created.- Before completion, the final usage does not exist yet and
data.usagemay be omitted. data.quota, when present, is an internal billing-quota value rather than a token count. Usedata.usagefor usage reporting.
Status Values
The create response uses lowercase queued. Subsequent responses from /v1/video/generations/{task_id} use these values in data.status:
| Query status | Meaning |
|---|---|
NOT_START / SUBMITTED / QUEUED | Waiting or queued |
IN_PROGRESS | Generating |
SUCCESS | Completed; read data.result_url and final data.usage |
FAILURE | Failed; inspect data.fail_reason |
Notes
- Use
ratio: "adaptive"when you are unsure, or omitratioand let upstream defaults apply. - Video reference URLs must be directly downloadable by the platform server. Do not pass URLs that require login, return HTML pages, or block server-side fetching.
- Image references can use public URLs or
asset://<asset ID>returned by the image moderation endpoint. - Actual model, resolution, and tool availability can vary by account permissions and platform configuration.