SeedanceLink
Sign in

DEVELOPER DOCUMENTATION

A direct path from prompt to video.

These examples call SeedanceLink. Use your own API key; your Google sign-in session is for the web console.

On this page

Before you start

Sign in, add enough balance for the quote, and create a key in a Seedance-enabled group. The smallest example below requests 4 seconds at 480p.

Authentication

Send Authorization: Bearer YOUR_API_KEY on create, status, and content requests. Use the same key that created the task. Never place your key in a URL.

Authorization: Bearer YOUR_API_KEY
API originhttps://seedancelink.io

If omitted, duration is 5 seconds and resolution is 720p. These examples explicitly select 4 seconds and 480p. Send application/json and use one of the two model IDs shown on the models page.

Run these curl examples in the same macOS/Linux terminal, or in Windows WSL. The first example sets your key and this site’s API address. Keep your key private.

Create a task

This example requests a 4-second video. Save the id returned by the API. Seedance 2.0 supports 4–15 seconds; Seedance 2.5 supports 4–30 seconds. Both support 480p, 720p and 1080p.

POST /api/v3/contents/generations/tasks
API_KEY='YOUR_API_KEY'
API_BASE='https://seedancelink.io'

curl --fail-with-body --request POST "$API_BASE/api/v3/contents/generations/tasks" \
  --header "Authorization: Bearer $API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
  "model": "seedance-2.0-933",
  "content": [
    {
      "type": "text",
      "text": "A small boat sailing across a calm lake at sunrise, cinematic lighting."
    }
  ],
  "duration": 4,
  "resolution": "480p",
  "ratio": "16:9"
}'

Example response

{
  "id": "YOUR_TASK_ID",
  "status": "queued"
}

Save the task ID from the response; use it in the next two steps.

Check its status

Replace REPLACE_WITH_RESPONSE_ID with that id. Check every 15 seconds while queued or running. Download when status is succeeded. If status is failed or needs_reconcile, stop polling and contact support for needs_reconcile; do not automatically submit again.

Example response

{
  "id": "YOUR_TASK_ID",
  "status": "succeeded"
}

Check about every 15 seconds. Download only after succeeded.

Download the video

Use the same key that created the task. This protected endpoint requires your Bearer key; opening its URL in a browser alone is insufficient. curl follows HTTPS download redirects without sharing the key with other hosts.

Task states & billing

queued
Accepted and waiting.
running
Generation is in progress.
succeeded
Completed; the authenticated content endpoint is ready.
failed
Generation failed; the reservation was refunded.
needs_reconcile
Submission is uncertain; the reservation is retained for review.

Quoted before generation.

Requested seconds × resolution rate × your applicable multiplier. The quote is reserved on submission, charged on success, and returned on failure.

Download with the same key

After succeeded, use content.video_url or the content endpoint below with your API key. A zero remaining balance does not prevent downloading an already-paid task.

If submission is uncertain

A 202 receipt with needs_reconcile still has a local task ID. Keep that ID and check it. Do not automatically create another task: the original reservation remains held.