> ## Documentation Index
> Fetch the complete documentation index at: https://veniceai-mintlify-d2fddb8a.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Seedance 2.0

> Genera, edita, extiende y une vídeos con Seedance 2.0 en Venice — flujos de text, image y reference-to-video en un mismo endpoint, con ejemplos resueltos.

Seedance 2.0 es un modelo multimodal de vídeo insignia expuesto en Venice como una familia de tres variantes para generación de vídeo a partir de texto, imagen y referencia. La variante **reference-to-video** es excepcionalmente potente: un único endpoint y un único ID de modelo gestionan **cuatro flujos distintos** (Reference, Edit, Extend, Stitch) — el flujo se infiere de la **forma de tu prompt**.

Esta guía recorre las variantes, los cuatro flujos con sus prompts canónicos, los límites de entrada multimodal, los precios y ejemplos completos con `curl`.

## Variantes

| ID del modelo                          | Variante | Resoluciones de salida | Notas                                                                                                                     |
| -------------------------------------- | -------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `seedance-2-0-text-to-video`           | T2V      | 480p / 720p / 1080p    | Solo prompt de texto                                                                                                      |
| `seedance-2-0-image-to-video`          | I2V      | 480p / 720p / 1080p    | Anclaje de primer frame (y opcionalmente último) con imagen                                                               |
| `seedance-2-0-reference-to-video`      | R2V      | 480p / 720p / 1080p    | Hasta 9 imágenes de referencia + 3 vídeos de referencia + 3 donantes de audio. Impulsa Reference / Edit / Extend / Stitch |
| `seedance-2-0-fast-text-to-video`      | Fast T2V | 480p / 720p            | Nivel más rápido y de menor fidelidad                                                                                     |
| `seedance-2-0-fast-image-to-video`     | Fast I2V | 480p / 720p            | Nivel más rápido y de menor fidelidad                                                                                     |
| `seedance-2-0-fast-reference-to-video` | Fast R2V | 480p / 720p            | Nivel más rápido y de menor fidelidad; mismo conjunto de flujos                                                           |

Todas las variantes son asíncronas. Envía mediante `POST /api/v1/video/queue` y luego haz polling de `POST /api/v1/video/retrieve` hasta que el cuerpo de la respuesta sea `video/mp4`. Consulta [Generación de vídeo](/guides/media/video-generation) para el flujo general de cola.

## El modelo "un modelo, cuatro flujos"

La variante reference-to-video (`seedance-2-0-reference-to-video` y su hermana Fast) es el mismo modelo subyacente sirviendo cuatro tareas diferentes. **El modelo infiere la tarea a partir del prefijo del prompt y la forma de tus entradas.** No hay un campo `task` o `workflow` — la sintaxis del prompt es el enrutamiento.

| Flujo         | Qué hace                                                                                                              | Prefijo del prompt                                                   | Entradas                                                                                                        |
| ------------- | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| **Reference** | Genera un vídeo nuevo usando los archivos de referencia subidos como donantes de sujeto / movimiento / estilo / audio | `Refer to ... in <Image\|Video\|Audio N> to generate ...`            | Texto + ≥1 referencia de imagen O vídeo (0-9 imágenes, 0-3 vídeos), más opcionalmente hasta 3 donantes de audio |
| **Edit**      | Modifica un único vídeo de entrada preservando el resto                                                               | `Strictly edit <Video 1>, changing its ...`                          | 1 vídeo de entrada + texto (imágenes como anclaje opcional)                                                     |
| **Extend**    | Extensión hacia adelante / atrás de un clip                                                                           | `Extend <Video 1>, generate ...`                                     | 1 vídeo de entrada + texto                                                                                      |
| **Stitch**    | Une 2-3 clips con transiciones auto-generadas                                                                         | `<Video 1> + <transition description> + followed by <Video 2> + ...` | 2-3 vídeos de entrada + texto                                                                                   |

La **sintaxis del prompt es canónica y sensible a mayúsculas**: corchetes angulares, primera letra en mayúscula, un único espacio antes del número — `<Video 1>`, `<Image 1>`, `<Audio 1>`.

***

## Patrones de flujo

### Flujo Reference

Usa los archivos de referencia subidos como **donantes** — sujeto, escena, movimiento, estilo, timbre vocal — para generar un vídeo completamente nuevo.

**Patrones canónicos de prompt**:

```
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 ...
```

**Ejemplos**:

* `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.` (los donantes de audio deben emparejarse con al menos una referencia de imagen o vídeo — solo audio se rechaza)

### Flujo Edit

Modifica un único vídeo de entrada. **Cualquier cosa no nombrada explícitamente en el prompt se preserva.** Úsalo cuando quieras un cambio localizado (cambio de sujeto, cambio de clima/color, añadir/eliminar elemento) en lugar de un vídeo totalmente nuevo.

**Patrón canónico de prompt**:

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

**Sub-patrones para control más fino**:

```
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].
```

**Ejemplos**:

* `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.`

El último ejemplo combina Edit con una referencia de imagen — totalmente legal, el modelo usa `<Image 1>` como donante visual para el reemplazo.

