Introducción
Seedance 2.5 Spicy imagen a video convierte la imagen que envías en el primer fotograma y la anima hasta por 30 segundos, con sonido en la misma pasada. image_url es el único campo obligatorio; el prompt sirve para dirigir el movimiento, no para justificar el contenido.
Seedance 2.5 Spicy es la variante sin censura ajustada con LoRA y guiada por imagen de la línea Seedance 2.5 de ByteDance, publicada como un único endpoint de imagen a video. El render nativo llega hasta 1080p; el nivel 4K es una pasada extra de reescalado sobre ese render, no una resolución que el modelo produzca por sí mismo.
Funciones y aspectos destacados
El fotograma es el brief
Vestuario, pose, piel, luz y encuadre llegan con la imagen antes de que el prompt diga nada. Por eso el trabajo guiado por imagen supera briefs que una página en blanco no supera, y deja el prompt libre para describir el movimiento.
Treinta segundos y entrega en 4K en un solo endpoint
duration_seconds llega a 30 y resolution a 4k, así que un estilo que funciona en cinco segundos puede generarse largo y grande sin tocar nada más. El nivel 4K reescala el render nativo en 1080p: tarda más y no agrega nada que la pasada nativa no tuviera, así que elígelo cuando una especificación de entrega pida 4K, no para rescatar un fotograma poco nítido.
Elige también el último fotograma
last_image_url fija el último fotograma además del primero. Envía la misma imagen dos veces y el clip empieza y termina en ella, en un loop continuo; envía dos imágenes distintas para una revelación o un cambio de look. Solo se acepta junto con image_url.
Parámetros de la solicitud
| Parámetro | Obligatorio | Descripción |
|---|---|---|
image_url | Sí | Obligatorio, y el único campo que lo es. |
prompt | No | Opcional aquí, y ahí está la gracia: el fotograma de apertura ya fija lo que se ve, así que al prompt solo le toca dirigir el movimiento —la acción, adónde van los ojos, la deri… máximo 5000 caracteres |
last_image_url | No | Fotograma de cierre opcional. Decide en qué imagen aterriza el plano: una transición, un par antes y después, o un bucle que abre y cierra en la misma foto. |
resolution | No | Resolución de salida: 480p, 720p por defecto, 1080p o 4k. |
duration_seconds | No | Duración del clip terminado en segundos enteros, de 4 a 30, 5 por defecto, y la cantidad facturada: el cargo escala directamente con ella. |
generate_audio | No | Si se renderiza una banda sonora nativa sincronizada con la imagen. Activo por defecto. Valor predeterminado: |
seed | No | Seed entera; si la omites, cada tirada saca la suya. Fíjala con todo lo demás constante para juzgar qué cambió realmente un retoque de prompt. |
Precios
| Especificación | Precio |
|---|---|
| $0.216 / segundo |
| $0.432 / segundo |
| $1.08 / segundo |
| $2.16 / segundo |
Casos de uso
Rol y vestuario que otras plataformas rechazan
Parejas de cualquier género, puntos de vista en primera persona y accesorios de rol no se revisan de nuestro lado. Dale a la toma un fotograma inicial y Seedance 2.5 Spicy anima lo que realmente hay en la imagen.
Loops cortos para un feed de pago
Envía la misma imagen como image_url y last_image_url y el clip empieza y termina en la misma imagen, así que corta en un loop continuo. Cuatro segundos en 720p alcanzan para una miniatura del feed; guarda el 4K para la pieza por la que alguien pagó.
Escenas largas armadas por segmentos
La deriva aparece pasados unos diez segundos, así que una escena larga se sostiene mejor como segmentos encadenados que como una sola toma de treinta segundos. Termina cada clip en un fotograma que te guste y úsalo para abrir el siguiente.
Guía de prompts y consejos prácticos
Haz que el fotograma inicial lleve el contenido
Fotografía la imagen o genérala, y resuelve ahí vestuario, pose, luz y encuadre. La resolución no agrega detalle que el fotograma nunca tuvo, y el prompt no puede meter contenido en una imagen que no lo muestra.
Fija la cámara cuando el encuadre importa
El modelo abre o mueve la cámara si el prompt le deja espacio. Cuando el encuadre cerrado es lo importante, dilo con claridad y más de una vez, como hace el ejemplo publicado, y describe una sola acción continua dentro de ese encuadre.
Adapta el ejemplo incluido
El ejemplo publicado usa duration_seconds 5, generate_audio true y resolution 720p.
Her palm drags straight down the fogged glass, carving one long clear streak from the wiped patch to the bottom edge, and her fingertips lift away. She immediately steps forward and leans into that clear streak: her face arrives close to the glass and comes into sharp focus through it, wet skin and lashes clearly visible, water beading and running around her cheek. She holds there, eyes level with the lens, and breathes out against the glass so a small bloom of fog spreads and fades. The framing stays tight on the glass panel the entire time. Do not pull back, do not widen the shot, do not change the camera angle. Running water, muffled room tone, one slow breath.
Una acción continua en un encuadre cerrado, con la cámara fijada de tres maneras distintas; el vapor, la piel y el encuadre vienen de la imagen.
Prueba en 720p y luego escala
Haz un borrador en 720p y cinco segundos para revisar encuadre y movimiento, y luego genera la versión final en 1080p, o en el nivel 4K reescalado cuando la especificación de entrega lo pida. La capa de seguridad propia de Seedance sigue actuando antes de generar: la redacción de besos se rechaza, mientras que un susurro al oído o las frentes juntas pasan, así que pon ese momento en el fotograma.
Inicio rápido de la API
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "bytedance/seedance-2.5-spicy/image-to-video",
"input": {
"duration_seconds": 5,
"generate_audio": true,
"image_url": "https://example.com/reference.png",
"resolution": "720p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
Consulta la referencia de la API para autenticación, el esquema completo, sondeo y gestión de errores.















