01
Una relación de aspecto que no encaja sale cara en silencio
Si la referencia es 1:1 y pides un clip 16:9, el endpoint tiene que enmarcar, recortar o estirar. Ajusta la referencia al aspect_ratio o la resolution que vas a pedir antes de enviar.
Guía de integración
Imagen a vídeo elimina la variable más difícil —qué aspecto tiene la escena— y la sustituye por otra más estrecha: cómo debe moverse. El fotograma de referencia hace casi todo el trabajo, por eso la indicación no rescata una referencia floja.

El reto
Los endpoints de movimiento heredan todo del primer fotograma: encuadre, luz, relación de aspecto, artefactos. Una referencia blanda o mal recortada produce un clip blando y mal recortado, y se paga a tarifa de vídeo.
01
Si la referencia es 1:1 y pides un clip 16:9, el endpoint tiene que enmarcar, recortar o estirar. Ajusta la referencia al aspect_ratio o la resolution que vas a pedir antes de enviar.
02
Donde se declara last_image_url, dar ambos extremos define principio y final en lugar de una deriva abierta. Donde no se declara, enviarlo es un 400.
03
movement_amplitude, camera_fixed, fps y duration_seconds aparecen según el endpoint, y el esquema marca cuáles mueven la tarifa. No hay debajo un vocabulario de movimiento compartido.
El enfoque
Haz el trabajo de imagen fija en un endpoint de imagen, donde una iteración cuesta céntimos, fija el fotograma y solo entonces paga el movimiento. Pasar una subida spicy:// confirmada mantiene la referencia idéntica byte a byte entre intentos, así que una repetición parte exactamente de los mismos píxeles.
El cuerpo es una llamada de creación con campo de imagen. El seguimiento es idéntico al de cualquier otra tarea de medios.
POST /api/v1/jobs/createTask
POST /api/v1/jobs/createTask
Authorization: Bearer $SPICY_API_KEY
Idempotency-Key: 7b1f0c2e-9a4d-4f31-8c67-2b5e0d9a1c44
Content-Type: application/json
{
"model": "<publisher>/<model>/image-to-video",
"input": {
"prompt": "Slow push-in, fabric moving in a light breeze",
"image_url": "https://example.com/reference.png",
"duration_seconds": 5,
"resolution": "720p"
},
"callBackUrl": "https://example.com/hooks/spicyapi"
}202 Accepted
HTTP/1.1 202 Accepted
Location: /api/v1/jobs/recordInfo?taskId=job_01k3m8x9q2z4v7n5p6r8s0t1w3
{
"code": 200,
"msg": "success",
"request_id": "req_example_create",
"data": {
"taskId": "job_01k3m8x9q2z4v7n5p6r8s0t1w3",
"state": "queued",
"estimatedCost": "0.750000"
}
}Contrato
| Campo o cabecera | Valor o límite |
|---|---|
| image_url · last_image_url | declared per endpoint |
| POST /api/v1/jobs/retry | new task · source record untouched |
| state | queued · running · succeeded · failed · expired |
| audio / video upload | ≤ 100 MiB · ≤ 600 s |
Desliza horizontalmente para ver todas las columnas.
Integración
Encaje
Comprobaciones
URL HTTPS, subidas spicy:// confirmadas y data URI incrustadas funcionan igual en endpoints de imagen y de vídeo, con los mismos límites y las mismas comprobaciones de admisión.
POST /api/v1/jobs/retry construye una tarea a partir de otra fallida o caducada y reevalúa esquema, precio, permisos y disponibilidad. El registro original queda intacto.
queued, running, succeeded, failed, expired. Las mismas cinco palabras describen cada endpoint de medios, así que la lógica de transición se escribe una vez.
Antes del lanzamiento
Preguntas frecuentes
Modelos
Cada enlace abre la página de esa familia de modelos: entradas, límites, política de contenido y el precio actual por unidad.
Siguiente paso
Convierte una imagen de referencia en un clip. Qué hacen la calidad del primer fotograma, la relación de aspecto, los campos de movimiento y la duración.