Guía del modelo

API de Seedance 2.0: precios, parámetros y código que funciona

Seedance 2.0 es el modelo de vídeo multitoma con sonido de ByteDance. Esta guía cubre en qué destaca, todas las opciones que acepta la API, lo que cuesta un clip en cada resolución y solicitudes que puedes pegar en un terminal.

En qué destaca Seedance 2.0

ByteDance lanzó Seedance 2.0 en febrero de 2026. Genera la imagen y la banda sonora en una sola pasada, puede cortar entre varios planos dentro de un mismo clip y mantiene un personaje y un estilo visual a lo largo de esos cortes. Eso lo convierte en una buena opción por defecto para vídeo narrativo corto: anuncios de producto, momentos de una historia y clips para redes sociales que necesitan sonido desde el principio.

  • Clips multitoma. Describe los planos en orden y el modelo corta entre ellos manteniendo la coherencia del sujeto.
  • Sonido en la misma pasada. El ambiente, los efectos y la voz se generan junto con la imagen cuando estableces audio en true.
  • Control a partir de imágenes. Empieza desde un primer fotograma, fija un primer y un último fotograma, o pasa hasta 9 imágenes de referencia para un personaje, un producto o un aspecto.
  • Encuadre flexible. Seis relaciones de aspecto fijas, desde el vertical 9:16 para redes sociales hasta 21:9 para trabajo cinematográfico, además de un ajuste adaptativo que sigue tu imagen de entrada.

Dónde es más débil: como la mayoría de los modelos de vídeo, Seedance 2.0 no renderiza de forma fiable el texto exacto en pantalla, así que añade títulos, precios y logotipos en tu editor en lugar de en el prompt. Las escenas recargadas con muchas personas moviéndose a la vez son difíciles para los modelos de vídeo actuales en general; menos sujetos y acciones claras dan resultados más fiables.

Entradas y límites

Estas son las opciones que el catálogo lista para Seedance 2.0. El formato de solicitud es el mismo que el de cualquier otro modelo de Revana; solo cambian los valores permitidos.

OpciónSeedance 2.0
Id del modeloseedance-2.0 (niveles más ligeros: seedance-2.0-fast, seedance-2.0-mini)
Tareastexto a vídeo, imagen a vídeo, fotograma inicial y final e imágenes de referencia
Resolución480p, 720p, 1080p y 4K
Duración4 a 15 s
Relación de aspecto16:9, 9:16, 1:1, 4:3, 3:4, 21:9 o adaptativa
Sonidoaudio: true or false
Imágenes de referenciahasta 9, como image_urls

Un campo o valor que el modelo no admite se rechaza con un error 422 antes de cobrar nada, así que un error tipográfico en una solicitud no cuesta nada.

Precios de Seedance 2.0 (octubre de 2026)

Seedance 2.0 se factura por segundo de vídeo de salida. Los precios de abajo son del catálogo de Revana en octubre de 2026, desde $0.08 por segundo en 480p.

Precio de Seedance 2.0 por segundo y por clip
ResoluciónPor segundoClip de 5 sClip de 10 sClip de 15 s
480p$0.08$0.40$0.80$1.20
720p$0.15$0.75$1.50$2.25
1080p$0.40$2.00$4.00$6.00
4K$0.83$4.15$8.30$12.45

Seedance 2.0 no tiene una tarifa de audio aparte: el precio listado es el mismo con el sonido activado o desactivado.

Seedance 2.0 en Revana admite texto e imágenes (un primer fotograma, un primer y un último fotograma, o imágenes de referencia). No admite un vídeo de referencia, así que no hay una tarifa aparte para entrada de vídeo.

Cuando envías un trabajo, su precio se retiene de tu saldo. Solo se cobra cuando el trabajo termina con éxito; si falla, la retención se libera. El importe exacto vuelve en la generación como cost_usd. Consulta los precios para ver los paquetes de créditos y la tabla de precios completa, y la comparación de precios de Seedance 2.0 para ver lo que cobran ByteDance, fal, EvoLink y Atlas Cloud por el mismo modelo.

Seedance 2.0 Fast y Mini

La misma familia viene en dos niveles más ligeros con las mismas tareas, relaciones de aspecto, duraciones y hasta 9 imágenes de referencia, pero llegan solo hasta 720p. Van bien para borradores y trabajo de alto volumen; vuelve a ejecutar los prompts que te gusten en Seedance 2.0 para obtener la calidad final y resoluciones más altas.

Niveles de Seedance 2.0 comparados
Modelo480p / s720p / s5 s en 720pRutas
Seedance 2.0$0.08$0.15$0.75tres rutas
Seedance 2.0 Fast$0.05$0.11$0.55tres rutas
Seedance 2.0 Mini$0.03$0.05$0.25cuatro rutas

Genera un vídeo con Seedance 2.0