### Flujo Extend

Continúa un único clip hacia adelante o hacia atrás en el tiempo. **Por defecto, Seedance devuelve solo el contenido nuevo** — no el clip de entrada original concatenado con la extensión. Esto es por diseño, para continuidad de transición; si quieres preservar el clip de entrada junto con la extensión, dilo explícitamente:

```
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]      ← preserva el input al principio
Extend <Video 1> backward, [description], and then end with <Video 1>               ← preserva el input al final
```

Gestión de transiciones: el modelo extrae automáticamente los frames de transición para una mezcla sin costuras, y los segmentos originales del vídeo de entrada no se re-generan.

**Ejemplos**:

* `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.`

### Flujo Stitch (Track Completion)

Conecta 2-3 clips de entrada con transiciones generadas por IA. La duración total combinada de entrada debe ser ≤ 15 s.

**Patrón canónico de prompt**:

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

**Ejemplos**:

* `<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>`

El modelo recorta automáticamente los segmentos de conexión en los puntos de unión para la continuidad.

***

## Fórmula universal de prompt

En los cuatro flujos, la fórmula de autoría recomendada es:

```
Sujeto + Movimiento + Entorno (opcional)
       + Movimiento de cámara / Corte (opcional)
       + Descripción estética (opcional)
       + Audio (opcional)
```

* **Sujeto + Movimiento**: la base lógica — define "Quién" está realizando "Qué acción"
* **Entorno + Estética**: fondo espacial, iluminación, estilo visual
* **Cámara**: tipo o movimiento explícito de toma
* **Audio**: efectos de sonido ambientales o dirección vocal para salida inmersiva

Poner esta capa encima de un prefijo de flujo (p. ej., `Strictly edit <Video 1>, changing its <subject + motion + environment + ...>`) produce las salidas de mayor calidad.

***

## Límites de entrada multimodal

Los valores siguientes son lo que acepta la API de Venice. Las solicitudes fuera de estos rangos se rechazan en la capa de schema con un 400 antes de llegar a la inferencia.

### Imágenes

| Restricción                                     | Valor                                                               |
| ----------------------------------------------- | ------------------------------------------------------------------- |
| Métodos de entrada                              | URL (`http://`, `https://`) o data URL en base64 (`data:image/...`) |
| Formatos                                        | `.jpeg`, `.png`, `.webp`, `.bmp`, `.tiff`, `.gif`, `.heic`, `.heif` |
| Aspect ratio (A / H)                            | exclusivo `(0.4, 2.5)`                                              |
| Lado mínimo                                     | ≥ 300 px                                                            |
| Cantidad de imágenes: primer frame I2V          | 1                                                                   |
| Cantidad de imágenes: primer + último frame I2V | 2                                                                   |
| **Cantidad de imágenes: R2V (V2 / Fast)**       | **1 – 9**                                                           |

### Vídeos

| Restricción                        | Valor                                                               |
| ---------------------------------- | ------------------------------------------------------------------- |
| Métodos de entrada                 | URL (`http://`, `https://`) o data URL en base64 (`data:video/...`) |
| Formatos                           | `.mp4`, `.mov`                                                      |
| Códecs de vídeo                    | H.264 / AVC, H.265 / HEVC                                           |
| Códecs de audio (en el contenedor) | AAC, MP3                                                            |
| **Duración por clip**              | `[2, 15]` s (inclusive)                                             |
| **Cantidad máx. de clips**         | 3 (R2V / Stitch / Extend)                                           |
| **Duración combinada total**       | ≤ 15 s entre todos los clips                                        |
| **Tamaño por clip**                | ≤ 50 MB                                                             |

### Audio

| Restricción                  | Valor                                                               |
| ---------------------------- | ------------------------------------------------------------------- |
| Métodos de entrada           | URL (`http://`, `https://`) o data URL en base64 (`data:audio/...`) |
| Formatos                     | `.wav`, `.mp3`                                                      |
| **Duración por clip**        | `[2, 15]` s                                                         |
| **Cantidad máx. de clips**   | 3                                                                   |
| **Duración combinada total** | ≤ 15 s entre todos los clips                                        |
| **Tamaño por clip**          | ≤ 15 MB                                                             |

El audio de referencia se admite solo en las variantes R2V. Cada entrada se reenvía al modelo como un elemento de contenido `role: "reference_audio"` al que el prompt se dirige como `<Audio 1>`, `<Audio 2>`, `<Audio 3>` — el modelo usa cada clip para timbre vocal, efectos de sonido o música de fondo dependiendo de cómo el prompt lo encuadre. El campo singular heredado `audio_url` mapea a la misma forma de contenido y ahora es equivalente a pasar un `reference_audio_urls` de un elemento.

<Warning>
  **`reference_audio_urls` no puede ser la única entrada de referencia.** El modelo requiere al menos una referencia de imagen o vídeo junto con cualquier donante de audio. Empareja `reference_audio_urls` con `reference_image_urls`, `reference_video_urls`, `image_url` o `video_url` — los envíos solo de audio se rechazan.
