SDSeeddance API
API reference

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.

POST/v1/videos/generations
AuthorizationBearer <token>

Create a Seeddance API key in Settings. Send it only from a trusted server.

In: header

modelstring

A public Seedance model ID.

Value in"seedance-1.0-pro-fast" | "seedance-1.5-pro" | "seedance-2.0" | "seedance-2.0-fast" | "seedance-2.0-mini"
promptstring

Describe the video you want to create. Each model has its own prompt length limit.

Length1 <= length
duration?integer

The video length in seconds. The supported range depends on the model.

Range2 <= value <= 15
quality?string

The output resolution. Available options depend on the model and account plan. Seedance 2.0 Mini supports up to 720p.

Value in"480p" | "720p" | "1080p"
aspect_ratio?string

The output aspect ratio. Only supported models accept adaptive.

Value in"16:9" | "9:16" | "1:1" | "4:3" | "3:4" | "21:9" | "adaptive"
generate_audio?boolean

Set to true to generate synchronized audio when the model supports it.

image_urls?array<string>

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.

video_urls?array<string>

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"
  }
}