HiAPI
ブログ

チュートリアル

LTX 2.5 Fast のイメージ・トゥ・ビデオ API の使い方?静止画を動かす

始点フレーム(終点フレームも追加可)から 2〜20 秒の動画へ:curl/Python の例、始点・終点フレームの使い方とパラメータ表。

Oct 23, 2026
LTX 2.5 Fast のイメージ・トゥ・ビデオ API の使い方?静止画を動かす

TL;DR

  • LTX 2.5 Fast Image to Video(ltx-2.5-fast/image-to-video)は静止画を動かします:始点フレーム画像を 1 枚(さらに終点フレームを 1 枚追加可)アップロードすると、2〜20 秒の 720p / 1080p 動画をネイティブ音声付きで生成します。モデルページを開くと画像を 1 枚アップロードするだけで試せ、新規ユーザー登録で 200 クレジットが付与されます。
  • 価格はテキスト・トゥ・ビデオと同じルール:720p は毎秒 $0.043、1080p は毎秒 $0.086 で、duration の秒数で課金されます。音声のオン・オフは価格に影響しません。
  • 呼び出しは HiAPI の /v1/tasks エンドポイント経由:image_urls に画像を 1〜2 枚(始点フレーム / 始点+終点フレーム)渡し、成功後 output から動画を取得します。

できること

  • 始点フレームを動かす:1 枚の静止写真 + 1 文の動きの説明で、画面の被写体はそのままに、動き・カメラワーク・音を加えます。
  • 始点フレーム + 終点フレーム:画像を 2 枚渡すと、モデルが始点フレームから終点フレームへの遷移過程を補完します(例:昼の小屋から星空の小屋へ)。
  • 縦動画に追従:出力のアスペクト比は aspect_ratio で決まり(16:9 / 9:16)、始点フレームと一致させることを推奨します。切り抜きや余白を避けるためです。
  • 同シリーズのテキスト・トゥ・ビデオ:ゼロから生成する場合はテキスト・トゥ・ビデオ導入ガイドをご覧ください。2 つのエンドポイントの価格ルールは完全に同じです。

以下は実際の完成動画です(静止した灯台の写真 → 6 秒の音声付き映像):

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

(日本語の意味:波が灯台の下の岩に打ち寄せ、カモメが金色の空を滑り、カメラがゆっくりと寄っていく。波とカモメの音。始点フレームには素材の灯台写真を使用。パラメータ:720p、6 秒、16:9。)

→

ltx-2.5-fast/image-to-video、720p、6 秒、16:9、1280×720、音声あり、$0.258。完成動画を見る →

このプロンプトで生成する →

始点フレーム / 始点 + 終点フレームの渡し方

入力 image_urls 効果
1 枚 ["始点フレーム画像"] この画像から動き始め、被写体は変わらない
2 枚 ["始点フレーム画像", "終点フレーム画像"] 始点フレームから終点フレームへ遷移し、モデルが中間過程を補完する

画像は JPG / PNG / WebP の公開 URL に対応しています。2 枚の画像はアスペクト比を揃え、aspect_ratio は始点フレームと同じに設定することを推奨します。

2 つの導入ルート

ブラウザで 3 ステップ:モデルページを開く → 始点フレーム画像をアップロードし、動きの説明を書く → 生成をクリック。完成後そのままプレビューできます。

API で 3 ステップ:POST /v1/tasks で送信 → taskId を取得 → GET /v1/tasks/<taskId> で success を確認してダウンロード。

curl:1 本目(始点フレームのみ)

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

始点フレーム + 終点フレーム(昼の小屋 → 星空の小屋)は 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:送信、ポーリング、ダウンロード

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)   # 一時 URL なので早めに保存
    with open("output.mp4", "wb") as f:
        f.write(mp4.content)
    print("saved output.mp4")

パラメータ表

フィールド 必須 値 説明
image_urls はい 公開 URL 1〜2 枚 1 枚目が始点フレーム、2 枚目が終点フレーム(JPG/PNG/WebP)
prompt はい 1〜5000 文字 動き、カメラワーク、音を説明する。すでに画面にあるものは繰り返し説明しなくてよい
resolution いいえ 720p / 1080p、デフォルト 720p 1080p の毎秒価格は 720p の約 2 倍
duration いいえ 2/3/4/5/6/8/10/12/14/16/18/20、デフォルト 6 列挙値
aspect_ratio いいえ 16:9 / 9:16、デフォルト 16:9 始点フレームと一致させることを推奨。切り抜きや余白を避けるため
generate_audio いいえ デフォルト true ネイティブ音声。後から自分で音楽を付ける場合はオフにする

リクエストボディに表にないフィールドが含まれると、そのまま 400 になります。

遭遇するエラー

ステータスコード 意味 対処方法
400 INVALID_REQUEST リクエストボディが不正(image_urls または prompt の欠落、画像 3 枚の送信、duration が列挙値でない) パラメータ表に照らしてリクエストボディを修正する
402 INSUFFICIENT_QUOTA 残高不足(課金なし) チャージ後に再試行
429 RATE_LIMITED レート制限に抵触 送信頻度を下げる
409 / 422 IDEMPOTENCY_KEY_* 同一冪等キーでの重複送信 新しい Idempotency-Key に変更する

タスクの終端状態での失敗には CONTENT_POLICY_VIOLATION、TASK_FAILED、TASK_TIMEOUT などがあります。失敗時は課金されません。

公開前の注意点

  • コールバック:動画タスクは時間がかかるため、リクエストボディのトップレベルに "callback": {"url": "https://..."} を渡すとポーリングを省けます。
  • 早めに転送保存:output 内の動画 URL は一時的なので、取得したらすぐダウンロードしてください。
  • 始点・終点フレームのアスペクト比を揃える:2 枚の比率が大きく異なると遷移が歪みやすくなります。aspect_ratio は始点フレームと同じに設定してください。
  • 後から自分で音楽を付ける:generate_audio に false を渡すとクリーンな映像が得られ、価格は変わりません。
  • 始点フレームの品質が完成映像の品質を決める:ぼやけていたり解像度が低すぎる始点フレームは、動かしても鮮明にはなりません。まず鮮明な大きな画像を用意し、それをモデルに渡して動きを加えましょう。

よくある質問

  • はい、画像は最大 2 枚です:始点フレーム 1 枚、または始点 + 終点フレーム。3 枚目は 400 になります。
  • はい、アスペクト比は画像に追従しません:aspect_ratio で決まるため、手動で始点フレームと一致させることを推奨します。
  • はい、価格はテキスト・トゥ・ビデオと同じです:720p は毎秒 $0.043、6 秒で 1 本 $0.258。
  • はい、終点フレームへの遷移は「時間の経過」表現に最適です:昼から夜へ、空のシーンから商品が並んだシーンへ、2 枚の画像と 1 文のプロンプトで十分です。
  • はい、商品画像を動かすのは得意分野です:商品メイン画像を始点フレームにし、プロンプトにカメラワーク(orbit、push in)と装飾要素を書けば、紹介動画が 1 本出来上がります。
  • はい、縦向き写真には 9:16 を:出力は 720×1280 で、そのままショート動画プラットフォームに投稿できます。横向き写真なら 16:9 のままにしてください。

次のステップ:あなたの商品画像を用意してモデルページで動かしましょう。4 つのイメージ・トゥ・ビデオのシーンはプロンプト大全をご覧ください。

永続的なAIアーティファクトで開発を始める

APIキーを取得して、タスクベースの1つのAPIで画像・動画・音声モデルを呼び出せます。

APIドキュメントを読む