HiAPI
ブログ

チュートリアル

Grok Imagine 1.5 Lite 画像から動画への API の使い方?写真を動かそう

1枚の画像が1〜15秒の音声付き動画に:価格には入力画像料金を含み、アスペクト比は画像に従い、curl/Python のサンプル付き。

Oct 23, 2026
Grok Imagine 1.5 Lite 画像から動画への API の使い方?写真を動かそう

TL;DR

  • Grok Imagine 1.5 Lite Image to Video(grok-imagine-1.5-lite/image-to-video)は画像を1枚アップロードして動かします:1〜15秒、音声効果付き、アスペクト比は入力画像に従う。モデルページを開くと画像を1枚アップロードするだけで試せます。新規ユーザー登録で200クレジット進呈。
  • 価格 = 秒単価 × 秒数 + 1本あたり $0.015 の入力画像料金:720P 6秒で1本 $0.273、480P は $0.189、1080P は $1.215。
  • 呼び出しは HiAPI の /v1/tasks エンドポイント経由:image_url は文字列(配列ではない)で、公開URLをちょうど1枚。

できること

  • 1枚の写真が音声付きのカットになる:動き、カメラワーク、音声効果はプロンプトで記述し、被写体は元画像のまま保たれます。
  • アスペクト比は入力画像に従う:横長画像は16:9(1264×720)、縦長画像は9:16(720×1264)、正方形画像は1:1(960×960)、4:3 は 1104×816——ピクセルは対応サイズに丸められ、比率は変わりません。
  • 1〜15秒の任意の整数秒、3段階の解像度。
  • 同シリーズのテキストから動画:ゼロから生成する場合はテキストから動画への導入ガイドを参照。2つのエンドポイントは同価格(画像からは $0.015 の入力画像料金が追加)、同じ /v1/tasks で、コードの違いは model と image_url だけです。

価格表の読み方:

  • 「秒単価 × 秒数」は動画自体の料金で、テキストから動画とまったく同じです。
  • $0.015 は入力画像の追加料金で、1本あたり固定で、解像度や長さには関係ありません。
  • そのため同じパラメータでは画像からがテキストからより $0.015 高い:720P 6秒なら $0.258 + $0.015 = $0.273。1000本をバッチ処理するとこの差額は $15 になるので、予算に含めておく必要があります。

以下は実際の完成映像です(サーフィンの写真 → 6秒の追従カット、波の音付き):

The wave curls and breaks behind the surfer as he carves down its face, white spray bursts and sparkles in the golden backlight, water rushes past. Smooth tracking camera following the surfer. Loud ocean surf and rushing water. Keep the photo realistic. No text, no logos.

(日本語の意味:波がサーファーの後ろで巻いて砕け、彼が波面を滑り降りると、白いしぶきが金色の逆光の中で弾けて輝く。カメラはサーファーを滑らかに追従する。大きな海の波と水の流れる音。写真のリアルな質感を保つ。文字なし、ロゴなし。)

·

grok-imagine-1.5-lite/image-to-video、720P、6秒、16:9、1264×720、音声効果付き、$0.273($0.015 の入力画像料金を含む)。完成映像を見る →

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

価格:秒単価 + 入力画像料金

プラン 1秒あたり 6秒で1本($0.015 の入力画像料金を含む)
480P $0.029 $0.189
720P(デフォルト) $0.043 $0.273
1080P $0.20 $1.215

HiAPI の現行価格、2026年10月23日確認。 image_url は必須のため毎回この $0.015 がかかります。1080P は1秒 $0.2(約720Pの4.65倍)なので、大量の試行には480Pを。失敗時は課金されません。

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": "grok-imagine-1.5-lite/image-to-video",
  "input": {
    "prompt": "The wave curls and breaks behind the surfer as he carves down its face, white spray bursts and sparkles in the golden backlight, water rushes past. Smooth tracking camera following the surfer. Loud ocean surf and rushing water. Keep the photo realistic. No text, no logos.",
    "image_url": "https://static.hiapi.ai/gallery/2026/10/3f75ff28db9e0070.png",
    "duration": 6,
    "resolution": "720p"
  }
}'

image_url は文字列で、1枚だけ渡す点に注意——配列を渡すと400になります。

Python:送信、ポーリング、ダウンロード

import time, uuid, requests

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

payload = {
    "model": "grok-imagine-1.5-lite/image-to-video",
    "input": {
        "prompt": "The wave curls and breaks behind the surfer as he carves down its face, white spray bursts and sparkles in the golden backlight, water rushes past. Smooth tracking camera following the surfer. Loud ocean surf and rushing water. Keep the photo realistic. No text, no logos.",
        "image_url": "https://example.com/your-image.png",
        "duration": 6,
        "resolution": "720p",
    },
}

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_url はい 文字列、公開URLをちょうど1枚 出力の比率はこの画像に従う
prompt はい 1〜4096文字 希望する動きや変化を記述、音声効果を含む
duration いいえ 1〜15の任意の整数、デフォルト6
resolution いいえ 480p / 720p / 1080p、デフォルト720p

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

遭遇するエラー

ステータスコード 意味 対処方法
400 INVALID_REQUEST リクエストボディが不正(image_url の欠落、image_url を配列で渡す、表外フィールドの指定) image_url は文字列を使う
402 INSUFFICIENT_QUOTA 残高不足(課金されない) チャージ後に再試行
429 RATE_LIMITED レート制限に到達 送信頻度を下げる
409 / 422 IDEMPOTENCY_KEY_* 同じ冪等キーでの重複送信 新しい Idempotency-Key に変更

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

本番前の注意

  • コールバック:動画タスクは時間がかかるため、トップレベルに "callback": {"url": "https://..."} を渡すとポーリングを省けます。
  • 早めに転送保存:output 内の動画URLは一時的なので、取得したら自分のストレージにダウンロードして保存してください。一時リンクを素材ライブラリ代わりにしないこと。
  • 同じ画像を繰り返し使える:プロンプトを変えれば新しい1本(新たな課金)になります。同じ商品画像から多角度のカメラワークを揃えたセット素材を素早く作るのに最適です。
  • 計算で $0.015 を忘れずに:バッチ予算は「秒単価 × 秒数 + $0.015 × 本数」で計算。
  • 音声はオフにできない:無音素材が欲しい場合は後工程でカット編集。価格は変わりません。

よくある質問

  • はい、毎回音声効果が付きます:プロンプトに音声効果(波、雪を踏む音)を書けばそれに沿って生成され、オフにするスイッチはありません。
  • はい、アスペクト比は入力画像に従います:16:9 の画像は 1264×720、正方形画像は 960×960 で出力され、ピクセルは丸められ比率は変わりません。
  • はい、image_url は文字列です:1枚のみ。配列や複数枚を渡すと400になります。
  • はい、長さは1〜15の任意の整数秒です:1つの動作なら5〜6秒、一連の連続動作なら10秒以上。
  • はい、入力画像の品質が完成映像の上限を決めます:ぼやけた小さい画像は動かしても鮮明にはなりません。可能な限り720p以上の鮮明な元画像を渡してください。
  • はい、バッチ計算には公式があります:秒単価 × 秒数 + $0.015 × 本数。720P 6秒で100本なら $27.30、1000本なら $273.00。

次のステップ:あなたの写真でモデルページで動かしてみる。4つのシーン例は画像から動画へのプロンプト大全をご覧ください。

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

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

APIドキュメントを読む