Skip to main content

Available models

Use Seedance in the dashboard

Open model page

Billing

Video generation is billed by pixel-tokens, following the official Volcengine formula:
Token reference table (pure generation, 16:9): Check your dashboard for the current per-million-token price for each model.
Note: Only successful generations are charged. Tasks that fail due to content policy or upstream errors incur no cost. Billing is reconciled against the actual token count reported by the upstream API on task completion.

How it works

Video generation is a two-step async process: submit a task, then poll for the result.
1

Submit a generation task

Send a POST request to /v1/generation/tasks:
The response returns a task ID you’ll use to check progress:
2

Poll for the result

Query the task status using the returned id. Poll every 3–5 seconds until the status is succeeded or failed:
Completed response:
content on the response is a single object ({ video_url }), not the part-array format used in the request content field. Don’t reuse your request-parsing code for the response.

Task status reference


Image-to-video

To animate a still image instead of generating from text alone, add an image_url part to the content array alongside your text prompt. There are three ways to supply that image, in order of preference:

1. Upload the file

Recommended. Small, reliable request bodies.

2. Public image URL

Simplest, if the image is already hosted.

3. Base64 data URI

Quick one-off tests only.
POST /v1/assets/upload with a multipart/form-data body containing the file and the target model. It returns a hosted assetUrl you pass straight into image_url — your generation request body stays small no matter how large the source photo is.
Accepted file types: image/png, image/jpeg, image/webp (max 10 MB) and video/mp4 (max 50 MB, for video-editing tasks).

Option 2: Use a public image URL

If the image is already hosted somewhere reachable, skip the upload step entirely and pass the URL directly:
cURL

Option 3: Inline base64 (quick tests only)

For a one-off test without wiring up an upload step, you can inline the image directly as a base64 data URI:
Base64 data URIs count toward the request body size. Large source photos (multi-megapixel phone camera shots) can produce multi-megabyte payloads — downscale to around 1024px on the long edge before encoding, or use Option 1 instead, if you hit a 413 Request Entity Too Large.
Whichever option you use, poll /v1/generation/tasks/{id} exactly as shown above — the response shape and polling logic are identical regardless of how the image was supplied.

Request parameters

Note: Video generation models are not available through /v1/chat/completions. Use /v1/generation/tasks for all video generation requests.

Quickstart

API keys

Text models