HiAPI
Blog

Tutoriel

Comment utiliser LTX 2.5 Fast Image to Video API ? Faites bouger une image fixe

La première image (avec éventuellement une dernière image) devient une vidéo de 2 à 20 secondes : exemples curl/Python, usage des première et dernière images et tableau des paramètres.

Oct 23, 2026
Comment utiliser LTX 2.5 Fast Image to Video API ? Faites bouger une image fixe

TL;DR

  • LTX 2.5 Fast Image to Video (ltx-2.5-fast/image-to-video) fait bouger une image fixe : téléchargez 1 image de première frame (vous pouvez en ajouter 1 de dernière frame), générez une vidéo 720p / 1080p de 2 à 20 secondes avec audio natif. Ouvrez la page du modèle et téléchargez une image pour essayer ; les nouveaux utilisateurs reçoivent 200 crédits à l'inscription.
  • Prix identique à la génération texte-vers-vidéo : 720p à 0,043 $/seconde, 1080p à 0,086 $/seconde, facturé selon le nombre de secondes de duration ; l'activation de l'audio n'influence pas le prix.
  • L'appel passe par l'API HiAPI /v1/tasks : image_urls transmet 1 à 2 images (première frame / première frame + dernière frame), puis récupérez la vidéo dans output après succès.

Ce qu'il peut faire

  • Animer la première frame : une photo fixe + une phrase décrivant le mouvement ; le sujet reste inchangé, avec ajout de mouvement, de caméra et de son.
  • Première frame + dernière frame : transmettez deux images, le modèle génère la transition de la première à la dernière frame (par exemple d'une cabane de jour à une cabane sous un ciel étoilé).
  • Format vertical respecté : le format de sortie est déterminé par aspect_ratio (16:9 / 9:16) ; il est recommandé de l'aligner sur la première frame pour éviter le recadrage ou les bandes.
  • Génération texte-vers-vidéo de la même série : pour générer à partir de zéro, consultez le guide d'intégration texte-vers-vidéo ; les règles tarifaires des deux API sont identiques.

Voici une vidéo réelle (photo fixe d'un phare → plan sonore de 6 secondes) :

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

(Signification en chinois : les vagues frappent les rochers sous le phare, les mouettes glissent dans le ciel doré, la caméra avance lentement, sons des vagues et des mouettes. La première frame utilise la photo du phare fournie, paramètres : 720p, 6 secondes, 16:9.)

→

ltx-2.5-fast/image-to-video, 720p, 6 secondes, 16:9, 1280×720, avec audio, 0,258 $.Voir la vidéo complète →

Générer avec ce prompt →

Comment transmettre la première frame / la première + dernière frame

Entrée image_urls Effet
1 image ["image de première frame"] Démarre à partir de cette image, le sujet reste inchangé
2 images ["image de première frame", "image de dernière frame"] Transition de la première à la dernière frame, le modèle génère l'intermédiaire

Les images acceptent des adresses publiques JPG / PNG / WebP ; il est recommandé que les deux images aient le même format, et que aspect_ratio soit défini comme celui de la première frame.

Deux parcours de prise en main

3 étapes dans le navigateur : ouvrez la page du modèle → téléchargez l'image de première frame, rédigez la description du mouvement → cliquez sur générer, puis prévisualisez directement le résultat.

3 étapes via l'API : POST /v1/tasks pour soumettre → récupérez taskId → GET /v1/tasks/<taskId> jusqu'à success, puis téléchargez.

curl : premier appel (première frame seule)

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"
  }
}'

Pour la première + dernière frame (cabane de jour → cabane sous un ciel étoilé), modifiez uniquement 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 : soumettre, interroger, télécharger

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)   # adresse temporaire, à sauvegarder au plus vite
    with open("output.mp4", "wb") as f:
        f.write(mp4.content)
    print("saved output.mp4")

Tableau des paramètres

