チュートリアル
LTX 2.5 Fast のイメージ・トゥ・ビデオ API の使い方?静止画を動かす
始点フレーム(終点フレームも追加可)から 2〜20 秒の動画へ:curl/Python の例、始点・終点フレームの使い方とパラメータ表。
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 つのイメージ・トゥ・ビデオのシーンはプロンプト大全をご覧ください。
関連記事
すべての記事を見る →-
チュートリアル
HiAPI API で hailuo-2.3-fast/image-to-video を呼び出す方法:curl と Python の実践
高速・低コストな画像から動画へのティアにおける最初の実行可能なリクエスト — モデル ID から MP4 のダウンロードまで
-
チュートリアル
HiAPI APIでhailuo-2.3/text-to-videoを呼び出す方法:curl、Python、実行可能なリクエスト例
-
チュートリアル
HiAPI で Kandinsky 6.0 Pro のテキストto動画を使用する:curl と Python チュートリアル
リクエスト優先の実践デモ:プロンプトから動画クリップへの呼び出しを構築し、リクエストを送信し、完了状態をポーリングし、結果をダウンロードする