API Reference-to-Video
reference-to-video es el modo más potente de Seedance 2.0. Una sola solicitud puede incluir hasta 9 imágenes de referencia + 3 vídeos de referencia + 3 clips de audio de referencia, y el modelo compone un nuevo vídeo guiado por todos ellos.
Escenarios típicos:
- Referencia de estilo — un puñado de imágenes que definen un estilo artístico concreto; el nuevo vídeo replica ese estilo
- Referencia de personaje / producto — mantén el mismo personaje virtual o producto apareciendo en nuevas escenas y acciones
- Referencia cinematográfica — un vídeo de muestra que transmite el ritmo y el movimiento de cámara que quieres
- Ritmo guiado por música — un clip de audio de referencia que marca el ritmo y la atmósfera visual
- Edición / extensión de vídeo — continúa, amplía o reescribe material existente
Endpoint
POST https://api.evolink.ai/v1/videos/generations
ID del modelo: seedance-2.0-reference-to-video
La variante Fast es
seedance-2.0-fast-reference-to-video: misma estructura de parámetros.
Parámetros de la solicitud
| Parámetro | Tipo | Obligatorio | Valor por defecto | Descripción |
|---|---|---|---|---|
model | string | Sí | — | Debe ser seedance-2.0-reference-to-video |
prompt | string | Sí | — | Descripción del vídeo. Usa lenguaje natural para indicar el papel de cada activo de referencia (p. ej. "usa la perspectiva en primera persona del video 1 y el audio 1 como música de fondo durante todo el clip"). ≤ 500 caracteres chinos o ≤ 1000 palabras en inglés |
image_urls | array<string> | No | — | 0–9 URLs de imagen de referencia |
video_urls | array<string> | No | — | 0–3 URLs de vídeo de referencia |
audio_urls | array<string> | No | — | 0–3 URLs de audio de referencia |
duration | integer | No | 5 | Duración del vídeo en segundos, 4–15 |
quality | string | No | 720p | 480p o 720p |
aspect_ratio | string | No | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive |
generate_audio | boolean | No | true | Si se debe generar audio sincronizado |
callback_url | string | No | — | URL HTTPS para el callback al completarse la tarea |
Restricción clave:
image_urls,video_urlsyaudio_urlspueden estar todos vacíos (equivalente a text-to-video puro), pero no está permitido enviar únicamenteaudio_urls. Siempre que envíes audio, debes proporcionar al menos una imagen o un vídeo como anclaje visual.
Asignación de roles mediante el prompt
Este modelo no tiene sintaxis de etiquetas (no existen @Image1, @Video1 ni similares). Asignas un papel a cada activo usando lenguaje natural, y el modelo entiende referencias como "imagen 1 / video 1 / audio 1" según el orden del array.
Patrones habituales:
| Intención | Frase recomendada en el prompt |
|---|---|
| Usar la imagen 1 como primer fotograma | "Usa la imagen 1 como primer fotograma del vídeo" |
| Que el video 1 marque el movimiento de cámara | "Replica el movimiento de cámara y el ritmo del video 1" |
| Usar el audio 1 como música de fondo | "Usa el audio 1 como música de fondo durante todo el vídeo" |
| Conservar el personaje de la imagen 1 | "La apariencia del personaje se mantiene consistente con la imagen 1" |
| Transferir el estilo de la imagen 2 | "El estilo artístico general toma como referencia la paleta y la textura de la imagen 2" |
Puedes combinar libremente estos patrones en un único prompt. El orden de los activos no afecta a la validez, pero sí influye en cómo el modelo interpreta "imagen 1 / imagen 2": mantenlo estable para garantizar la reproducibilidad.
Límites de los activos de entrada
Imágenes
| Restricción | Límite |
|---|---|
| Cantidad | 0–9 |
| Formato | .jpeg, .png, .webp |
| Dimensiones | 300–6000 px por lado |
| Relación de aspecto | 0.4 – 2.5 |
| Tamaño máximo por imagen | ≤ 30 MB |
Vídeos
| Restricción | Límite |
|---|---|
| Cantidad | 0–3 |
| Formato | .mp4, .mov |
| Duración por clip | 2–15 segundos |
| Duración total | ≤ 15 segundos |
| Resolución | 480p – 720p |
| Frecuencia de fotogramas | 24 – 60 FPS |
| Tamaño máximo por clip | ≤ 50 MB |
Audio
| Restricción | Límite |
|---|---|
| Cantidad | 0–3 |
| Formato | .wav, .mp3 |
| Duración por clip | 2–15 segundos |
| Duración total | ≤ 15 segundos |
| Tamaño máximo por clip | ≤ 15 MB |
Globales
| Restricción | Límite |
|---|---|
| Cuerpo total de la solicitud | ≤ 64 MB (sin incrustación en Base64) |
| Contenido mínimo | Al menos 1 imagen O 1 vídeo (solo audio no está permitido) |
Ejemplos de solicitud
cURL — Composición tres-modal (imagen + vídeo + audio)
curl -X POST https://api.evolink.ai/v1/videos/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-reference-to-video",
"prompt": "Replicate video 1 first-person perspective and camera pacing. Use audio 1 as the soundtrack for the entire video. Scene: a young rider weaving through a rain-soaked city street at night, neon reflections on wet asphalt.",
"image_urls": ["https://example.com/rider-style.jpg"],
"video_urls": ["https://example.com/pov-reference.mp4"],
"audio_urls": ["https://example.com/synthwave-bgm.mp3"],
"duration": 10,
"quality": "720p",
"aspect_ratio": "16:9"
}'
Python — Solo imágenes (hasta 9)
import requests
response = requests.post(
"https://api.evolink.ai/v1/videos/generations",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"model": "seedance-2.0-reference-to-video",
"prompt": "The overall art style references the color palette and texture of the 3 provided images. Scene: a small-town summer market at dusk, warm tones.",
"image_urls": [
"https://example.com/style-ref-1.jpg",
"https://example.com/style-ref-2.jpg",
"https://example.com/style-ref-3.jpg"
],
"duration": 8,
"aspect_ratio": "16:9"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
Node.js — Referencia solo de vídeo (replicación de cámara)
const res = await fetch("https://api.evolink.ai/v1/videos/generations", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "seedance-2.0-reference-to-video",
prompt: "Replicate video 1 orbital camera movement and velocity curve. Subject: a classical sculpture in a museum hall at dusk.",
video_urls: ["https://example.com/orbit-shot.mp4"],
duration: 8,
quality: "720p",
aspect_ratio: "16:9"
})
});
const task = await res.json();
console.log("Task ID:", task.id);
Respuesta
{
"id": "task-unified-1774857405-abc123",
"object": "video.generation.task",
"created": 1774857405,
"model": "seedance-2.0-reference-to-video",
"status": "pending",
"progress": 0,
"type": "video",
"task_info": {
"can_cancel": true,
"estimated_time": 180,
"video_duration": 10
},
"usage": {
"billing_rule": "per_second",
"credits_reserved": 60,
"user_group": "default"
}
}
Notas de facturación
- Facturación por segundo según la
durationdel vídeo de salida - La duración del vídeo de referencia de entrada también cuenta para la facturación (un vídeo de referencia de 10 segundos se factura como 10 segundos de entrada)
- La generación de audio en sí no tiene coste adicional
Preguntas frecuentes
¿Aparecen los activos de referencia directamente en la salida? No. El modelo los trata como señales de estilo / composición / movimiento / ritmo; el resultado final es contenido completamente nuevo y generado.
¿Puedo enviar la solicitud sin ningún activo de referencia? Sí, en ese caso funciona como text-to-video puro. Pero si no tienes referencias, usa directamente text-to-video, que es más barato.
¿Importa el orden de los activos?
Sí. Si tu prompt dice "video 1", el modelo lo asocia con video_urls[0]. Mantener un orden estable hace que los experimentos sean reproducibles.
Relacionado
- Visión general de modelos
- API Text-to-Video
- API Image-to-Video
- Modelos Fast —
seedance-2.0-fast-reference-to-video - Tareas asíncronas / Webhooks