Champ Obligatoire Valeurs Description
image_urls Oui 1–2 adresses publiques La 1re est la première frame ; la 2e est la dernière frame (JPG/PNG/WebP)
prompt Oui 1–5000 caractères Décrit le mouvement, la caméra et le son ; inutile de répéter ce qui est déjà visible dans l'image
resolution Non 720p / 1080p, 720p par défaut Le prix par seconde en 1080p est environ 2 fois celui de 720p
duration Non 2/3/4/5/6/8/10/12/14/16/18/20, 6 par défaut Valeurs d'énumération
aspect_ratio Non 16:9 / 9:16, 16:9 par défaut Recommandé d'aligner sur la première frame pour éviter le recadrage ou les bandes
generate_audio Non true par défaut Audio natif ; désactivez si vous voulez ajouter votre propre musique en post-production

La présence d'un champ hors tableau dans le corps de la requête renvoie directement une erreur 400.

Erreurs que vous rencontrerez

Code de statut Signification Que faire
400 INVALID_REQUEST Corps de requête invalide (image_urls ou prompt manquant, 3 images transmises, duration hors énumération) Corrigez le corps de la requête d'après le tableau des paramètres
402 INSUFFICIENT_QUOTA Solde insuffisant (aucun débit) Rechargez puis réessayez
429 RATE_LIMITED Limite de débit atteinte Réduisez la fréquence de soumission
409 / 422 IDEMPOTENCY_KEY_* Soumission répétée avec la même clé d'idempotence Utilisez un nouveau Idempotency-Key

L'échec en état final d'une tâche peut aussi renvoyer CONTENT_POLICY_VIOLATION, TASK_FAILED, TASK_TIMEOUT, etc. ; aucun débit en cas d'échec.

À vérifier avant la mise en production

  • Callback : les tâches vidéo sont longues ; transmettez "callback": {"url": "https://..."} au niveau supérieur du corps de la requête pour éviter l'interrogation répétée.
  • Sauvegardez rapidement : l'adresse vidéo dans output est temporaire, téléchargez-la dès réception.
  • Formats des première et dernière frames identiques : si les proportions des deux images diffèrent trop, la transition se déforme facilement ; définissez aspect_ratio comme celui de la première frame.
  • Pour ajouter votre propre musique en post-production : passez generate_audio à false pour obtenir une image propre, sans changement de prix.
  • La qualité de la première frame détermine la qualité de la vidéo : une première frame floue ou de trop faible résolution ne deviendra pas nette en mouvement ; utilisez d'abord une grande image nette, puis laissez le modèle ajouter le dynamisme.

Questions fréquentes

  • Oui, 2 images maximum : 1 première frame ou première frame + dernière frame ; une 3e image renvoie une erreur 400.
  • Oui, le format ne suit pas l'image : il est déterminé par aspect_ratio, il est donc recommandé de le définir manuellement comme celui de la première frame.
  • Oui, le prix est identique à la génération texte-vers-vidéo : 720p à 0,043 $/seconde, 0,258 $ pour 6 secondes.
  • Oui, la transition de dernière frame convient au « passage du temps » : du jour à la nuit, d'une scène vide à une scène remplie de produits, deux images et un prompt suffisent.
  • Oui, animer des images produit est son point fort : prenez l'image principale du produit comme première frame, écrivez dans le prompt les mouvements de caméra (orbit, push in) et les éléments décoratifs, et vous obtenez une vidéo de présentation.
  • Oui, une photo verticale s'accompagne de 9:16 : sortie en 720×1280, directement publiable sur les plateformes de vidéo courte ; pour une photo horizontale, gardez 16:9.

Prochaine étape : prenez une image de votre produit et animez-la sur la page du modèle ; pour les quatre scénarios de génération image-vers-vidéo, consultez le recueil de prompts.

Articles similaires

Voir tous les articles →

Commencez avec des artefacts IA persistants

Obtenez votre clé API et appelez des modèles d'image, de vidéo et d'audio via une API unique basée sur les tasks.

Lire la documentation de l'API