API Overview
Authenticate, submit generation jobs, poll status, and receive webhooks with the Seedance 2.0 Open API.
API Overview
The Seedance 2.0 Open API lets you submit asynchronous video generation jobs from your own product and retrieve the result when processing completes.
Base URL
https://www.seedance2.inkAuthentication
All Open API requests use a Bearer token created in your Seedance dashboard.
Authorization: Bearer sd2_live_your_api_keyIf the API key is missing, revoked, expired, or invalid, the server returns:
{
"success": false,
"error": {
"code": "unauthorized",
"message": "Invalid API key"
}
}Workflow
- Create an API key in your Seedance dashboard.
- Submit a generation request with
POST /api/open/v1/video/generations. - Save the returned
requestId. - Poll
GET /api/open/v1/video/generations/{requestId}until the task reaches a terminal status. - Optionally receive a webhook when the task finishes.
Core Endpoints
| Method | Endpoint | Purpose |
|---|---|---|
GET | /api/open/v1/models | List available models, durations, aspect ratios, resolutions, and pricing metadata. |
POST | /api/open/v1/video/generations | Submit a new video generation task. |
GET | /api/open/v1/video/generations/{requestId} | Query task status and retrieve the output URL when ready. |
POST | /api/open/v1/video/generations/{requestId}/cancel | Cancel a queued or processing task. |
Available Models
| Model | Best for | Supported durations | Resolutions |
|---|---|---|---|
seedance-2.0 | Highest quality, multimodal generation | 4-15 seconds | 480p, 720p, 1080p |
seedance-2.0-fast | Faster turnaround | 4-15 seconds | 480p, 720p, 1080p |
seedance-1.5-pro | Lower-cost fallback workloads | 5 or 10 seconds | 480p, 720p, 1080p |
Supported aspect ratios:
16:99:161:1
Status Values
| Status | Meaning |
|---|---|
queued | The request was accepted and is waiting for processing. |
processing | The generation is currently running. |
succeeded | The task finished successfully and output.url is available. |
failed | The task failed. Check the error object for details. |
cancelled | The task was cancelled before completion. |
Models Endpoint Example
curl https://www.seedance2.ink/api/open/v1/models{
"success": true,
"data": [
{
"id": "seedance-2.0",
"type": "video_generation",
"mode": "image_to_video",
"durations": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
"aspectRatios": ["16:9", "9:16", "1:1"],
"resolutions": ["480p", "720p", "1080p"],
"usdPerSecond": {
"480p": 0.05,
"720p": 0.1,
"1080p": 0.2
}
}
]
}Webhooks
You can receive completion events in two ways:
- Set
webhookUrlin an individual generation request. - Configure a default webhook URL for the API key in your dashboard.
When both are present, the per-request webhookUrl takes priority.
If your API key has a webhook secret configured, webhook requests also include:
x-seedance-signature: <hex_sha256_hmac>Completion webhook payload:
{
"success": true,
"requestId": "req_1234567890",
"status": "succeeded",
"output": {
"type": "video",
"url": "https://pub-your-bucket.r2.dev/open-api-results/req_1234567890.mp4"
},
"error": null
}Error Codes
| HTTP status | Error code | Meaning |
|---|---|---|
400 | invalid_request | The request body does not match the expected schema. |
401 | unauthorized | The API key is invalid or missing. |
402 | insufficient_credits | The account does not have enough credits to submit the task. |
404 | not_found | The requested task does not exist for the current API key. |
429 | rate_limited | The API key exceeded the per-minute limit or monthly quota. |
500 | internal_error | An unexpected server-side error occurred. |
Next Steps
- Read Text to Video for prompt-only generation.
- Read Image to Video for first-frame and reference-based generation.