# Seedance 2.0 Fast API on TokenRa Model ID: `seedance-2-0-fast` Get an API key: https://tokenra.io/register?utm_source=llms-agent&utm_medium=model-llms Updated: 2026-10-30 > Seedance 2.0 Fast is the lower-cost Fast model of ByteDance's Seedance 2.0 series. It takes the same requests as Seedance 2.0 Pro: create a task, then poll it until the video URL is ready. - Provider: ByteDance - Type: Video model - Input: Text, images - Output: Video with audio - Mode: Async task ## Pricing Rates in the TokenRa console when this file was last updated, in US dollars for the default group. The live price list is authoritative: https://tokenra.io/pricing (JSON: https://tokenra.io/api/pricing). - `seedance-2-0-fast`: $5.15 per 1M tokens, input and output at the same rate (a video task is charged by the tokens it uses) ## Capabilities & endpoints Video generation is asynchronous: create a task, then poll it. A 4-second 480p clip took 3.5 to 4 minutes in testing. - `POST https://tokenra.io/v1/video/generations`: Create a task. Returns `task_id` immediately. - `GET https://tokenra.io/v1/video/generations/{task_id}`: Query the task. The video link is in `data.result_url` when `data.status` is `SUCCESS`. ## Example Set `TOKENRA_API_KEY` to your API key first. The docs page has the same example in Python, JavaScript and Java. ```bash # 1. Create the task. The response contains task_id. curl https://tokenra.io/v1/video/generations \ -H "Authorization: Bearer $TOKENRA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "seedance-2-0-fast", "prompt": "A paper boat drifting down a rainy neon street at night, cinematic close-up", "metadata": { "resolution": "720p", "ratio": "16:9", "duration": 5 } }' # 2. Poll every 10-15 s until data.status is SUCCESS or FAILURE. curl https://tokenra.io/v1/video/generations/TASK_ID \ -H "Authorization: Bearer $TOKENRA_API_KEY" ``` ## Generation modes All three request shapes produced a video on 2026-10-23. ### A. Text to video Only a prompt. Output settings go in `metadata`. **POST /v1/video/generations** ```json { "model": "seedance-2-0-fast", "prompt": "A paper boat drifting down a rainy neon street at night, cinematic close-up", "metadata": { "resolution": "720p", "ratio": "16:9", "duration": 5 } } ``` ### B. Image to video (first frame) Put image URLs in `images`; one image is used as the first frame. **POST /v1/video/generations** ```json { "model": "seedance-2-0-fast", "prompt": "The girl in the picture turns around and smiles", "images": ["https://example.com/first-frame.png"], "metadata": {"resolution": "720p", "duration": 5} } ``` ### C. Reference images To give images a role, send Volcengine Ark `content` items inside `metadata`. The prompt is added as the text item automatically. **POST /v1/video/generations** ```json { "model": "seedance-2-0-fast", "prompt": "The character from image 1 walks into the room from image 2", "metadata": { "resolution": "720p", "ratio": "16:9", "content": [ { "type": "image_url", "image_url": {"url": "https://example.com/character.png"}, "role": "reference_image" }, { "type": "image_url", "image_url": {"url": "https://example.com/room.png"}, "role": "reference_image" } ] } } ``` ## Request parameters **Put output settings in metadata** Top-level `resolution`, `ratio` and `duration` are ignored for Seedance 2.0. A test on 2026-10-23 with top-level `ratio: "9:16"` and `duration: 4` produced a 16:9, 5-second video, while `metadata.resolution` was applied. With the same values in `metadata`, the video was 9:16 and 4 seconds long. ### Top-level fields | Parameter | Type | Required | Description | | --- | --- | --- | --- | | `model` | string | Yes | `seedance-2-0-fast`. `seedance-2-0-pro` and `seedance-2-0-mini` take the same parameters. | | `prompt` | string | Yes | Describe the scene, the motion and the camera. | | `images` | string[] | No | Image URLs. Plain strings only; use `metadata.content` when you need roles. | | `metadata` | object | No | Output settings and Ark-native fields, see the next table. | ### metadata fields | Parameter | Type | Required | Description | | --- | --- | --- | --- | | `resolution` | string | No | `480p`, `720p` or `1080p`; `480p` was tested. Also decides the price. | | `ratio` | string | No | `16:9`, `9:16`, `4:3`, `3:4`, `1:1`, `21:9` or `adaptive`. `16:9` and `9:16` were tested. | | `duration` | integer | No | Length in seconds, 4 to 15. Default 5; `4` was tested. | | `generate_audio` | boolean | No | Generate a matching soundtrack. On by default: every test video had an audio track. | | `seed` | integer | No | Random seed for repeatable results. | | `camera_fixed` | boolean | No | Keep the camera still. | | `watermark` | boolean | No | Add the upstream watermark. | | `content` | array | No | Ark material items: `image_url` with `role` such as `first_frame`, `last_frame` or `reference_image`. | ## Response format ### Create response **200 OK** ```json { "id": "task_FUhA4FK80TV1p70mpHlyZXCxeHR0dPPa", "task_id": "task_FUhA4FK80TV1p70mpHlyZXCxeHR0dPPa", "object": "video", "model": "seedance-2-0-fast", "status": "queued", "progress": 0, "created_at": 1792766873 } ``` ### Query response **200 OK** ```json { "code": "success", "message": "", "data": { "task_id": "task_FUhA4FK80TV1p70mpHlyZXCxeHR0dPPa", "action": "generate", "status": "SUCCESS", "fail_reason": "", "result_url": "https://example.com/output.mp4", "submit_time": 1792766873, "start_time": 1792766890, "finish_time": 1792767085, "progress": "100%", "data": {"resolution": "720p", "ratio": "16:9", "duration": 5, "...": "..."} } } ``` `data.data` holds the raw upstream task, including the resolution, ratio and duration that were actually used. | data.status | Meaning | | --- | --- | | `NOT_START` / `SUBMITTED` / `QUEUED` | Accepted, waiting to start. | | `IN_PROGRESS` | Generating. | | `SUCCESS` | Done. Download `result_url`. | | `FAILURE` | Failed. The reason is in `fail_reason`; the pre-charged amount is refunded. | ## Errors & limits ### Common errors | HTTP | error.code | Meaning | What to do | | --- | --- | --- | --- | | `401` | - | Missing, wrong or deleted API key. The message is `Invalid token`. | Check the `Authorization: Bearer` header and the key in the console. | | `400` | - | The body is not valid JSON. | Fix the JSON and send `Content-Type: application/json`. | | `500` | `invalid_request` | A required field is missing, for example `messages`. | Add the field named in the message. Retrying will not help. | | `403` | `insufficient_user_quota` | Your balance or plan quota is used up. | Top up in the console, then retry. | | `503` | `model_not_found` | Unknown model ID, or no channel serves it for your group. | Check the ID in the model list or with `GET /v1/models`. | | `429` | - | Too many requests. | Back off exponentially and retry. | | `5xx` | - | The upstream provider failed or timed out. | Retry a few times; keep the request id if it persists. | ### Limits and notes - Poll every 10-15 seconds. Test tasks (4 s, 480p) finished in 3.5 to 4 minutes. - `result_url` is a temporary link. Download and store the video yourself. - The price depends on `metadata.resolution` and on whether a video reference is included. See the live rate in the Model Square. ## More - [Seedance 2.0 Fast API docs page](https://tokenra.io/docs/seedance-2-0-fast.html): parameter tables and code samples in cURL, Python, JavaScript and Java - [Seedance 2.0 Fast overview and pricing page](https://tokenra.io/models/seedance-2-0-api.html) - [API basics](https://tokenra.io/docs/common.html): base URL, authentication, errors, retries - [Quickstart](https://tokenra.io/docs/quickstart.html): create a key and send a first request - [All models](https://tokenra.io/docs/models.html): every model ID - [Chinese version of this guide](https://tokenra.io/zh/docs/seedance-2-0-fast/llms.txt) - [Site index for agents](https://tokenra.io/llms.txt) --- Canonical version of this document: https://tokenra.io/docs/seedance-2-0-fast/llms.txt