Seedance 2.0 API Documentation

Integrate Seedance 2.0 and 2.0 Fast via API v2: text-to-video and image-to-video with 5s, 10s, or 15s durations.

API v2 · 2.0 Base URL: https://seedanceapi.org/v2

Quick Start

bash
1curl -X POST 'https://seedanceapi.org/v2/generate' \
2 -H 'Authorization: Bearer YOUR_API_KEY' \
3 -H 'Content-Type: application/json' \
4 -d '{
5 "prompt": "A cinematic aerial shot over coastline at golden hour",
6 "aspect_ratio": "16:9",
7 "duration": 10,
8 "model": "seedance-2.0"
9 }'

Authentication

All API requests require a Bearer token in the Authorization header.

Important: Get your API key from the API Keys page in your dashboard. → Get Your API Key

http
1Authorization: Bearer YOUR_API_KEY

Pricing (credits)

Credits are deducted per generation based on duration and model. See the tables below.

2.0

Seedance 2.0 (standard)

Higher quality; more credits per second than Fast.

DurationCredits
5s240 credits
10s480 credits
15s720 credits
Fast

Seedance 2.0 Fast

Faster turnaround and lower credit use than standard.

DurationCredits
5s160 credits
10s320 credits
15s480 credits

API Endpoints

POST/v2/generate

Start a Seedance 2.0 or 2.0 Fast job. Text-to-video uses prompt + aspect_ratio; image-to-video uses prompt + images.

Request Body

Body ParametersJSON
prompt:string

Text prompt (required, max 2000 characters)

duration:number

Seconds: 5, 10, or 15 Defaults to 5.

aspect_ratio:optional string

For text-to-video: 16:9, 9:16, 4:3, or 3:4 Defaults to 16:9 (text-to-video only).

images:optional string[]

For image-to-video: 1–4 image URLs (http/https)

model:optional string

Optional: seedance-2.0 (default) or seedance-2.0-fast Defaults to seedance-2.0.

callback_url:optional string

Optional webhook for async notifications (public URL; no localhost)

public:optional boolean

Optional: mark task visibility for gallery features when supported

Text to video

json
1{
2 "prompt": "A slow dolly shot through a neon-lit street in the rain",
3 "aspect_ratio": "16:9",
4 "duration": 10,
5 "model": "seedance-2.0"
6}

Image to video

json
1{
2 "prompt": "The subject walks forward and looks at the camera",
3 "images": [
4 "https://example.com/reference.jpg"
5 ],
6 "duration": 5,
7 "model": "seedance-2.0"
8}

Fast variant

json
1{
2 "prompt": "Sunrise over misty mountains with birds crossing the frame",
3 "aspect_ratio": "9:16",
4 "duration": 15,
5 "model": "seedance-2.0-fast"
6}

Responses

Task created

1{
2 "code": 200,
3 "message": "success",
4 "data": {
5 "task_id": "n90a1b2c3d4e5f6sd20",
6 "status": "IN_PROGRESS",
7 "consumed_credits": 480
8 }
9}
GET/v2/status

Poll by task_id until status is SUCCESS or FAILED; video URL is in response.

Query Parameters

Body ParametersJSON
task_id:string

Task id returned by POST /v2/generate

Example Request

bash
1curl -X GET 'https://seedanceapi.org/v2/status?task_id=n90a1b2c3d4e5f6sd20' \
2 -H 'Authorization: Bearer YOUR_API_KEY'

Tip: When status is SUCCESS, data.response is an array of video URLs; use data.response[0] for the first URL.

javascript
1const videoUrl = data.response[0];

Responses

1{
2 "code": 200,
3 "message": "success",
4 "data": {
5 "task_id": "n90a1b2c3d4e5f6sd20",
6 "status": "SUCCESS",
7 "consumed_credits": 480,
8 "created_at": "2026-04-03T10:30:00Z",
9 "request": {
10 "prompt": "A slow dolly shot…",
11 "aspect_ratio": "16:9",
12 "duration": 10
13 },
14 "response": [
15 "https://cdn.example.com/videos/n90a1b2c3d4e5f6sd20.mp4"
16 ],
17 "error_message": null
18 }
19}

API Playground

Try the API in the browser. Replace YOUR_API_KEY with your real key.

API PlaygroundPOST

Error Codes

StatusCodeDescription
400 Bad RequestINVALID_PROMPTPrompt missing or invalid
400 Bad RequestINVALID_ASPECT_RATIOUnsupported aspect_ratio for T2V
400 Bad RequestINVALID_DURATIONduration must be 5, 10, or 15
400 Bad RequestTOO_MANY_IMAGESToo many images (max 4)
401 UnauthorizedINVALID_API_KEYAPI key missing or invalid
402 INSUFFICIENT_CREDITSNot enough credits
404 Not FoundTASK_NOT_FOUNDTask not found
500 Internal Server ErrorINTERNAL_ERRORServer error