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 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.
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.
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:
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
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)
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"
}'
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.
Flujo Reference — donante de sujeto
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
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
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
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
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)
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:
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 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