> ## Documentation Index
> Fetch the complete documentation index at: https://veniceai-tombystrican-api-103-update-and-re-enable-public-s.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Seedance 2.0 e 2.5

> Gere, edite, estenda e una vídeos com Seedance 2.0 e 2.5 na Venice - fluxos texto/imagem/referência, API faces-off e limites multimodais por família.

Seedance is a flagship multimodal video family on Venice for text-, image-, and reference-driven video generation. **Seedance 2.0** (plus Fast) and **Seedance 2.5** share the same R2V prompt-routing model: a single reference-to-video endpoint handles **four distinct workflows** (Reference, Edit, Extend, Stitch) — the workflow is inferred from the **shape of your prompt**.

This guide covers variants, the four workflows, **faces-off public API behavior**, **family-specific multimodal limits**, pricing, and `curl` examples.

<Warning>
  **Rostos não são suportados na API pública do Seedance.** A Venice não executa provisionamento de face assets nem atestação de consentimento facial (`consents.seedance` / `needs_consent`) para modelos Seedance públicos. Entradas com rostos podem ser rejeitadas upstream como erro de política de conteúdo / provedor. Para geração com likeness / face assets, use o app ou o Studio da Venice.
</Warning>

## Variants

| Model ID                                   | Variant  | Output resolutions           | Notes                                                                                                               |
| ------------------------------------------ | -------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| `seedance-2-0-text-to-video-api`           | T2V      | 480p / 720p / 1080p / **4k** | Text prompt only                                                                                                    |
| `seedance-2-0-image-to-video-api`          | I2V      | 480p / 720p / 1080p / **4k** | First-frame (and optionally last-frame) image grounding                                                             |
| `seedance-2-0-reference-to-video-api`      | R2V      | 480p / 720p / 1080p / **4k** | Up to 9 reference images + 3 reference videos + 3 reference audio donors. Powers Reference / Edit / Extend / Stitch |
| `seedance-2-0-fast-text-to-video-api`      | Fast T2V | 480p / 720p                  | Faster, lower-fidelity tier (no 1080p / 4k)                                                                         |
| `seedance-2-0-fast-image-to-video-api`     | Fast I2V | 480p / 720p                  | Faster, lower-fidelity tier (no 1080p / 4k)                                                                         |
| `seedance-2-0-fast-reference-to-video-api` | Fast R2V | 480p / 720p                  | Faster, lower-fidelity tier (no 1080p / 4k); same workflow set                                                      |
| `seedance-2-5-text-to-video-api`           | T2V      | 480p / 720p                  | Up to 30s output; native audio                                                                                      |
| `seedance-2-5-image-to-video-api`          | I2V      | 480p / 720p                  | Up to 30s output; first-frame (and optionally last-frame) grounding                                                 |
| `seedance-2-5-reference-to-video-api`      | R2V      | 480p / 720p                  | Up to 30 images + 10 videos + 10 audio donors; same Reference / Edit / Extend / Stitch workflows                    |

All variants are async. Submit via `POST /api/v1/video/queue`, then poll `POST /api/v1/video/retrieve` until the response body is `video/mp4`. See [Video Generation](/guides/media/video-generation) for the general queue flow.

Pass `resolution` as one of: `480p`, `720p`, `1080p`, or `4k` (lowercase). Seedance **2.0** (non-Fast) accepts all four; **2.0 Fast** and **2.5** accept `480p` / `720p` only. Discover live model IDs and capabilities with `GET /models?type=video` — do not hardcode availability.

## The "one model, four workflows" model

The reference-to-video variants (`seedance-2-0-reference-to-video-api`, its Fast sibling, and `seedance-2-5-reference-to-video-api`) use the same prompt-routing pattern. **The model infers the task from the prompt prefix and the shape of your inputs.** There is no `task` or `workflow` field — the prompt syntax is the routing.

