API documentation

Generate videos and images with your Seedance 2.5 account API key.

Base URL and authentication

Base URL: https://seedance2-5.com/api/v1. Download the OpenAPI specification.

Create a new key in Settings → API keys. Keys issued before the API launch must be replaced; they return 403 api_key_upgrade_required. New keys use cryptographic randomness and are shown once. Each account can keep 10 active keys and create 10 keys/hour, 20/day. Send Authorization: Bearer YOUR_API_KEY with each request. Use keys from your server; browser requests with an Origin header are rejected. Revoke an exposed key immediately.

Generation and image uploads require an active paid subscription or remaining purchased credits. API generation shares your website credit balance and prices.

Available models

Video modelAPI model ID
Seedance 2.5seedance-2.5
Seedance 2.5 Liteseedance-2.5-lite
Seedance 2.0 Proseedance-2.0-pro
Seedance 2.0 Fastseedance-2.0-fast
Seedance 2.0 Miniseedance-2.0-mini
Seedance 1.5 Proseedance-1.5-pro
Kling 3.0kling-3.0
Veo 3.1 fastveo-3.1-fast
Image modelAPI model ID
GPT Image 2gpt-image-2
Nano Banana 2nano-banana-2
Nano Banana Pronano-banana-pro

Use GET /models for the supported modes, resolutions, durations, aspect ratios and input limits. Video generation supports text-to-video and image-to-video. Image generation supports text-to-image and image-to-image. Video/audio references and video editing are not available through this API version.

Generate and download

Send JSON to POST /videos or POST /images. A generation request requires an Idempotency-Key containing 16–128 letters, digits, underscores or hyphens. Reuse the same key and exactly the same body after a timeout or connection failure. Keep the same API key during retries and polling. Changing the body with an existing idempotency key returns 409.

curl https://seedance2-5.com/api/v1/videos \
  -H "Authorization: Bearer $SEEDANCE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: my-video-request-0001" \
  -d '{
    "model": "seedance-2.5-lite",
    "mode": "text-to-video",
    "prompt": "A cat walking through a sunny garden, cinematic camera movement",
    "parameters": {"duration_seconds": 8, "resolution": "720p", "aspect_ratio": "16:9"},
    "max_cost_credits": 80
  }'

A 202 response contains id, model, status, created_at, credits, outputs and error. Poll GET /generations/{id} using the same API key, at most once every 10 seconds per active generation. When status is success, download each outputs[].url. Each URL expires within 15 minutes; poll again for a fresh URL. Generated media is retained for 14 days. Save your result before it expires.

States are pending, processing, success, failed, canceled and expired. If a submission remains pending after a connection failure, keep polling the original ID and contact support; creating another request can generate another charge.

Request parameters

FieldMeaning
modelA public model ID from the catalog
modeA supported generation mode
promptNonempty text within the model prompt limit
inputsFor image modes: an array of {"type":"image","url":"UPLOADED_IMAGE_URL"}
parameters.resolutionSupported model resolution
parameters.aspect_ratioSupported model aspect ratio
parameters.duration_secondsSupported integer video duration
parameters.generate_audioOptional boolean, only for models advertising audio control
parameters.image_modefirst-frame, first-last-frame or reference-image, according to model support and image count
parameters.output_formatImage output: png or jpg, where supported
parameters.google_searchOptional boolean, only for supported image models
max_cost_creditsOptional maximum charge; a higher quote rejects the request before generation

Unknown fields and unsupported parameter combinations are rejected.

Image inputs

Upload images to this account first. External image URLs are rejected.

  1. POST /uploads with {"files":[{"name":"reference.png","type":"image/png","size":12345}]}. File size is in bytes. JPEG, PNG and WebP are supported, up to 30 MiB per file and five files per request.
  2. PUT the exact file bytes to each returned upload_url with all upload_headers, including Content-Length. The upload URL expires after five minutes.
  3. POST /uploads/complete with {"asset_ids":["RETURNED_ASSET_ID"]}. Use each returned url in generation inputs.

The generation checks asset ownership, readiness and expiry. Model-specific image limits still apply.

Credits and limits

GET /credits/balance returns your remaining account credits. POST /quotes accepts a generation body and returns cost_credits without generating or charging. Call it before submitting and pass the result as max_cost_credits.

Seedance 2.5 Lite costs 10 credits per output second. The first five reference images are included; each additional image costs 7 credits. Other model prices follow the website and depend on selected parameters. Generation reserves credits before submission; a verified failed generation refunds once. Queries, quotes and downloads do not incur generation credits.

LimitPer account, shared across API keys
Active API generation1
Generation and upload requests10/minute, 1,000/day
Reads and quotes60/minute, 20,000/day
API generation credit budget2,000/day
Image uploads100 files and 500 MiB/day

Daily windows use UTC. Retries count toward request limits; replayed generations are not charged again. Rejected requests before task creation do not use the generation credit budget. Verified failures still count toward this daily budget. IP and service-wide protection can impose additional limits. On 429, honor Retry-After. On 503, retry the original generation request with the same idempotency key and body.

The edge firewall also limits each IP to 120 API requests per minute. It can return 403 before a request reaches the API when traffic exceeds that limit. Reduce traffic and wait for the window to reset. An API JSON 403 response describes an account or server-side access requirement instead.

Email support@seedance2-5.com for help or quota review.