Seedance 2.0
Seedance 2.0
DocumentationGetting Started

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/generations

Example 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

FieldTypeRequiredDescription
modelstringYesOne of seedance-2.0, seedance-2.0-fast, seedance-1.5-pro.
promptstringYesNatural-language description of the video to generate.
aspectRatiostringNoOne of 16:9, 9:16, 1:1.
durationintegerNoFor seedance-2.0 and seedance-2.0-fast: 4-15. For seedance-1.5-pro: 5 or 10.
resolutionstringNoOne of 480p, 720p, 1080p.
webhookUrlstringNoCallback URL that receives the final task result.
metadataobjectNoCustom 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

  • creditsCharged is calculated when the task is accepted.
  • The output URL is only present when status is succeeded.
  • Use webhooks if you want push-based task completion instead of polling.
  • For reference-based generation, see Image to Video.

Table of Contents

Text to VideoEndpointExample RequestSuccess ResponseRequest BodyQuery ResultCancel TaskNotes