使用ガイド
hiapi API を使って gemini-omni-1.1-flash でショート動画を制作する
フラットレートの非同期呼び出し1回で、テキストプロンプトがネイティブ音声付きの完成済み9:16縦型動画になります——以下が実際のワークフローと、レンダリング方法を変えるべき価格設定です。
ショート動画には容赦ない要件が1つだけあります。縦型でなければならず、1秒以内にユーザーを惹きつける必要があり、しかも通常は音声も必要です。ほとんどのテキストtoビデオAPIでは、段階的に組み立てる必要があります——まずクリップを生成し、後処理で音声を追加し、その後9:16に再クロップします。gemini-omni-1.1-flash はこれを hiapi 上の単一の非同期呼び出しに圧縮します。プロンプトを1つ入力すると、環境音声がすでに音声トラックに含まれた完全な9:16動画が出力されます。
このガイドは実際の動画——本文のために生成されたもので、イメージ画像ではありません——に基づいて完全なワークフローを示し、その後価格設定を詳しく分析します。gemini-omni のコストモデルは十分に特殊なので、レンダリング方法を変えるべきだからです。
動画、最初から完成まで
以下はモデルが単一のプロンプトから生成した8秒の1080p動画です。インラインで直接再生できます——縦型で、音声付きです:
これが完全なプロンプトです——そのままコピーして実行できます:
Vertical 9:16 cinematic food close-up: a slow ribbon of golden honey drizzles
onto a short stack of warm pancakes, catching soft morning window light as it
pools and slides down the sides. A single pat of butter melts at the top, faint
steam rising. Shallow depth of field, gentle slow push-in, one continuous shot,
warm cozy color grade. Natural ambient sound: the soft drizzle of honey, a quiet
kitchen room tone, distant birdsong. No people, no text, no logos, no watermark.
その1回のリクエストは、ステレオAAC音声トラック付きの1080×1920のH.264ファイルを返しました——環境音は動画と一緒に生成され、後から重ねられたものではありません。2つのプロンプトの習慣がほとんどの仕事をこなしました:
- 1つの連続ショットを要求する。ショート動画のクリップは単一のビートとして読まれます。中断のないカメラワークを要求することで、モデルが望まないカットポイントを勝手に作るのを防げます。
- 明示的なネガティブ制約を1行書く。
No people, no text, no logos, no watermarkにより画面がクリーンに保たれ、エディタで字幕を追加しやすくなり、後から削除できない焼き込みテキストを避けられます。
なぜショート動画に特に適しているのか
縦型動画の実際のニーズと高度に一致する3つのポイントがあります:
- ネイティブ縦型。
aspect_ratio: "9:16"は一級の入力パラメータなので、16:9のレンダリング結果を黒帯付きの画面にクロップするのではなく、直接縦型で生成できます。 - 音声内蔵。各動画には環境音が付属します。多くのスワイプがミュートで始まるフィードにおいて、実際に音声をオンにする視聴者向けに本物の音声トラックを用意できます——別途の音楽や効果音の工程が不要で、制作ステップを1つ省けます。
- 1つのIDで、すべてのモード。同じ
gemini-omni-1.1-flashID は参照画像、開始・終了フレーム、またはソース動画も受け付けます。テキストのフックで始め、後からまったく同じエンドポイントとキーで製品の静止画やラフカットを送り込めます。
レンダリング方法を変えるべきフラットレートのアルゴリズム
ほとんどの動画APIは秒単位で課金し、解像度が上がるとレートも上がるため、1080pのコストは480pより明らかに高くなります。gemini-omni は違います。動画1本ごとのフラット価格で課金され、最大1080pまでのすべての解像度で価格はまったく同じです——価格を変えるのは動画の長さだけです:
| 動画の長さ | 360p / 720p / 1080p | 4K |
|---|---|---|
| 4秒 | $0.45 | $1.05 |
| 6秒 | $0.60 | $1.20 |
| 8秒 | $0.75 | $1.35 |
| 10秒 | $0.90 | $1.50 |
価格は hiapi のリアルタイム価格ページで確認済みです、2026年10月。参照動画を渡すと課金は1本あたり固定$1.20(最大1080p、または4Kでは$1.80)に切り替わり、長さに関係ありません。
実際の結論はこうです:すべての草稿を1080pでレンダリングする。このモデルでは1080pのコストは360pとまったく同じなので、低解像度でプレビューしてから再レンダリングする理由はありません。4K以外の動画では、請求額に影響する唯一の変数は長さです——つまり規律は画質ではなく長さにあります。1本$0.75で8秒の1080p草稿をバッチ生成し、良いものを残し、本当に公開する重点成片にだけ4Kを使いましょう。
1回のAPI呼び出し
動画の作成はまず POST でタスクを開始し、その後完了までポーリングします。
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer sk-<your-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-omni-1.1-flash",
"input": {
"prompt": "<your prompt>",
"duration": 8,
"resolution": "1080p",
"aspect_ratio": "9:16"
}
}'
タスクIDが返されます:
{"code":200,"data":{"taskId":"tk-hiapi-01M4MJDW91CEF46R26CJJ5NK5N"},"message":"success"}
次に GET /v1/tasks/<taskId> を status が handling → archiving → success に変わるまでポーリングします。完了時のレスポンスボディは動画を output[0].url に格納します:
import time, requests
API = "https://api.hiapi.ai/v1"
H = {"Authorization": "Bearer sk-<your-key>", "Content-Type": "application/json"}
def make_clip(prompt, duration=8, resolution="1080p", ratio="9:16"):
body = {"model": "gemini-omni-1.1-flash",
"input": {"prompt": prompt, "duration": duration,
"resolution": resolution, "aspect_ratio": ratio}}
tid = requests.post(f"{API}/tasks", headers=H, json=body, timeout=30).json()["data"]["taskId"]
while True:
data = requests.get(f"{API}/tasks/{tid}", headers=H, timeout=30).json()["data"]
if data["status"] == "success":
return data["output"][0]["url"]
if data["status"] == "fail":
raise RuntimeError(data.get("error"))
time.sleep(6)
url = make_clip("<your prompt>")
open("clip.mp4", "wb").write(requests.get(url, timeout=120).content)
4つの入力フィールドが重要です:prompt、duration(4、6、8、または10)、resolution(360p、720p、1080p、または 4k)、そして aspect_ratio(16:9 または 9:16)。これらの範囲外の値を渡すと、APIはキューに入れる前にリクエストを拒否します——たとえば誤って 2160p と書くと invalid input: resolution: value must be one of '360p', '720p', '1080p', '4k' が返るため、スペルミスで動画生成を無駄にすることは決してありません。完全なタスクAPIリファレンスは hiapi ドキュメントにあります。
コードで処理する価値のある注意点が1つあります:output[0].url には expireAt タイムスタンプが付いており、永久リンクではありません。タスクが success を報告した瞬間に、ファイルをダウンロードするか自分のストレージにプッシュしてください——一時URLを永続化しないでください。
単発動画ではなくセットをバッチ制作する
ショート動画は量のゲームなので、実際のワークフローはバッチ処理です。各動画は独立したタスクであり、実行途中でクラッシュしても復旧コストが低く抑えられます:プロンプトのハッシュを各タスクのキーとして使い、ダウンロード済みのものをスキップすれば、再起動しても二重課金は絶対に発生しません。
実行可能なループ:
- 1つのテーマを中心に8〜12個のプロンプトバリエーションを書く——異なるアングル、照明、被写体——すべて8秒 / 1080p / 9:16で。
- それらを独立したタスクとしてバッチ送信してポーリングするか、コールバックを登録して結果を能動的に受け取ります。
- セット全体をレビューし、本当に魅力的な2〜3本を残し、その後必要に応じて4Kまたはより長い尺で再レンダリングします——ただし公開先のプラットフォームがそれに見合うリターンをもたらす場合に限ります。
静止画やラフカットが本当の出発点である場合は、同じ gemini-omni-1.1-flash ID に入力します:参照画像で製品の見た目を固定し、開始・終了フレームでトランジションを制御し、またはソース動画でスタイルを描き直します。キーとポーリングのコードは変わりません。input オブジェクトだけが変わります。
比較
gemini-omni のフラットレートにより、音声付きショート動画を最も安く出力する方法となっています——1080pの8秒でわずか$0.75、秒単位の乗数はありません。他のモデルは特定の面で優れています:
- Seedance 2.5 は秒単位で課金され、現在は最大720pですが、30秒の単一ショットまで拡張できます——長さが解像度より重要な場合の選択肢です。
- Kling 3.0 は環境音の上に同期音声を重ね、4Kまで対応します——話すコンテンツやリップシンクコンテンツに適しています。
- Veo 3.1 は、テキストから生成するのではなく既存の静止画をアニメーション化する必要がある場合の画像toビデオの選択肢です。
これら4つはすべて同じ hiapi キーと同じ /v1/tasks エンドポイントで動作するため、切り替えは model の1行を変えるだけです——プロジェクト単位ではなくショット単位で選びましょう。モデルカタログで並べて閲覧できます。
よくある質問
gemini-omni-1.1-flash は本当に音声を含みますか?
はい。このガイドの動画は本物のステレオ音声トラック付きのMP4を返しました——環境音は動画と一緒に生成され、後から追加されたものではありません。プロンプトで音を説明する方法(上記の Natural ambient sound: ... 行など)は、画面を説明するのと同じです。
テストする最も安い方法は何ですか? 4秒の動画は最大1080pまでのどの解像度でも$0.45です。これら3つの解像度は同じ価格なので、1080pでテストしてください——低解像度でプレビューする価格上の理由はありません。
横型動画も作れますか?
はい。aspect_ratio: "16:9" を設定すると横型になります。9:16 はショート動画のデフォルトです。どちらも同じ価格です。
動画は最大でどのくらいの長さにできますか? 1回の生成で4、6、8、または10秒です。より長い編集が必要な場合は、複数の動画を生成してつなぎ合わせるか、参照 / 開始・終了フレーム処理を使ってカットポイント間の連続性を保ちます。
出力URLは永久ですか?
いいえ。output[0].url には expireAt が付いており、使い捨ての配信として扱うべきです——タスクが success を報告したらすぐにダウンロードするか再ホストしてください。
試す準備はできましたか?hiapi コンソールからキーを取得し、自分のプロンプトを上記のcurl呼び出しに入れて、最初の縦型動画を1080pでレンダリングしましょう——小さな解像度でプレビューするか最初からフル解像度にするかにかかわらず、コストは同じ$0.75です。