Cada solicitud va a POST /v1/generations con tu clave de API como bearer token. La llamada devuelve 202 al instante con una generación id; consulta GET /v1/generations/{id} cada pocos segundos hasta que status sea succeeded o failed. Este ejemplo pide un clip de 5 segundos en 720p con sonido, que cuesta $0.75.

cURL
export REVANA_API_KEY="sr_live_..."

# 1. Submit the job (returns 202 with the generation id)
curl https://api.revana.si/v1/generations \
  -H "Authorization: Bearer $REVANA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0",
    "input": {
      "prompt": "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
      "resolution": "720p",
      "duration": 5,
      "aspect_ratio": "16:9",
      "audio": true
    },
    "max_cost_usd": 2
  }'

# 2. Poll with the id from step 1 until status is "succeeded" or "failed"
curl https://api.revana.si/v1/generations/gen_01JBX7Q2M4 \
  -H "Authorization: Bearer $REVANA_API_KEY"
Python
import os
import time

import requests

API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}

resp = requests.post(f"{API}/generations", headers=HEADERS, json={
    "model": "seedance-2.0",
    "input": {
        "prompt": "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
        "resolution": "720p",
        "duration": 5,
        "aspect_ratio": "16:9",
        "audio": True,
    },
    "max_cost_usd": 2,
})
resp.raise_for_status()
job = resp.json()

while job["status"] in ("queued", "running"):
    time.sleep(5)
    job = requests.get(f"{API}/generations/{job['id']}", headers=HEADERS).json()

if job["status"] == "succeeded":
    print(job["output"]["urls"], job["cost_usd"])
else:
    print("Failed:", job["error"])
Node.js
// Node 18 or later. Save as generate.mjs and run: node generate.mjs
const API = "https://api.revana.si/v1";
const headers = {
  Authorization: `Bearer ${process.env.REVANA_API_KEY}`,
  "Content-Type": "application/json",
};

const res = await fetch(`${API}/generations`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    model: "seedance-2.0",
    input: {
      prompt: "A ceramic coffee mug on a sunlit kitchen counter. Shot 1: slow push-in as steam rises. Shot 2: close-up of a hand lifting the mug. Morning birdsong, a soft clink as the mug leaves the counter.",
      resolution: "720p",
      duration: 5,
      aspect_ratio: "16:9",
      audio: true,
    },
    max_cost_usd: 2,
  }),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
let job = await res.json();

while (job.status === "queued" || job.status === "running") {
  await new Promise((r) => setTimeout(r, 5000));
  job = await (await fetch(`${API}/generations/${job.id}`, { headers })).json();
}

if (job.status === "succeeded") console.log(job.output.urls, job.cost_usd);
else console.error("Failed:", job.error);

max_cost_usd es un tope de lo que puede costar el trabajo: las rutas cotizadas por encima se omiten, y si ninguna encaja, el trabajo no se ejecuta. Fíjalo un poco por encima del precio que esperas. Una generación terminada tiene este aspecto:

Respuesta
{
  "id": "gen_01JBX7Q2M4",
  "model": "seedance-2.0",
  "status": "succeeded",
  "output": {
    "urls": [
      "https://cdn.revana.si/g/gen_01JBX7Q2M4/0.mp4"
    ]
  },
  "cost_usd": 0.75,
  "attempts": 1,
  "error": null,
  "created_at": "2026-10-19T14:02:11Z",
  "completed_at": "2026-10-19T14:03:47Z"
}

Descarga el archivo poco después de que termine el trabajo: los enlaces de salida caducan. La documentación de la API lista todos los campos, estados y códigos de error.

Anima una imagen fija (imagen a vídeo)

Pasa un fotograma inicial como image_url. Entonces el prompt describe el movimiento y el sonido en lugar de la escena, que ya está en la imagen. La relación de aspecto adaptive sigue la forma de tu imagen.

Cuerpo de la solicitud
{
  "model": "seedance-2.0",
  "input": {
    "prompt": "She turns toward the camera and smiles as a light breeze moves her hair. Distant city traffic, a bus passing.",
    "image_url": "https://example.com/first-frame.jpg",
    "resolution": "1080p",
    "duration": 5,
    "aspect_ratio": "adaptive",
    "audio": true
  },
  "max_cost_usd": 3
}

Fotogramas inicial y final

Añade end_image_url para fijar dónde termina el plano. El modelo rellena el movimiento entre los dos fotogramas, lo que funciona bien para transiciones, revelaciones y planos de antes y después.

Cuerpo de la solicitud
{
  "model": "seedance-2.0",
  "input": {
    "prompt": "Smooth orbit around the sneaker as the light shifts from daylight to neon night",
    "image_url": "https://example.com/start.jpg",
    "end_image_url": "https://example.com/end.jpg",
    "resolution": "720p",
    "duration": 6,
    "aspect_ratio": "16:9",
    "audio": false
  },
  "max_cost_usd": 2
}

