# Seedance per-request integration

https://video-doc.1route.dev/en/docs/seedance-flat



## Choose a model [#choose-a-model]

These per-request Seedance models are enabled. &#x2A;*Before calling a model, confirm that `GET /v1/models` with your key includes its ID. A public listing does not grant access to every key.** Use a video-service key for the 低价混合 group and API root `https://video.1route.dev`. If an older key still selects 混合, switch it to the current 低价混合 group in the console while retaining the intended model permissions.

| Display name                   | API model ID            | Duration           | Standard price |
| ------------------------------ | ----------------------- | ------------------ | -------------- |
| Seedance 2.0 Mini · 12 seconds | `seedance-2.0-mini-12s` | Exactly 12 seconds | ¥1.02/request  |
| Seedance 2.0 · 15 seconds 480p | `seedance-2.0-15s-480p` | Exactly 15 seconds | ¥1.20/request  |
| Seedance 2.5 · Multiple images | `seedance-2.5-30img`    | 4–30 whole seconds | ¥2.16/request  |

Amounts are CNY balance units, with no USD exchange-rate conversion. These are public price snapshots for the 低价混合 group; confirm account-specific rates on [live pricing](https://video.1route.dev/pricing/). &#x2A;*Each task counts once, without multiplying by duration, reference count or tokens.** Polling and queue time do not create another generation task.

These are distinct from token-priced Seedance models. Never reuse their names, parameters or billing formulas. Give your AI the [model and price contract](/seedance-flat-models.json) and [OpenAPI](/seedance-flat-openapi.json).

**The 2.5 model accepts 4–30 whole seconds, uses fixed 720p, and supports up to 30 images, 10 MP3 references, six aspect ratios and face references. `face=true` enables colored-pencil preprocessing of reference images; it is off by default. Video references are unsupported.**

## Instructions for your AI [#instructions-for-your-ai]

```text
Integrate the 1Route per-request Seedance models using this guide and its OpenAPI.
Read VIDEO_API_KEY from private configuration. Never log it or expose it in frontend code.
Check GET /v1/models, account pricing and my CNY budget before generating.
Use the public model IDs. Mini is text-only and exactly 12 seconds; the multi-image model accepts 4–30 whole seconds.
The 15-second 480p model uses seedance-2.0-15s-480p with seconds=15, 1–9 images and optionally up to 3 MP3 references. Do not send the 2.5 model's ratio or face fields to it.
The multi-image model uses fixed 720p, up to 30 images and 10 MP3 references. Use only the six documented ratio values and JSON booleans for face, default false.
Do not use WAN3 fields, token pricing or per-second pricing for these models.
Submit once after budget approval and save id and X-Oneapi-Request-Id immediately.
Poll the same task every 15 seconds. Download immediately after completed provides a service URL.
Never repeat POST automatically after an ambiguous timeout or 5xx. Retry GET with backoff.
Contact support if delivery is missing; do not regenerate.
```

## Mini and 2.5 request fields [#mini-and-25-request-fields]

`POST /v1/videos`, JSON, with `Authorization: Bearer YOUR_API_KEY`.

| Field        | Mini 12-second model                       | 2.5 multi-image model                                                                                   |
| ------------ | ------------------------------------------ | ------------------------------------------------------------------------------------------------------- |
| `model`      | `seedance-2.0-mini-12s`                    | `seedance-2.5-30img`                                                                                    |
| `prompt`     | Required, 1–2000 characters                | Required, 1–2000 characters; identify references as Image 1, Image 2                                    |
| `seconds`    | Required integer `12`                      | Required integer `4` through `30`                                                                       |
| `resolution` | Omit or use `720p`; default output is used | Fixed `720p`; optional, other nonempty resolution strings are normalized to `720p`                      |
| `images`     | Unsupported; omit                          | Optional array of at most 30 public image URL strings                                                   |
| `audios`     | Unsupported; omit                          | Optional array of at most 10 MP3 audio URL strings                                                      |
| `ratio`      | Unsupported; omit                          | Optional: `16:9`, `9:16`, `1:1`, `4:3`, `3:4`, `21:9`; omit to retain the model default                 |
| `face`       | Unsupported; omit                          | Optional JSON boolean; `true` enables colored-pencil preprocessing of reference images; default `false` |

Do not send `aspect_ratio`, `duration`, `size`, `videos`, `reference_images` or extra billing fields. Multipart uploads, base64, preview-page links and authenticated media URLs are unsupported. Audio, ratio and face fields apply only to the 2.5 model, not Mini.

The Mini sample is portrait 720×1280; aspect-ratio selection is not offered. The 2.5 model always uses the 720p tier, so requesting `480p` does not produce a 480p video. Pixel dimensions vary with aspect ratio; do not hard-code 1280×720 for every ratio.

Audio must be genuinely MP3-encoded, not a renamed WAV file. This service requires audio URL paths to end in `.mp3`; signed query parameters are allowed. A nonmatching extension is rejected at entry, while successful decoding still depends on the actual file contents.

`face` controls colored-pencil preprocessing of reference images, not guaranteed acceptance of every face reference. Use unquoted JSON booleans `true` and `false`. The 30-image and 10-audio limits do not guarantee every reference appears fully in the output. Use only legally authorized media. Audio, six-ratio and face capabilities are documented interface support; no additional paid generation was performed for these features in this update.

## 15-second 480p parameters and example [#15-second-480p-parameters-and-example]

`seedance-2.0-15s-480p&#x60; runs for exactly 15 seconds and costs **¥1.20/request**. The initial service contract requires 1–9 reference images and optionally accepts up to 3 MP3 references. Text-only generation, video references, aspect-ratio selection and the face switch are not exposed.

Required: `model`, `prompt` (1–2000 characters), integer `seconds: 15`, and `images`. Omit `resolution` or set it to `480p`. Optional `audios` uses URL string arrays and the MP3 entry rules above. Do not reuse the 2.5 model's 30-image/10-audio limits or extra fields.

A one-image sample was delivered: about 15 seconds, 864×496, 24fps, with audio. 480p is a tier, not an exact 480-pixel short-edge guarantee. Nine-image, three-audio and face-reference capabilities have not all been tested; do not promise acceptance of every face reference.

Replace the image placeholder with an authorized public URL and confirm the budget first:

```json
{
  "model": "seedance-2.0-15s-480p",
  "prompt": "Use Image 1 as the scene reference. A slow camera push-in with consistent subject and lighting, no captions.",
  "seconds": 15,
  "resolution": "480p",
  "images": ["https://YOUR_MEDIA_HOST/reference.jpg"]
}
```

## Minimal requests [#minimal-requests]

After budget approval, choose **one** example, not both.

```json
{
  "model": "seedance-2.0-mini-12s",
  "prompt": "A colorful kite sways over a meadow beneath a blue sky. A slow camera push-in, natural daylight, no text.",
  "seconds": 12
}
```

```json
{
  "model": "seedance-2.5-30img",
  "prompt": "A colorful kite sways above a meadow. A slow camera push-in, natural daylight, no text.",
  "seconds": 4,
  "resolution": "720p"
}
```

For image references on the 2.5 model, add `"images": ["https://YOUR_MEDIA_HOST/reference.jpg"]`. Replace the placeholder with an authorized real image URL first. Do not submit placeholders or upload private media without approval.

## 2.5 image and audio example [#25-image-and-audio-example]

Replace both media placeholders first. This request still counts once; duration, media count and the face switch do not add a unit-price surcharge.

```json
{
  "model": "seedance-2.5-30img",
  "prompt": "Use Image 1 as the scene reference and the rhythm of Audio 1 to guide a continuous shot.",
  "seconds": 12,
  "resolution": "720p",
  "ratio": "16:9",
  "images": ["https://YOUR_MEDIA_HOST/reference.jpg"],
  "audios": ["https://YOUR_MEDIA_HOST/reference.mp3"],
  "face": false
}
```

## Poll and download [#poll-and-download]

1. Save the complete creation-response `id`. A model name is not a task ID.
2. Query `GET /v1/videos/{id}` every 15 seconds with the same key. Wait while queued or in progress.
3. On `completed`, use `metadata.url` or the supplied `url`. If absent, keep querying the same task or contact support. 99% is not download readiness.
4. Download from the returned service-signed URL verbatim, without an API key. Do not change its host or query. Links last up to about 5 minutes; ready cached files remain about 10 minutes. Save promptly.

A creation timeout or disconnect does not prove no task was created. Never retry POST automatically. Check task and usage records on terminal failure. Successful generation with failed delivery retains its charge until support delivers the file or handles a refund. Resume saved task IDs after a restart; cancellation and idempotent creation are not promised.
