使用ガイド
Veo 3.1 Lite 画像から動画生成:hiapi API で写真をショート動画に変える
ステップごとの画像から動画生成ワークフロー、実際の料金、すぐに実行できる API のサンプル。
まず結論から
- これは何か:hiapi API 上の veo-3.1-lite/image-to-video を使って、1 枚の静止写真をネイティブ音声付きの縦型ショート動画クリップに変える、実際のエンドツーエンドのワークフローです。このページのすべての画像、すべてのプロンプト、すべての API 呼び出しは、示されたリクエストの実際の出力です。
- なぜショート動画コンテンツには画像から動画生成が向いているのか:静止画像の段階で構図、ブランド表現、商品のフレーミングを完全にコントロールし、その後でモデルに動きと環境音を加えさせることができます——テキストから動画生成のプロンプトがたまたま望みどおりのカットを生成してくれることを期待する必要はありません。
- 検証済みの API 仕様:このタスクはちょうど 5 つの入力フィールドを受け付けます——
prompt、image_url(配列ではなく単一の公開 URL)、duration(4、6、8 秒)、resolution(720pまたは1080p)、そしてgenerate_audio(ブール値)。スキーマは厳格で、その他のフィールドはすべて拒否されます。 - 実際のコスト:4 秒 720p のネイティブ音声付きクリップは $0.40($0.10/秒)です。音声をオフにすると $0.24($0.06/秒)に下がります。最新の料金は pricing をご覧ください。
- 実際のレンダリング時間:下に埋め込まれた 4 秒のクリップは、タスク送信からダウンロード可能なファイルになるまでおよそ 55 秒かかりました。
なぜショート動画コンテンツには画像から動画生成が向いているのか
TikTok や Reels 風のクリップの成否は最初のフレーム、つまり人々がクリックするかどうかを決めるサムネイルにかかっています。テキストから動画生成は構図において賭けです。シーンを記述し、モデルが必要とするようにフレーミングしてくれることを期待します。画像から動画生成はこれを逆転させます。まず静止画で正確なカット——商品の配置、光、アスペクト比——を固定し、その後で動きだけをモデルに任せます。カメラが固定されたまま、何がなびき、湯気が立ち、波紋が広がり、わずかに動くのかを指定するのです。
この役割分担こそが veo-3.1-lite/image-to-video の用途です。写真と動きのプロンプトを渡すと、9:16 をネイティブサポートし、同期音声付きの MP4 を返します。動画エディターには一切触れる必要はありません。
デモ:1 枚の静止写真が、動き出す
内容をより具体的にするため、シンプルな被写体で自分たちでフロー全体を走らせました。アイス抹茶ラテを、ドリンクのレシピやカフェのアカウントが縦型フィード向けに撮影するであろう構図で捉えたものです。
ステップ 1——ソース写真

