Public API

Generate video and images from your own tools

Create a key, call the API with Bearer auth, and poll task status until your result is ready. Works with Claude Code, Codex, and any HTTP client.

Manage keys

Quickstart

Step 1

Create a key

Generate an API key in your dashboard. It is shown once, so store it somewhere safe.

Step 2

Call the API

Send a POST request with your Bearer key and an Idempotency-Key header.

Step 3

Poll the result

Poll the task status endpoint until the status is completed or failed, then read the output.

Authentication

Every request is authenticated with a Bearer API key in the Authorization header.

http
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json
Idempotency-Key: a-unique-id-per-request

Seedance Video

Text, image, or media to video.

POST
/api/v1/video/seedance

Parameters

ParameterTypeRequiredDefaultAllowed values
mode

Generation mode.

stringOptionaltext-to-video
text-to-videoimage-to-videomedia-to-video
quality_tier

Quality tier.

stringOptionalstandard
standardpro
channel

Rendering channel.

stringOptionalstandard
standardrealwild
prompt

Text prompt.

stringRequired
3–10000 chars
aspect_ratio

Aspect ratio.

stringOptional16:9
1:121:94:33:416:99:16
duration

Clip duration.

stringOptional5
4–15 (seconds)
resolution

Output resolution.

stringOptional720p
720p1080p
image_url

Start frame — required for image-to-video.

string (URL)Optional
public https URL
end_image_url

Optional end frame.

string (URL)Optional
public https URL
media_urls

Required for media-to-video.

string[] (URL)Optional
≤ 12 public https URLs
generate_audio

Generate an audio track.

booleanOptionaltrue
truefalse
fixed_lens

Lock the camera lens.

booleanOptionalfalse
truefalse
seed

Not supported on the real channel.

integerOptional
-1 – 4294967295

Submit a job

bash
curl -X POST https://seedance2ai.io/api/v1/video/seedance \
  -H "Authorization: Bearer $SEEDANCE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: demo-video-001" \
  -d '{
    "mode": "text-to-video",
    "quality_tier": "standard",
    "prompt": "A cinematic shot of a glass train crossing a snowy mountain bridge",
    "aspect_ratio": "16:9",
    "duration": "5",
    "resolution": "720p"
  }'

GPT Image 2

High-fidelity image generation.

POST
/api/v1/image/gpt-image-2

Parameters

ParameterTypeRequiredDefaultAllowed values
type

Generation type.

stringRequired
text-to-imageimage-to-image
channel

Generation channel. economy is lower-cost with polling-based delivery.

stringOptionalstandard
standardeconomy
prompt

Text prompt.

stringRequired
3–20000 chars
resolution

Output resolution. auto only supports 1K; 1:1 cannot use 4K on the standard channel.

stringRequired
1K2K4K
aspectRatio

Aspect ratio.

stringRequired
auto1:15:49:1621:916:94:33:24:53:42:32:11:23:11:39:21
batchCount

Number of images.

integerOptional1
1–4
imageUrls

Required for image-to-image.

string[] (URL)Optional
1–10 public https URLs

Submit a job

bash
curl -X POST https://seedance2ai.io/api/v1/image/gpt-image-2 \
  -H "Authorization: Bearer $SEEDANCE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: demo-gpt-image-001" \
  -d '{
    "type": "text-to-image",
    "prompt": "Editorial product photo of a transparent running shoe on chrome",
    "resolution": "1K",
    "aspectRatio": "1:1"
  }'

Nano Banana Pro

Stylized, premium image output.

POST
/api/v1/image/nano-banana-pro

Parameters

ParameterTypeRequiredDefaultAllowed values
type

Generation type.

stringRequired
text-to-imageimage-to-image
prompt

Text prompt.

stringRequired
3–10000 chars
image_size

Aspect ratio.

stringOptionalauto
1:19:1616:93:44:33:22:35:44:521:9auto
output_format

Image format.

stringOptionalpng
pngjpeg
resolution

Output resolution.

stringOptional1K
1K2K4K
image_urls

Required for image-to-image.

string[] (URL)Optional
1–8 public https URLs

Submit a job

bash
curl -X POST https://seedance2ai.io/api/v1/image/nano-banana-pro \
  -H "Authorization: Bearer $SEEDANCE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: demo-nbp-001" \
  -d '{
    "type": "text-to-image",
    "prompt": "A premium packaging mockup for an AI video studio",
    "image_size": "1:1",
    "resolution": "1K",
    "output_format": "png"
  }'

Check task status

Poll until the status is completed or failed.

bash
curl https://seedance2ai.io/api/v1/tasks/sd2_xxxxx \
  -H "Authorization: Bearer $SEEDANCE_API_KEY"
json
{
  "id": "sd2_xxxxx",
  "status": "completed",
  "model": "seedance",
  "output": { "video_url": "https://..." },
  "credits_used": 30
}

Error codes

CodeHTTPMeaning
unauthorized401Missing, invalid, or revoked API key.
invalid_request400Bad input or unsupported field.
insufficient_credits402Not enough credits on the balance.
rate_limited429Too many requests for this account.
idempotency_conflict409Same Idempotency-Key reused with a different body, or still running.
service_busy503Temporary upstream or credit-concurrency issue. Retry.
not_found404Task does not exist or does not belong to this key owner.
internal_error500Unexpected server-side failure.

Skill

Install the Seedance skill in Claude Code, Codex, or any agent — it writes cinematic prompts and renders them through the API for you.

bash
# Clone into Claude Code's skills folder
git clone https://github.com/tkaptop/seedance-skill ~/.claude/skills/seedance

Use with Claude Code

Hit Copy for AI to grab the full API as clean Markdown, paste it into Claude Code or Codex, and let it wire up the integration. Or point the agent straight at the raw text endpoint.

Open llms.txt

FAQ

Who can use the API?

Anyone with credits. There is no plan gate — any account with credits can create a key and call the API.

How do I get credits?

Top up or subscribe on the pricing page. Credits are added to your balance instantly.

Are credits shared between the website and the API?

Yes — your personal credit balance powers both your web generation and your API calls. On a team, API calls use each member's own personal balance, not the shared team pool.

How do I start?

Create an API key in your dashboard, then call the endpoints with a Bearer token (see Quickstart above).

What if a call returns insufficient_credits?

Your balance is empty — top up on the pricing page and retry.