| Workflow      | What it does                                                                                       | Prompt prefix                                                        | Inputs                                                                                                |
| ------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| **Reference** | Generate a new video using uploaded reference files as donors for subject / motion / style / audio | `Refer to ... in <Image\|Video\|Audio N> to generate ...`            | Text + ≥1 image OR video reference, plus optional audio donors (counts differ by family — see limits) |
| **Edit**      | Modify a single input video while preserving the rest                                              | `Strictly edit <Video 1>, changing its ...`                          | 1 input video + text (images optional grounding)                                                      |
| **Extend**    | Forward / backward extension of one clip                                                           | `Extend <Video 1>, generate ...`                                     | 1 input video + text                                                                                  |
| **Stitch**    | Stitch input clips with auto-generated transitions                                                 | `<Video 1> + <transition description> + followed by <Video 2> + ...` | Multiple input videos + text (clip count / duration caps differ by family)                            |

The **prompt syntax is canonical and case-sensitive**: angle brackets, capital first letter, single space before the number — `<Video 1>`, `<Image 1>`, `<Audio 1>`.

***

## Workflow patterns

### Reference workflow

Use the uploaded reference files as **donors** — subject, scene, motion, style, vocal timbre — to generate a brand-new video.

**Canonical prompt patterns**:

```
Refer to <Subject N> in <Image N> to generate ...
Refer to the [action | camera scene | style | sound effect] in <Video N> to generate ...
Refer to the [tone | timbre] in <Audio N> to generate ...
```

**Examples**:

* `Refer to <Subject 1> in <Image 1> to generate a 5-second clip of the same character riding a horse through snow.`
* `Refer to the camera scene in <Video 1> to generate a similar establishing shot of a futuristic city at dawn.`
* `Refer to <Subject 1> in <Image 1> and use the timbre in <Audio 1> for the narrator describing the scene.` (audio donors must be paired with at least one image or video reference — audio alone is rejected)

### Edit workflow

Modify a single input video. **Anything not explicitly named in the prompt is preserved.** Use this when you want a localized change (subject swap, weather/color change, element add/remove) rather than a wholly new video.

**Canonical prompt pattern**:

```
Strictly edit <Video 1>, changing its [original feature] to [new feature] ...
```

**Sub-patterns for finer control**:

```
Add Elements:
  At [timestamp / timing] and [spatial location] of <Video 1>, add [description of intended element].

Remove Elements:
  Remove [element to be deleted] from <Video 1>, keeping the rest of the video content unchanged.

Modify Elements:
  Replace [description of element to be changed] in <Video 1> with [description of intended element].
```

**Examples**:

* `Strictly edit <Video 1>, changing its weather from sunny to a heavy rainstorm.`
* `Add snacks such as fried chicken and pizza to the countertop in <Video 1>.`
* `Remove the red car from <Video 1>, keeping the rest of the video content unchanged.`
* `Replace the perfume featured in <Video 1> with the face cream from <Image 1>, with all original motions and camera work preserved.`

The last example combines Edit with an image reference — perfectly legal, the model uses `<Image 1>` as a visual donor for the replacement.

### Extend workflow

Continue a single clip forward or backward in time. **By default Seedance returns only the new content** — not the original input concatenated with the extension. This is by design, for transition continuity; if you want the input clip preserved alongside the extension, say so explicitly:

```
Extend <Video 1>, generate [description of extended content]
Extend <Video 1> backward, [description of extended content]
Extend <Video 1>, start with <Video 1>, then [description of extended content]      ← preserves input at start
Extend <Video 1> backward, [description], and then end with <Video 1>               ← preserves input at end
```

Transition handling: the model automatically extracts the transition frames for seamless blending, and the original segments of the input video are not re-generated.

**Examples**:

* `Extend <Video 1>, generate a dramatic chase scene through narrow alleys at dusk.`
* `Extend <Video 1> backward, the same character walking toward the camera before the original shot begins.`
* `Extend <Video 1>, start with <Video 1>, then the camera pulls back to reveal a vast landscape.`

### Stitch workflow (Track Completion)

