Create a video task
Starts a Seedance video task and returns its ID. Use `GET /v1/tasks/{task_id}` to check the status. If you retry this request, the API may create a second task.
/v1/videos/generationsCreate a Seeddance API key in Settings. Send it only from a trusted server.
In: header
A public Seedance model ID.
"seedance-1.0-pro-fast" | "seedance-1.5-pro" | "seedance-2.0" | "seedance-2.0-fast" | "seedance-2.0-mini"Describe the video you want to create. Each model has its own prompt length limit.
1 <= lengthThe video length in seconds. The supported range depends on the model.
2 <= value <= 15The output resolution. Available options depend on the model and account plan. Seedance 2.0 Mini supports up to 720p.
"480p" | "720p" | "1080p"The output aspect ratio. Only supported models accept adaptive.
"16:9" | "9:16" | "1:1" | "4:3" | "3:4" | "21:9" | "adaptive"Set to true to generate synchronized audio when the model supports it.
Public HTTPS URLs for image inputs. One image selects image to video. Two images select first and last frame mode. Three or more images select reference mode when the model supports it.
A public HTTPS URL for a reference video. Seedance 2.0 models support this input.
Response Body
curl -X POST "https://seeddance.io/v1/videos/generations" \ -H "Authorization: Bearer sk_sd_example" \ -H "Content-Type: application/json" \ -d '{ "model": "seedance-2.0-fast", "prompt": "A paper boat crossing a rain-soaked neon street", "duration": 5, "quality": "720p" }'{
"task_id": "vid_01JZK7R7KCYQ3T9F33A7K0J6XB",
"status": "pending",
"created_at": "2026-07-22T08:30:00.000Z"
}{
"error": {
"code": "invalid_request",
"message": "Request body must contain valid JSON.",
"param": null,
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "invalid_api_key",
"message": "The API key is invalid, expired, or revoked.",
"param": null,
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "insufficient_credits",
"message": "This request requires 25 credits, but only 10 are available.",
"param": null,
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "plan_upgrade_required",
"message": "The requested model or quality requires a higher plan.",
"param": "model",
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "invalid_request",
"message": "Content-Type must be application/json.",
"param": "content-type",
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "invalid_request",
"message": "Unsupported model.",
"param": "model",
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "API rate limit exceeded. Try again later.",
"param": null,
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "internal_error",
"message": "The request could not be completed.",
"param": null,
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "provider_error",
"message": "The video provider could not start this task. Try again later.",
"param": null,
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}{
"error": {
"code": "service_unavailable",
"message": "Video generation is temporarily unavailable.",
"param": null,
"request_id": "req_2YgM6pg5oM2WkKpQ"
}
}Models and inputs
Choose a public Seedance model. The API selects the workflow from the media URLs you provide.
Get a video task GET
Returns a task created by the authenticated account. While the status is `pending` or `processing`, poll this endpoint with backoff. A completed task includes a durable Seeddance video URL.