API de Seedance 2.5: precio, parámetros y código
Seedance 2.5 es el modelo de vídeo de ByteDance que genera hasta 30 segundos en una sola toma, con audio nativo, a partir de un prompt de texto o de hasta 30 imágenes, 10 vídeos y 10 pistas de audio de referencia. En NezhaGate es una API asíncrona al estilo de OpenAI: $0.10 por segundo a 480P, $0.158 a 720P, y un trabajo fallido no cuesta nada.
Actualizado el 2026-10-03
Seedance 2.5 de un vistazo
ByteDance lanzó Seedance 2.5 el 31 de julio de 2026 (ByteDance Seed). Su principal novedad es la duración: hasta 30 segundos en una sola toma, con audio nativo, mientras que Seedance 2.0 se queda en 15. En NezhaGate funciona con la misma clave API que todos los demás modelos.
| ID del modelo | seedance-2.5 |
|---|---|
| Endpoint | POST https://nezhagate.com/v1/videos/generations y luego GET /v1/videos/jobs/{id} |
| Duración | cualquier número entero de segundos de 4 a 30 (duration) |
| Resolución | 480P, 720P (predeterminada); 1080P próximamente |
| Relación de aspecto | 16:9 (predeterminada), 9:16, 1:1, 4:3, 3:4 (size) |
| Referencias | hasta 30 imágenes, 10 vídeos (30 s en total) y 10 pistas de audio, en una sola petición |
| Audio | banda sonora nativa, activada por defecto (audio: false la desactiva) |
| Prompt | hasta 11,000 caracteres; el chino y el inglés cuentan igual |
| Salida | un enlace mp4 en data[0].url, alojado por nosotros y conservado durante 60 días |
Precio
Se factura por segundo de vídeo generado. Las imágenes, los vídeos y los audios de referencia no se facturan. Un trabajo fallido o que supera el tiempo límite se reembolsa íntegramente.
| Resolución | Por segundo | 5 s | 10 s | 15 s | 30 s |
|---|---|---|---|---|---|
| 480P | $0.10 | $0.50 | $1.00 | $1.50 | $3.00 |
| 720P | $0.158 | $0.79 | $1.58 | $2.37 | $4.74 |
El precio oficial de ByteDance en BytePlus para vídeo 16:9 es de $0.103 por segundo a 480p y $0.231 a 720p: a 720P ahorras un 31%. Un clip fijo de 30 segundos a 720P con seedance-2.5-30s cuesta $1.50. El precio de cada proveedor, lado a lado: comparación de precios de la API de Seedance.
Envía un trabajo y obtén el vídeo
El vídeo es asíncrono: la llamada de envío devuelve al instante HTTP 202 y un id de trabajo; después consultas hasta que status sea succeeded y lees data[0].url. Crea una clave en la consola y guárdala como API_KEY.
curl
# 1) enviar: devuelve {"id": "img_...", "status": "queued"}
curl https://nezhagate.com/v1/videos/generations \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"prompt": "A lighthouse keeper climbs the spiral stairs at dusk; the lamp flares on and sweeps across a stormy sea. Slow push-in, warm light, film grain.",
"duration": 10,
"resolution": "720P",
"size": "16:9"
}'
# 2) consulta cada 15 s hasta que "status" sea "succeeded" y luego lee data[0].url
curl https://nezhagate.com/v1/videos/jobs/JOB_ID -H "Authorization: Bearer $API_KEY"Python
import os
import time
import requests
BASE = "https://nezhagate.com/v1"
HEADERS = {"Authorization": "Bearer " + os.environ["API_KEY"]}
job = requests.post(f"{BASE}/videos/generations", headers=HEADERS, json={
"model": "seedance-2.5",
"prompt": "A lighthouse keeper climbs the spiral stairs at dusk; the lamp flares on "
"and sweeps across a stormy sea. Slow push-in, warm light, film grain.",
"duration": 10,
"resolution": "720P",
"size": "16:9",
}).json()
print("job", job["id"])
while True:
time.sleep(15)
r = requests.get(f"{BASE}/videos/jobs/{job['id']}", headers=HEADERS).json()
if r["status"] == "succeeded":
print(r["data"][0]["url"])
break
if r["status"] == "failed":
raise SystemExit(r["error"]["message"]) # refunded in fullNode.js
const BASE = "https://nezhagate.com/v1";
const headers = { Authorization: `Bearer ${process.env.API_KEY}`, "Content-Type": "application/json" };
const job = await (await fetch(`${BASE}/videos/generations`, {
method: "POST",
headers,
body: JSON.stringify({
model: "seedance-2.5",
prompt: "A lighthouse keeper climbs the spiral stairs at dusk; the lamp flares on and sweeps across a stormy sea.",
duration: 10,
resolution: "720P",
size: "16:9",
}),
})).json();
while (true) {
await new Promise((ok) => setTimeout(ok, 15000));
const r = await (await fetch(`${BASE}/videos/jobs/${job.id}`, { headers })).json();
if (r.status === "succeeded") { console.log(r.data[0].url); break; }
if (r.status === "failed") throw new Error(r.error.message);
}Imágenes, vídeos y audio de referencia
Añade las referencias a la misma petición y nómbralas en el prompt por orden: @Image1, @Image2 para images, @Video1 para video_references, @Audio1 para audio_reference. Cada elemento puede ser una URL pública o un data URI en base64 (lo alojamos durante 7 días).
{
"model": "seedance-2.5",
"prompt": "The dancer from @Image1 performs the moves of @Video1 on the rooftop from @Image2, cut to the beat of @Audio1.",
"images": ["https://example.com/dancer.png", "https://example.com/rooftop.png"],
"video_references": ["https://example.com/moves.mp4"],
"audio_reference": ["https://example.com/beat.mp3"],
"duration": 12,
"resolution": "720P",
"size": "9:16"
}Seedance no tiene modo de primer fotograma: cada imagen es una referencia de un personaje, un objeto, un lugar o un estilo, así que no se garantiza que una imagen de referencia abra el clip. Nombra cada referencia en el prompt y di qué hay que conservar de ella.
Límites que hacen fallar una petición
- Más de 30 imágenes, 10 vídeos o 10 pistas de audio, o vídeos de referencia de más de 30 segundos en total: se rechaza al enviarla, no se trunca.
- Un prompt de más de 11,000 caracteres.
- Una duración fuera del rango de 4 a 30 segundos, o una relación de aspecto distinta de las cinco anteriores (21:9 no está disponible).
- Contenido que rechaza el control de moderación. Las fotos de personas reales pueden rechazarse; los personajes que generes tú mismo, incluidos los fotorrealistas, sirven como referencias.
Cada uno de estos casos devuelve un error legible, y un trabajo que falla después del envío se reembolsa íntegramente.
Cuánto tarda un render
Se cuentan las peticiones reales de clientes. No se cuentan nuestras propias pruebas, las peticiones rechazadas por errores del cliente (4xx) ni el contenido que el modelo se negó a generar. Las llamadas fallidas nunca se cobran. Se actualiza cada 10 minutos.
Los clips más largos y de mayor resolución tardan más, y también las horas de más carga. Guarda el id del trabajo y consúltalo; no lo reenvíes, porque cada envío es un trabajo nuevo de pago. Un render que no termina a tiempo acaba como fallido, con el motivo en error, y se reembolsa íntegramente.
Preguntas frecuentes
¿Cuánto cuesta la API de Seedance 2.5?
¿Cuánto puede durar un vídeo de Seedance 2.5?
¿Seedance 2.5 admite imagen a vídeo?
¿Puedo usar un vídeo o un audio de referencia?
¿Cuánto tarda un render de Seedance 2.5?
¿Está disponible 1080P?
La misma clave compatible con OpenAI sirve para todos los demás modelos de chat, imagen y vídeo de NezhaGate. Pago por uso; los trabajos fallidos se reembolsan por completo.
Obtener clave API Probar en el Playground Comparar proveedores