Connect input clips with AI-generated transitions. Respect the **family-specific** combined-duration and clip-count caps in [Multimodal input limits](#multimodal-input-limits) (Seedance 2.0: ≤3 clips / ≤15 s combined; Seedance 2.5: higher video caps).

**Canonical prompt pattern**:

```
<Video 1> + [transition description] + followed by <Video 2> [+ [transition description] + followed by <Video 3>]
```

**Examples**:

* `<Video 1> + a smooth seamless cut + followed by <Video 2>`
* `<Video 1>. The moment a leaf falls to the ground, it sets off a special effect of golden particles. A gust of wind blows by, leading into <Video 2>.`
* `<Video 1> + a wisp of smoke transforms into a flock of birds + followed by <Video 2> + a slow dolly-in + followed by <Video 3>`

The model auto-trims connecting segments at the join points for continuity.

***

## Universal prompt formula

Across all four workflows, the recommended authoring formula is:

```
Subject + Motion + Environment (Optional)
       + Camera Movement / Cut (Optional)
       + Aesthetic Description (Optional)
       + Audio (Optional)
```

* **Subject + Motion**: the logical foundation — define "Who" is performing "What action"
* **Environment + Aesthetics**: spatial background, lighting, visual style
* **Camera**: explicit shot type or movement
* **Audio**: ambient sound effects or vocal direction for immersive output

Layering this on top of a workflow prefix (e.g., `Strictly edit <Video 1>, changing its <subject + motion + environment + ...>`) produces the highest-quality outputs.

***

## Multimodal input limits

Values below are what the Venice API accepts. Requests outside these ranges are rejected at the schema layer with a 400 before reaching inference.

**Seedance 2.0 and Seedance 2.5 use different caps.** Always check the column for the model family you are calling.

### Shared media floors

| Constraint                          | Value                                                               |
| ----------------------------------- | ------------------------------------------------------------------- |
| Image / video / audio input methods | URL (`http://`, `https://`) or Base64 data URL                      |
| Image formats                       | `.jpeg`, `.png`, `.webp`, `.bmp`, `.tiff`, `.gif`, `.heic`, `.heif` |
| Image aspect ratio (W / H)          | exclusive `(0.4, 2.5)`                                              |
| Image minimum side                  | ≥ 300 px                                                            |
| Video formats                       | `.mp4`, `.mov`                                                      |
| Video codecs                        | H.264 / AVC, H.265 / HEVC                                           |
| Audio codecs (in container)         | AAC, MP3                                                            |
| Audio formats (reference audio)     | `.wav`, `.mp3`                                                      |
| Per-clip video size                 | ≤ 50 MB                                                             |
| Per-clip audio size                 | ≤ 15 MB                                                             |
| I2V first-frame images              | 1                                                                   |
| I2V first + last frame              | 2                                                                   |

### Family comparison

| Constraint                        | Seedance 2.0 (+ Fast)                                 | Seedance 2.5        |
| --------------------------------- | ----------------------------------------------------- | ------------------- |
| Output duration                   | 4–15 s                                                | 4–30 s (default 10) |
| Output resolutions                | 480p / 720p / 1080p / **4k** (Fast: 480p / 720p only) | 480p / 720p only    |
| R2V reference images              | 1–9                                                   | 1–30                |
| Max R2V reference image bytes     | (shared request limits)                               | ≤ 30 MB per image   |
| R2V reference videos              | ≤ 3                                                   | ≤ 10                |
| Duration per reference video      | `[2, 15]` s                                           | `[2, 30]` s         |
| Combined reference video duration | ≤ 15 s                                                | ≤ 30 s              |
| R2V reference audio clips         | ≤ 3                                                   | ≤ 10                |
| Duration per reference audio      | `[2, 15]` s                                           | `[2, 30]` s         |
| Combined reference audio duration | ≤ 15 s                                                | ≤ 30 s              |

Reference audio is supported on the R2V variants only. Each entry is forwarded to the model as a `role: "reference_audio"` content item that the prompt addresses as `<Audio 1>`, `<Audio 2>`, … — the model uses each clip for vocal timbre, sound effects, or background music depending on how the prompt frames it. The legacy singular `audio_url` field maps to the same content shape and is now equivalent to passing a one-element `reference_audio_urls`.

<Warning>
  **`reference_audio_urls` cannot be the only reference input.** The model requires at least one image or video reference alongside any audio donor. Pair `reference_audio_urls` with `reference_image_urls`, `reference_video_urls`, `image_url`, or `video_url` — audio-only submissions are rejected.
</Warning>

### Request size

The queue endpoint accepts JSON bodies up to **35 MB**. Inline data URLs for large videos can push past this — for multi-clip Stitch in particular, prefer URLs over inline base64.

***

## Pricing

Call `POST /api/v1/video/quote` to get a quote for a given request shape before submitting it to `/video/queue`. The quote endpoint is the only authoritative source; pricing details may change and shouldn't be cached or duplicated client-side.

When reference video(s) are part of the request, also pass `reference_video_total_duration` (the sum of all reference clip durations in seconds) so the quote matches what `/video/queue` will charge:

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/quote \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-reference-to-video-api",
    "duration": "5s",
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "reference_video_total_duration": 5
  }'
