HiAPI
Blog

Tutorial

¿Cómo usar la API de imagen a video de LTX 2.5 Fast? Haz que las imágenes estáticas se muevan

Primer fotograma (opcionalmente con fotograma final) a video de 2–20 segundos: ejemplos en curl/Python, uso de fotogramas inicial y final, y tabla de parámetros.

Oct 23, 2026
¿Cómo usar la API de imagen a video de LTX 2.5 Fast? Haz que las imágenes estáticas se muevan

TL;DR

  • LTX 2.5 Fast Image to Video (ltx-2.5-fast/image-to-video) hace que las imágenes estáticas se muevan: sube 1 imagen de primer fotograma (puedes añadir 1 más de fotograma final), genera un video de 2–20 segundos en 720p / 1080p con audio nativo. Abre la página del modelo, sube una imagen y pruébalo; los nuevos usuarios reciben 200 créditos al registrarse.
  • El precio sigue la misma regla que texto a video: 720p a $0.043 por segundo, 1080p a $0.086 por segundo, facturado según los segundos de duration; el interruptor de audio no afecta el precio.
  • La llamada se hace a través del endpoint /v1/tasks de HiAPI: image_urls recibe 1–2 imágenes (primer fotograma / primer fotograma + fotograma final); tras el éxito, obtén el video desde output.

Qué puede hacer

  • Animar el primer fotograma: una foto estática + una descripción de movimiento; el sujeto se mantiene igual mientras se añaden movimiento, cámara y sonido.
  • Primer fotograma + fotograma final: sube dos imágenes y el modelo completa la transición del primer al último fotograma (por ejemplo, de una cabaña de día a una cabaña en una noche estrellada).
  • Formato vertical: el formato de salida lo determina aspect_ratio (16:9 / 9:16); se recomienda que coincida con el del primer fotograma para evitar recortes o bordes.
  • Texto a video de la misma serie: para generar desde cero, consulta la guía de integración de texto a video; las reglas de precio de ambos endpoints son idénticas.

Este es un resultado real (foto estática de un faro → plano de 6 segundos con sonido):

Waves crash against the rocks below the lighthouse, seagulls glide across the golden sky, the camera slowly pushes in, sound of surf and gulls

(En español: las olas rompen contra las rocas bajo el faro, las gaviotas se deslizan por el cielo dorado, la cámara avanza lentamente, sonido del oleaje y las gaviotas. El primer fotograma usa la foto del faro incluida en los materiales; parámetros: 720p, 6 segundos, 16:9.)

→

ltx-2.5-fast/image-to-video, 720p, 6 segundos, 16:9, 1280×720, con sonido, $0.258.Ver el video completo →

Generar con este prompt →

Cómo enviar el primer fotograma / primer y último fotograma

Entrada image_urls Efecto
1 imagen ["imagen del primer fotograma"] Se anima a partir de esta imagen, el sujeto no cambia
2 imágenes ["imagen del primer fotograma", "imagen del fotograma final"] Transición del primer al último fotograma; el modelo completa el proceso intermedio

Las imágenes pueden ser direcciones públicas JPG / PNG / WebP; se recomienda que las dos imágenes tengan el mismo formato y que aspect_ratio se configure igual que el del primer fotograma.

Dos formas de empezar

3 pasos en el navegador: abre la página del modelo → sube el primer fotograma y escribe la descripción del movimiento → haz clic en generar y previsualiza el resultado directamente.

3 pasos con la API: POST /v1/tasks para enviar → obtén el taskId → consulta con GET /v1/tasks/<taskId> hasta obtener success y descarga.

curl: la primera llamada (un solo primer fotograma)

curl -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: your-unique-key-001" \
  -d '{
  "model": "ltx-2.5-fast/image-to-video",
  "input": {
    "prompt": "Waves crash against the rocks below the lighthouse, seagulls glide across the golden sky, the camera slowly pushes in, sound of surf and gulls",
    "image_urls": ["https://static.hiapi.ai/gallery/2026/10/0ca26560398eae72.jpg"],
    "resolution": "720p",
    "duration": 6,
    "aspect_ratio": "16:9"
  }
}'

Primer y último fotograma (cabaña de día → cabaña en noche estrellada): solo cambia image_urls:

curl -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "ltx-2.5-fast/image-to-video",
  "input": {
    "prompt": "Time passes from bright winter day to starry night, the sky darkens, the cabin windows light up warmly and smoke rises from the chimney, an aurora appears, fixed camera",
    "image_urls": [
      "https://static.hiapi.ai/gallery/2026/10/7756ea1a228b0b88.jpg",
      "https://static.hiapi.ai/gallery/2026/10/16e267619aa1b003.jpg"
    ],
    "resolution": "720p",
    "duration": 5,
    "aspect_ratio": "16:9"
  }
}'

Python: enviar, consultar y descargar

import time, uuid, requests

BASE = "https://api.hiapi.ai/v1/tasks"
HEADERS = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
}

