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ámetroTipoObligatorioValor por defectoDescripción
modelstringDebe ser seedance-2.0-reference-to-video
promptstringDescripció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_urlsarray<string>No0–9 URLs de imagen de referencia
video_urlsarray<string>No0–3 URLs de vídeo de referencia
audio_urlsarray<string>No0–3 URLs de audio de referencia
durationintegerNo5Duración del vídeo en segundos, 415
qualitystringNo720p480p o 720p
aspect_ratiostringNo16:916:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive
generate_audiobooleanNotrueSi se debe generar audio sincronizado
callback_urlstringNoURL HTTPS para el callback al completarse la tarea

Restricción clave: image_urls, video_urls y audio_urls pueden estar todos vacíos (equivalente a text-to-video puro), pero no está permitido enviar únicamente audio_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ónFrase 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ónLímite
Cantidad0–9
Formato.jpeg, .png, .webp
Dimensiones300–6000 px por lado
Relación de aspecto0.4 – 2.5
Tamaño máximo por imagen≤ 30 MB

Vídeos

RestricciónLímite
Cantidad0–3
Formato.mp4, .mov
Duración por clip2–15 segundos
Duración total≤ 15 segundos
Resolución480p – 720p
Frecuencia de fotogramas24 – 60 FPS
Tamaño máximo por clip≤ 50 MB

Audio

RestricciónLímite
Cantidad0–3
Formato.wav, .mp3
Duración por clip2–15 segundos
Duración total≤ 15 segundos
Tamaño máximo por clip≤ 15 MB

Globales

RestricciónLímite
Cuerpo total de la solicitud≤ 64 MB (sin incrustación en Base64)
Contenido mínimoAl 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 duration del 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