```

***

## Complete examples

All examples assume `VENICE_API_KEY` is set in the environment.

### Text-to-video

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-text-to-video-api",
    "prompt": "A golden retriever frolicking through a sunlit meadow at sunset, slow camera dolly-in, shallow depth of field, warm cinematic lighting.",
    "duration": "5s",
    "aspect_ratio": "16:9",
    "resolution": "1080p"
  }'
```

### Seedance 2.0 text-to-video (4K)

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-text-to-video-api",
    "prompt": "Ultra-detailed aerial glide over a sunlit alpine lake, crystal water, distant peaks, cinematic color grade.",
    "duration": "5s",
    "aspect_ratio": "16:9",
    "resolution": "4k"
  }'
```

### Seedance 2.5 text-to-video (longer duration)

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5-text-to-video-api",
    "prompt": "A slow aerial push over misty mountains at sunrise, clouds parting, soft orchestral ambience, cinematic widescreen framing.",
    "duration": "20s",
    "aspect_ratio": "16:9",
    "resolution": "720p"
  }'
```

### Image-to-video (first frame)

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-image-to-video-api",
    "prompt": "The lighthouse keeper turns toward the storm, lantern raised, waves crashing against the rocks.",
    "image_url": "https://example.com/lighthouse.jpg",
    "duration": "5s",
    "resolution": "720p"
  }'
```

<Note>
  Seedance I2V models (`seedance-2-0-image-to-video-api`, its Fast variant, and `seedance-2-5-image-to-video-api`) **do not accept `aspect_ratio`** — the output aspect ratio is auto-derived from the input image's dimensions. Passing the field returns a 400 with *"This model does not support aspect\_ratio"*. Use the T2V or R2V variants if you need explicit aspect-ratio control.
</Note>

### Reference workflow — subject donor

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-reference-to-video-api",
    "prompt": "Refer to <Subject 1> in <Image 1> to generate a 5-second clip of the same character walking through a neon-lit Tokyo street at night.",
    "reference_image_urls": ["https://example.com/character.png"],
    "duration": "5s",
    "aspect_ratio": "9:16",
    "resolution": "1080p"
  }'
```

### Seedance 2.5 reference workflow — multi-image

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5-reference-to-video-api",
    "prompt": "Refer to <Subject 1> in <Image 1> and the style in <Image 2> to generate a 12-second clip of the same character exploring a rainy cyberpunk alley.",
    "reference_image_urls": [
      "https://example.com/character.png",
      "https://example.com/style-board.png"
    ],
    "duration": "12s",
    "aspect_ratio": "9:16",
    "resolution": "720p"
  }'
```

### Reference workflow — subject + audio donor

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-reference-to-video-api",
    "prompt": "Refer to <Subject 1> in <Image 1> to generate a 5-second clip of the same character walking through a neon-lit Tokyo street at night. Refer to the timbre in <Audio 1> for a soft female voiceover describing the scene.",
    "reference_image_urls": ["https://example.com/character.png"],
    "reference_audio_urls": ["https://example.com/voice-sample.mp3"],
    "duration": "5s",
    "aspect_ratio": "9:16",
    "resolution": "1080p"
  }'
```

### Edit workflow

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-reference-to-video-api",
    "prompt": "Strictly edit <Video 1>, changing its weather from sunny to a heavy rainstorm, with all original motions and camera work preserved.",
    "reference_video_urls": ["https://example.com/sunny-scene.mp4"],
    "reference_video_total_duration": 5,
    "duration": "5s",
    "aspect_ratio": "16:9",
    "resolution": "1080p"
  }'
```

### Edit workflow with image grounding

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-reference-to-video-api",
    "prompt": "Replace the perfume featured in <Video 1> with the face cream from <Image 1>, with all original motions and camera work preserved.",
    "reference_video_urls": ["https://example.com/perfume-ad.mp4"],
    "reference_image_urls": ["https://example.com/face-cream.png"],
    "reference_video_total_duration": 4,
    "duration": "5s",
    "aspect_ratio": "16:9",
    "resolution": "1080p"
  }'
```