payload = {
    "model": "ltx-2.5-fast/image-to-video",
    "input": {
        "prompt": "Waves crash against the rocks below the lighthouse, seagulls glide across the golden sky, the camera slowly pushes in, sound of surf and gulls",
        "image_urls": ["https://example.com/your-first-frame.jpg"],
        "resolution": "720p",
        "duration": 6,
        "aspect_ratio": "16:9",
    },
}

resp = requests.post(
    BASE,
    headers={**HEADERS, "Idempotency-Key": str(uuid.uuid4())},
    json=payload,
    timeout=30,
)
resp.raise_for_status()
task_id = resp.json()["taskId"]

while True:
    task = requests.get(f"{BASE}/{task_id}", headers=HEADERS, timeout=30).json()
    print(task["status"])
    if task["status"] in ("success", "fail"):
        break
    time.sleep(5)

if task["status"] == "success":
    video = next(o for o in task["output"] if o.get("type") == "video")
    mp4 = requests.get(video["url"], timeout=120)   # 临时地址,尽快保存
    with open("output.mp4", "wb") as f:
        f.write(mp4.content)
    print("saved output.mp4")

Tabla de parámetros

Campo Obligatorio Valores Descripción
image_urls Sí 1–2 direcciones públicas La 1.ª es el primer fotograma; la 2.ª es el fotograma final (JPG/PNG/WebP)
prompt Sí 1–5000 caracteres Describe movimiento, cámara y sonido; no repitas lo que ya aparece en la imagen
resolution No 720p / 1080p, por defecto 720p El precio de 1080p por segundo es aproximadamente el doble que el de 720p
duration No 2/3/4/5/6/8/10/12/14/16/18/20, por defecto 6 Valores enumerados
aspect_ratio No 16:9 / 9:16, por defecto 16:9 Se recomienda que coincida con el del primer fotograma para evitar recortes o bordes
generate_audio No Por defecto true Audio nativo; desactívalo si vas a añadir música en posproducción

Si el cuerpo de la solicitud incluye campos que no están en la tabla, devuelve 400 directamente.

Errores que encontrarás

Código de estado Significado Cómo resolverlo
400 INVALID_REQUEST Cuerpo de solicitud inválido (falta image_urls o prompt, se enviaron 3 imágenes, duration no es un valor enumerado) Corrige el cuerpo según la tabla de parámetros
402 INSUFFICIENT_QUOTA Saldo insuficiente (no se cobra) Recarga y vuelve a intentarlo
429 RATE_LIMITED Se activó el límite de frecuencia Reduce la frecuencia de envío
409 / 422 IDEMPOTENCY_KEY_* Reenvío con la misma clave de idempotencia Usa un nuevo Idempotency-Key

Si la tarea termina en estado de fallo, también puede devolver CONTENT_POLICY_VIOLATION, TASK_FAILED, TASK_TIMEOUT, etc.; los fallos no se cobran.

Antes de salir a producción

  • Callback: las tareas de video tardan; pasa en el nivel superior del cuerpo "callback": {"url": "https://..."} para ahorrarte el sondeo.
  • Guarda el video cuanto antes: la dirección del video en output es temporal; descárgalo en cuanto lo obtengas.
  • Mismo formato en primer y último fotograma: si la proporción de las dos imágenes difiere demasiado, la transición se deforma con facilidad; configura aspect_ratio igual que el del primer fotograma.
  • Si vas a añadir música en posproducción: pasa generate_audio como false para obtener una imagen limpia; el precio no cambia.
  • La calidad del primer fotograma determina la del resultado: un primer fotograma borroso o de baja resolución no se verá más nítido al animarse; usa primero una imagen grande y nítida y luego deja que el modelo añada el movimiento.

Preguntas frecuentes

  • Sí, máximo 2 imágenes: 1 primer fotograma, o primer y último fotograma; una tercera devuelve 400.
  • Sí, el formato no se adapta a la imagen: lo determina aspect_ratio, así que se recomienda configurarlo manualmente igual que el del primer fotograma.
  • Sí, el precio es igual que el de texto a video: 720p a $0.043 por segundo; 6 segundos cuestan $0.258.
  • Sí, la transición al fotograma final va bien para el «paso del tiempo»: de día a noche, de una escena vacía a una escena llena de productos; basta con dos imágenes y un prompt.
  • Sí, animar imágenes de producto es su punto fuerte: usa la imagen principal del producto como primer fotograma y escribe en el prompt el movimiento de cámara (orbit, push in) y elementos decorativos; obtendrás un video de presentación.
  • Sí, fotos verticales con 9:16: salida de 720×1280, lista para publicar en plataformas de video corto; para fotos horizontales, mantén 16:9.

Siguiente paso: toma una imagen de tu producto y anímala en la página del modelo; para los cuatro escenarios de imagen a video, consulta la guía completa de prompts.

Artículos relacionados

Ver todos los artículos →

Empieza a crear con artefactos de IA persistentes

Consigue tu API key y llama a modelos de imagen, vídeo y audio a través de una única API basada en tasks.

Leer la documentación de la API