Imágenes de referencia

Para mantener la coherencia de un personaje o producto sin fijar el primer fotograma, envía hasta 9 imágenes como image_urls y describe cada una en el prompt, por ejemplo "la mujer de la primera imagen". Usa fotogramas o referencias en una solicitud, pero no ambos: son modos distintos, y una solicitud que los mezcle puede ser rechazada.

Cuerpo de la solicitud
{
  "model": "seedance-2.0",
  "input": {
    "prompt": "The woman from the first image walks through the market from the second image, carrying the bag from the third image. Handheld camera, golden hour, market chatter.",
    "image_urls": [
      "https://example.com/woman.jpg",
      "https://example.com/market.jpg",
      "https://example.com/bag.jpg"
    ],
    "resolution": "720p",
    "duration": 8,
    "aspect_ratio": "9:16",
    "audio": true
  },
  "max_cost_usd": 2
}

Consejos de prompts para Seedance 2.0

  • Escribe los planos en orden. Etiquetas como "Plano 1: plano general de situación. Plano 2: primer plano de sus manos" dan al modelo puntos de corte claros.
  • Nombra el movimiento de cámara. Avance, órbita, cámara en mano, trípode fijo, retirada con dron: un movimiento por plano se entiende mejor que una lista.
  • Describe el sonido. "Lluvia sobre un tejado de chapa, truenos lejanos, sin música" funciona mejor que dejar el audio al azar. Si no quieres voz, dilo.
  • Mantén el diálogo corto. Pon la línea entre comillas e indica quién habla. Un clip de 5 segundos tiene espacio para una frase corta.
  • Deja el texto fuera del encuadre. Añade subtítulos, títulos y logotipos en la edición.
  • Haz borradores baratos y luego sube la calidad. Itera en 480p o con Seedance 2.0 Mini y vuelve a ejecutar el prompt ganador en 1080p. Los resultados no son idénticos entre resoluciones y niveles, así que trata los borradores como una guía.

Cómo funcionan el enrutamiento y el respaldo en Seedance 2.0

Revana es un enrutador de API: una clave y un formato de solicitud delante de varios proveedores de origen que sirven el mismo modelo. Seedance 2.0 tiene actualmente tres rutas. El enrutador envía cada trabajo primero a la ruta más barata; si esa ruta falla o agota el tiempo, reenvía el trabajo automáticamente a la siguiente.

  • Pagas el precio listado sea cual sea la ruta que atienda el trabajo, y solo se cobra la ruta que tiene éxito.
  • El campo attempts de la generación te indica cuántas rutas se probaron.
  • Si todas las rutas fallan, el trabajo termina como failed con un error y no cuesta nada.

El respaldo aumenta las probabilidades de obtener un resultado, pero no es una promesa de disponibilidad ni de velocidad. Gestiona los trabajos failed en tu aplicación, por ejemplo reintentando más tarde u ofreciendo otro modelo.

¿Listo para probarlo? Obtén una clave de API y compara Seedance 2.0 con los demás modelos de vídeo.

Preguntas frecuentes

¿Cuánto cuesta la API de Seedance 2.0?

En octubre de 2026, Seedance 2.0 cuesta $0.08 por segundo en 480p, $0.15 en 720p, $0.40 en 1080p y $0.83 en 4K. Un clip de 5 segundos en 720p cuesta $0.75. El sonido está incluido en el mismo precio.

¿Seedance 2.0 genera audio?

Sí. Establece audio en true y el modelo genera ambiente, efectos y voz junto con la imagen en la misma pasada. Establécelo en false para un clip sin sonido; el precio es el mismo en ambos casos.

¿Cuánto puede durar un vídeo de Seedance 2.0?

De 4 a 15 segundos por solicitud. Para piezas más largas, genera varios clips y móntalos, o usa Seedance 2.5, que llega hasta 30 segundos.

¿Puedo usar imágenes de referencia con Seedance 2.0?

Sí, hasta 9 imágenes como image_urls, para personajes, productos o estilo. Usa fotogramas (image_url y end_image_url) o referencias en una misma solicitud, pero no ambos.

¿En qué se diferencian Seedance 2.0 Fast y Mini de Seedance 2.0?

Tienen las mismas tareas y opciones, pero llegan solo hasta 720p. En 720p, Seedance 2.0 Fast cuesta $0.11 por segundo y Seedance 2.0 Mini $0.05, frente a $0.15 de Seedance 2.0.

¿Qué pasa si falla una generación de Seedance 2.0?

El enrutador prueba automáticamente la siguiente ruta. Se te cobra una sola vez, por la ruta que tiene éxito; si todas las rutas fallan, el trabajo falla y no cuesta nada.

Llama a Seedance 2.0 con una sola clave

Crea una clave, añade crédito desde $10 y usa la misma clave para Seedance 2.0 y todos los demás modelos del catálogo.