Text to Video
Generate videos from text prompts with the Seedance 2.0 Open API.
Text to Video
Generate videos from a text description with the Seedance 2.0 Open API. When mediaUrls is omitted, the request runs in pure text-to-video mode.
Endpoint
POST /api/open/v1/video/generationsExample Request
curl --request POST \
--url https://www.seedance2.ink/api/open/v1/video/generations \
--header 'Authorization: Bearer sd2_live_your_api_key' \
--header 'Content-Type: application/json' \
--data '{
"model": "seedance-2.0",
"prompt": "A river flowing through an autumn forest, aerial view, cinematic motion",
"aspectRatio": "16:9",
"duration": 5,
"resolution": "720p",
"webhookUrl": "https://your-app.com/webhooks/seedance",
"metadata": {
"projectId": "proj_1001",
"sceneId": "scene_08"
}
}'Success Response
{
"success": true,
"requestId": "req_1234567890",
"status": "queued",
"creditsCharged": 40
}Request Body
| Field | Type | Required | Description |
|---|---|---|---|
model | string | Yes | One of seedance-2.0, seedance-2.0-fast, seedance-1.5-pro. |
prompt | string | Yes | Natural-language description of the video to generate. |
aspectRatio | string | No | One of 16:9, 9:16, 1:1. |
duration | integer | No | For seedance-2.0 and seedance-2.0-fast: 4-15. For seedance-1.5-pro: 5 or 10. |
resolution | string | No | One of 480p, 720p, 1080p. |
webhookUrl | string | No | Callback URL that receives the final task result. |
metadata | object | No | Custom metadata saved with the request for internal reconciliation. |
Query Result
After submission, query the task with:
curl https://www.seedance2.ink/api/open/v1/video/generations/req_1234567890 \
--header 'Authorization: Bearer sd2_live_your_api_key'Successful completion response:
{
"success": true,
"requestId": "req_1234567890",
"status": "succeeded",
"model": "seedance-2.0",
"prompt": "A river flowing through an autumn forest, aerial view, cinematic motion",
"duration": 5,
"aspectRatio": "16:9",
"output": {
"type": "video",
"url": "https://pub-your-bucket.r2.dev/open-api-results/req_1234567890.mp4"
},
"error": null
}Pending response:
{
"success": true,
"requestId": "req_1234567890",
"status": "processing",
"model": "seedance-2.0",
"prompt": "A river flowing through an autumn forest, aerial view, cinematic motion",
"duration": 5,
"aspectRatio": "16:9",
"output": null,
"error": null
}Failure response:
{
"success": true,
"requestId": "req_1234567890",
"status": "failed",
"model": "seedance-2.0",
"prompt": "A river flowing through an autumn forest, aerial view, cinematic motion",
"duration": 5,
"aspectRatio": "16:9",
"output": null,
"error": {
"code": "provider_error",
"message": "Video generation failed upstream"
}
}Cancel Task
You can cancel a queued or processing task with:
curl --request POST \
--url https://www.seedance2.ink/api/open/v1/video/generations/req_1234567890/cancel \
--header 'Authorization: Bearer sd2_live_your_api_key'{
"success": true,
"requestId": "req_1234567890",
"status": "cancelled"
}Notes
creditsChargedis calculated when the task is accepted.- The output URL is only present when
statusissucceeded. - Use webhooks if you want push-based task completion instead of polling.
- For reference-based generation, see Image to Video.