### Extend forward

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-reference-to-video-api",
    "prompt": "Extend <Video 1>, generate a dramatic chase scene through narrow alleys at dusk, with neon signs flickering and rain on the pavement.",
    "reference_video_urls": ["https://example.com/alley-intro.mp4"],
    "reference_video_total_duration": 4,
    "duration": "5s",
    "aspect_ratio": "16:9",
    "resolution": "1080p"
  }'
```

### Stitch (3 clips)

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/queue \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-reference-to-video-api",
    "prompt": "<Video 1> + a wisp of smoke transforms into a flock of birds + followed by <Video 2> + a slow dolly-in + followed by <Video 3>",
    "reference_video_urls": [
      "https://example.com/clip-1.mp4",
      "https://example.com/clip-2.mp4",
      "https://example.com/clip-3.mp4"
    ],
    "reference_video_total_duration": 12,
    "duration": "5s",
    "aspect_ratio": "16:9",
    "resolution": "1080p"
  }'
```

### Polling for completion

After every queue submission, save the returned `queue_id` and poll `/video/retrieve` until the response body is `video/mp4`:

```bash theme={"system"}
curl -X POST https://api.venice.ai/api/v1/video/retrieve \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-0-reference-to-video-api",
    "queue_id": "123e4567-e89b-12d3-a456-426614174000"
  }' \
  -o output.mp4
```

The response is JSON (`{ "status": "queued" | "running" | "failed", ... }`) until the job completes, at which point the response body switches to `video/mp4` bytes. See [Video Generation](/guides/media/video-generation) for the full polling pattern.

***

## Troubleshooting

### `At least one reference is required for this model`

Reference-to-video submissions must include at least one of `reference_image_urls`, `reference_video_urls`, `image_references`, or `video_references`. Pure text-only generation isn't a valid R2V workflow — use a text-to-video model ID instead. `reference_audio_urls` alone is not sufficient (see the Audio section above).

### Too many reference videos / images

Seedance **2.0** caps R2V at **9 images** and **3 videos**. Seedance **2.5** raises those caps to **30 images** and **10 videos**. If you exceed the family limit, trim inputs or stitch offline first.

### Duration / aggregate duration errors

* **2.0:** per-clip reference video/audio `[2, 15]` s; combined video/audio ≤ 15 s; output 4–15 s.
* **2.5:** per-clip reference video/audio `[2, 30]` s; combined video/audio ≤ 30 s; output 4–30 s.

Trim clips client-side before submission.

### Prompt routes to the wrong workflow

Workflow is inferred from prompt syntax. Common misroutings:

* Wanting to **Extend** but writing `Refer to ...` → model treats your video as a *donor*, not a canvas to continue
* Wanting to **Stitch** but writing `Refer to ...` → model picks one as the donor, ignores the others
* Wanting to **Edit** but writing `Generate a video based on <Video 1>` → ambiguous; model may default to Reference

Use the canonical prefixes exactly as written: `Strictly edit <Video 1>, ...`, `Extend <Video 1>, ...`, `<Video 1> + ... + followed by <Video 2>`.

### Face / likeness inputs rejected

Public Seedance API models are **faces-off**. Do not expect a consent attestation flow. Face-bearing media may fail with a content-policy / provider error. Use the Venice app or Studio for likeness workflows.

### Quote doesn't match the queued amount

If you included a reference video but didn't pass `reference_video_total_duration` to `/video/quote`, the quote and the queued amount may differ. Always pass `reference_video_total_duration` (sum of all reference clip durations, in seconds) when reference videos are present.

***

## References

* Venice video queue endpoint: [`POST /api/v1/video/queue`](/api-reference/endpoint/video/queue)
* Venice quote endpoint: [`POST /api/v1/video/quote`](/api-reference/endpoint/video/quote)
* Companion guide: [Reference to Video](/guides/media/reference-to-video) (covers Kling O3 + Grok Imagine R2V)
* Companion guide: [Video Generation](/guides/media/video-generation) (queue / polling overview)