この静止画は gpt-image-2/text-to-image で 9:16 のアスペクト比で、以下の正確なプロンプトを使って生成しました:
A vertical 9:16 studio product photograph of an iced matcha latte in a clear glass
on a white marble countertop, visible ice cubes and vivid green matcha layered against
milk, soft warm morning sunlight streaming in from the left casting a long soft shadow,
a small bamboo matcha whisk and a light wooden scoop with loose matcha powder resting
beside the glass, fine condensation droplets on the glass exterior, a blurred
cream-and-beige kitchen background with shallow depth of field, warm natural color
grade, high-resolution commercial beverage photography, no text, no watermark,
no hands, no logos
公開 URL であればどの静止画でもかまいません——実際の商品写真、スクリーンショット、あるいはここでのように AI で生成した静止画でも構いません。
ステップ 2——動かす
これが実際の出力です——上の静止画と以下の動きのプロンプトから生成された、4 秒、720p、9:16 の同期音声付き MP4 です:
Camera holds a slow, steady static shot with no camera movement or zoom. Gentle
wisps of steam rise from the iced matcha latte, fine condensation droplets slowly
trickle down the glass, and the ice cubes shift subtly with a soft clink. Warm
morning sunlight flickers gently as if from a light breeze outside a nearby window.
Soft ambient cafe background sound with a faint ceramic clink and quiet room tone.
このプロンプトが被写体そのものをほとんど記述していないことに注目してください——写真がすでにそれを定義しています。何が動き、何が聞こえるべきかだけを記述しているのです。これこそが、すでに構図の決まったカットに対してテキストから動画生成ではなく画像から動画生成を使うことの意義のすべてです。
API 呼び出しの実行
内部的には、hiapi 上のすべてのモデル——画像でも動画でも——は同じ非同期タスクパターンを通ります。送信、ポーリング、ダウンロードです。veo-3.1-lite/image-to-video の場合、リクエストは次のようになります:
curl -s -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1-lite/image-to-video",
"input": {
"prompt": "Camera holds a slow, steady static shot with no camera movement or zoom. Gentle wisps of steam rise from the iced matcha latte...",
"image_url": "https://your-cdn.example.com/still.jpg",
"duration": 4,
"resolution": "720p",
"generate_audio": true
}
}'
これで taskId が即座に返ります。ステータスが success になるまでポーリングし、output[0].url からファイルを取得します——このリンクは期限切れになるので、直接リンクするのではなく、すぐにダウンロードしてください:
import subprocess, json, time
def animate_still(token, image_url, prompt, duration=4, resolution="720p", audio=True):
def curl(args):
r = subprocess.run(
["curl", "-s", "--max-time", "60", *args,
"-H", f"Authorization: Bearer {token}"],
capture_output=True, check=True,
)
return json.loads(r.stdout)
payload = {
"model": "veo-3.1-lite/image-to-video",
"input": {
"prompt": prompt,
"image_url": image_url,
"duration": duration,
"resolution": resolution,
"generate_audio": audio,
},
}
task = curl(["-X", "POST", "https://api.hiapi.ai/v1/tasks",
"-H", "Content-Type: application/json",
"-d", json.dumps(payload)])
task_id = task["data"]["taskId"]
while True:
status = curl([f"https://api.hiapi.ai/v1/tasks/{task_id}"])["data"]
if status["status"] in ("success", "fail"):
break
time.sleep(5)
if status["status"] != "success":
raise RuntimeError(status.get("error"))
return status["output"][0]["url"] # download immediately — this link expires
これは hiapi 上のあらゆるタスクベースのモデルで文書化されているパターンと同じであり、上のクリップをレンダリングするのにも使ったパターンです。
スキーマが実際に受け付けるもの
実際のエンドポイントに対して手動で検証したので、推測ではなく事実として扱ってください:
prompt——文字列、動き(generate_audioがオンの場合は音声も)を記述します。image_url——単一の公開 URL。プラットフォーム上の他の一部の i2v モデルが使う配列ではありません——ここでリストを渡すと失敗します。duration——整数、4、6、または8秒のみ。他の値は受け付けられません。resolution——"720p"または"1080p"。generate_audio——ブール値。ネイティブ同期音声をオンまたはオフにします。- スキーマは厳格です。認識できないフィールドを送ると、リクエストは黙って無視されるのではなく、直接拒否されます。
1 本のクリップに実際いくらかかるのか
料金は出力秒数に基づいて計算され、解像度と音声の有効/無効によって決まります(2026 年 9 月時点——大規模な予算を組む前に最新の料金ページを確認してください):
720p音声あり:$0.10/秒——4 秒クリップで $0.40。720p音声なし:$0.06/秒——同じクリップで $0.24 に下がります。1080p音声あり:$0.14/秒。1080p音声なし:$0.10/秒。
ショート動画コンテンツのカレンダーにとって、この計算こそが本当のレバレッジです。4 秒 720p 音声付きのクリップ 10 本のバッチはおよそ $4.00 かかります。同じバッチを音声なしにすると $2.40 です。サウンドデザインが投稿にとって重要なら(カフェの環境ノイズ、商品の触感のあるカチッという音、足音)、音声はオンのままにしてください——これがデモクリップと、その場で撮影されたかのような作品との違いです。
1 本あたり 8 秒を超える長さが必要な場合、またはより長い尺でカメラワークを独立してコントロールしたい場合、hiapi は veo-3.1-fast(より高い忠実度、$0.25/秒から)とフラッグシップの veo-3.1 ティア($0.57/秒から)も提供しています——どちらもテキストから動画生成と画像から動画生成をサポートします。ただし、ほとんどのショート動画ソーシャル編集には lite が正しいデフォルトです。コストはほんの一部で、出力はすでに縦型で 10 秒以内のクリップに調整されています。
同じショート動画の課題に対する別のアプローチ——より長いクリップ、最初/最後のフレームへのより手動的なコントロール——については、seedance-2.0-mini でショート動画ワークフローを構築する際の計算も行いました。こちらは写真からネイティブ音声を生成する代わりに、最大 15 秒の尺とより低い秒単価を実現します。
よくある質問
veo-3.1-lite/image-to-video は複数の参照画像を受け付けますか?
いいえ。image_url は単一の公開 URL のみを受け付けます。複数の参照画像を融合できるモデルが必要な場合、それは別の呼び出しです——ここと同じだと仮定する前に、そのモデル自身のページで正確な入力スキーマを確認してください。
1 回の呼び出しで 8 秒を超えるクリップは得られますか?
lite ではできません。duration フィールドは 4、6、または 8 のみを受け付けます。より長い単一動画が必要な場合は、プラットフォームの動画 API コレクションにある他の動画モデルをご覧ください。そのうち複数が 15 秒を超える尺をサポートしています。
出力にはすでにネイティブ音声が付いていますか、それとも後で音声を追加する必要がありますか?
generate_audio が true の場合、返される MP4 には同期された AAC 音声トラックがすでに含まれています——別途サウンドデザインの工程は不要です。クリップに自分で音楽を付けたい場合や環境音が不要な場合は、false に設定してください。
動画モデルは本当に必要ですか、それとも gpt-image-2 の出力をそのまま公開できますか?
多くのショート動画フィードは静止画と動画のコンテンツを混在させているので、gpt-image-2/text-to-image で生成した静止画自体が立派な投稿になります。画像から動画生成は、プラットフォーム(またはその場の状況)が動きを必要とするときに——撮り直しなしで——商品ディテール、微妙なビフォーアフター、ループなどを実現するのに適しています。
無効な duration(例えば 5)を渡すとどうなりますか?
タスクが作成される前にリクエストが拒否されます——レンダリングを無駄にするのではなく、すぐにスキーマエラーを受け取ります。
試す準備はできましたか?veo-3.1-lite/image-to-video モデルページにはライブのプレイグラウンドがあり、コードを 1 行も書く前に自分の写真とプロンプトを投入できます。