</Warning>

### Tamaño de la solicitud

El endpoint de cola acepta cuerpos JSON de hasta **35 MB**. Las data URLs inline para vídeos grandes pueden empujar más allá de esto — para Stitch multi-clip en particular, prefiere URLs en lugar de base64 inline.

***

## Precios

Llama a `POST /api/v1/video/quote` para obtener una cotización para una forma de solicitud dada antes de enviarla a `/video/queue`. El endpoint de cotización es la única fuente autoritativa; los detalles de precio pueden cambiar y no deberían cachearse ni duplicarse en el cliente.

Cuando los vídeos de referencia forman parte de la solicitud, pasa también `reference_video_total_duration` (la suma de todas las duraciones de clips de referencia en segundos) para que la cotización coincida con lo que cobrará `/video/queue`:

```bash theme={null}
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",
    "duration": "5s",
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "reference_video_total_duration": 5
  }'
```

***

## Ejemplos completos

Todos los ejemplos asumen que `VENICE_API_KEY` está establecida en el entorno.

### Text-to-video

```bash theme={null}
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",
    "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"
  }'
```

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

```bash theme={null}
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",
    "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-2-0-image-to-video` (y su variante Fast) **no aceptan `aspect_ratio`** — el aspect ratio de salida se deriva automáticamente de las dimensiones de la imagen de entrada. Pasar el campo devuelve un 400 con *"This model does not support aspect\_ratio"*. Usa las variantes T2V o R2V si necesitas control explícito de aspect ratio.
</Note>

### Flujo Reference — donante de sujeto

```bash theme={null}
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",
    "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"
  }'
```

### Flujo Reference — donante de sujeto + audio

```bash theme={null}
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",
    "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"
  }'
```

### Flujo Edit

```bash theme={null}
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",
    "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"
  }'
```

### Flujo Edit con anclaje por imagen

```bash theme={null}
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",
    "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"
  }'
```

### Extender hacia adelante

```bash theme={null}
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",
    "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={null}
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",
    "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 de finalización

Tras cada envío a la cola, guarda el `queue_id` devuelto y haz polling de `/video/retrieve` hasta que el cuerpo de la respuesta sea `video/mp4`:

```bash theme={null}
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",
    "queue_id": "123e4567-e89b-12d3-a456-426614174000"
  }' \
  -o output.mp4
```

La respuesta es JSON (`{ "status": "queued" | "running" | "failed", ... }`) hasta que el trabajo se complete, momento en el que el cuerpo de la respuesta cambia a bytes `video/mp4`. Consulta [Generación de vídeo](/guides/media/video-generation) para el patrón completo de polling.

***

## Resolución de problemas

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

Los envíos de reference-to-video deben incluir al menos uno de `reference_image_urls`, `reference_video_urls`, `image_references` o `video_references`. La generación pura solo de texto no es un flujo R2V válido — usa `seedance-2-0-text-to-video` en su lugar. `reference_audio_urls` por sí solo no es suficiente (consulta la sección de Audio anterior).

### `reference_video_urls must have at most 3 videos`

El modelo limita los vídeos de referencia a 3. Si necesitas más clips, haz un Stitch primero (3 → 1) y luego usa la salida como referencia para un seguimiento.

### `Per clip must be 2–15s` / agregado `> 15s`

La duración por clip es `[2, 15]` segundos **inclusive**; la suma entre todos los vídeos de referencia también está limitada a 15 segundos. Recorta los clips en el cliente antes del envío.

### El prompt enruta al flujo incorrecto

El flujo se infiere de la sintaxis del prompt. Errores de enrutamiento comunes:

* Querer **Extend** pero escribir `Refer to ...` → el modelo trata tu vídeo como *donante*, no como lienzo a continuar
* Querer **Stitch** pero escribir `Refer to ...` → el modelo elige uno como donante, ignora los demás
* Querer **Edit** pero escribir `Generate a video based on <Video 1>` → ambiguo; el modelo puede caer en Reference por defecto

Usa los prefijos canónicos exactamente como están escritos: `Strictly edit <Video 1>, ...`, `Extend <Video 1>, ...`, `<Video 1> + ... + followed by <Video 2>`.

### La cotización no coincide con el importe en cola

Si incluiste un vídeo de referencia pero no pasaste `reference_video_total_duration` a `/video/quote`, la cotización y el importe en cola pueden diferir. Pasa siempre `reference_video_total_duration` (suma de todas las duraciones de clips de referencia, en segundos) cuando haya vídeos de referencia.

***

## Referencias

* Endpoint de cola de vídeo de Venice: [`POST /api/v1/video/queue`](/api-reference/endpoint/video/queue)
* Endpoint de cotización de Venice: [`POST /api/v1/video/quote`](/api-reference/endpoint/video/quote)
* Guía complementaria: [Reference to Video](/guides/media/reference-to-video) (cubre Kling O3 + Grok Imagine R2V)
* Guía complementaria: [Generación de vídeo](/guides/media/video-generation) (visión general de cola / polling)
