最初のPOSTリクエストが10秒で戻り、task_idが返ってきました。成功したように見えました。
その後、6分間何も起こりませんでした。チュートリアルからwhile status != "Success"をコピーしてループを回したところ、このエンドポイントはもうSuccessという単語を返さないため、ループが回り続けました。そこでウェブフックに切り替えましたが、プッシュは一つも届かず、理由もわかりませんでした。翌朝、昨日のレンダリングを確認しようとするとリンクは404でした。
これら4つのことは無関係に見えます。どれもモデルのせいではありません。すべては非同期契約のせいであり、ほとんど誰もそれを文書化していません。以下にその契約全体と、実際に生成された1つの2ショット短編映画を示します。
重要なポイント
- 3つのエンドポイント、1つのループ:createは
task_idを返して切断し、ポーリングしてダウンロードします。すべての難しい処理はcreate呼び出しの後に行われます。 - 実際の5つのステータスは
queued、running、succeeded、failed、cancelledです。ブログ記事で何と言われようと、expiredステータスは存在しません。 - 期限切れになるものは2つあり、どちらもステータスではありません。ダウンロードURLには時間制限があり、タスクレコード自体は7日間のみ照会可能です。
- コールバックを使用する場合、MiniMaxは最初に
challengeフィールドを含む検証リクエストを送信するため、3秒以内にそのまま返信する必要があります。これに失敗するとエラーはなく、永久に沈黙します。 - テキストのみの生成では、
ratioは必須でadaptiveは使用できません。画像から動画への変換では、最初のフレームがフレームを決定し、渡されたratioは無視されます。
まず完成したもの
このチュートリアルの成果:2つのMiniMax H3ショットを2Kで連結、14.6秒。ショットAは生成された最初のフレームからの画像から動画へ、ショットBはテキストから動画へ。音声をオンにしてください。オーディオは後から重ねたサウンドトラックではなく、H3がギア、雨、ささやき声を同じ生成の一部としてレンダリングしています。
3つのAPI呼び出しでこれを作りました。最初のフレーム用の画像モデルが1つ、ショット用の2つのH3エンドポイント、連結用の1つのffmpegコマンドです。以下のコードがそれを実現したコードです。
なぜほとんどのMiniMax H3チュートリアルは2回目のリクエストで壊れるのか
このモデルのほとんどすべてのガイドはcreate呼び出しで止まります。それは簡単な半分です。create呼び出しはペイロードを検証し、task_idを渡して切断します。その後、あなたは数分かかるジョブと、誰も印刷していない一連のルールと共に一人取り残されます。
失敗は退屈なほど繰り返し発生します。私は1日の午後にこれらの6つのうち5つに遭遇しました。
| 症状 | 見えるもの | 実際の原因 | 修正方法 |
|---|---|---|---|
| ポーリングループが終了しない | ターミナルが永遠に出力し、ジョブはずっと前に終了している | 終了条件をv1のSuccess/Failのような単語と比較している。v2のクエリエンドポイントは小文字のsucceeded/failedを返す | v2のenumと照合し、認識できないステータスはエラーを発生させる |
| テキストから動画で即座に400エラー | レンダリング開始前にリクエストが拒否される | ratioが欠落しているか、adaptiveに設定されている。テキストのみのモードはこれを拒否する | 16:9などの明示的なratioを渡す |
| ratioが黙って無視される | 出力フレームが要求したものと異なる | 画像から動画は最初のフレーム画像からフレームを導出するため、ratioはそこで無効 | 目的のフレームで最初のフレームをクロップまたは生成する |
| ウェブフックが発火せず、エラーもない | プッシュなし、ログはクリーン、APIからの苦情なし | 検証ハンドシェイクに失敗した。MiniMaxがchallengeを送信したが、エンドポイントが3秒以内にそのまま返信しなかった | 認証やキューなどのミドルウェアの前に、同期的にchallengeに応答する |
| 昨日のURLが404 | ダウンロードリンクが無効、レンダリングが消えたように見える | ダウンロードURLは時間制限がある。レンダリング自体は問題ない | 同じtask_idを再度照会して新しいURLを取得する(7日間のウィンドウ内) |
| 負荷時のランダムな429エラー | 一部の送信が拒否され、キューがない | 同時実行数に上限があり、ハードリミットで待機行ではない | 自身の処理中の数を制限し、送信を再試行する(レンダリングは再試行しない) |
最初の行が夜を丸ごと消費する原因で、正確に理解しておく価値があります。MiniMaxの古いビデオAPIは、Preparing / Queueing / Processing / Success / Fail のような大文字の単語で進捗を報告していました。H3が使用するv2クエリエンドポイントは、queued、running、succeeded、failed、cancelledを返します(MiniMax API Reference、2026年8月)。多くのサードパーティのリセラードキュメントはまだ古いセットを印刷しているか、同じページで両方を混在させています。それらのいずれかからループを継承した場合、待機している文字列が送信されないため、ループは終了できません。
MiniMax H3チュートリアルワークフロー:3つのエンドポイント、5つのステータス、1つのループ
H3は2026年7月31日にオムニモーダルビデオモデルとしてリリースされました。テキスト、画像、ビデオ、オーディオすべてが同じコンテキストウィンドウに存在し、最大15秒の2K、ネイティブステレオオーディオを出力します(MarkTechPost、2026年8月)。API的には、1つのcreateエンドポイントにcontent配列があり、その配列に何を入れるかでモードが決まります。
| モード | contentに入れるもの | 画像アイテムのrole | ratioの動作 | 使用目的 |
|---|---|---|---|---|
| テキストから動画 | 1つのテキストアイテム | なし | 必須、adaptiveは拒否される | ソース画像がないショット、フレームの完全な制御 |
| 画像から動画 | テキストアイテムと画像アイテム | first_frame(オプションでlast_frameも) | 無視される、最初のフレームが決定する | 既にアートディレクションした静止画をアニメーション化 |
| 参照から動画 | テキストアイテムと参照アイテム | reference_image(reference_video、reference_audioも) | 必須、テキストのみと同じ | ショット間でキャラクターや声を統一する |
そして、コードが実際に処理しなければならない部分。5つのステータス、5つの異なる分岐。
| ステータス | 意味 | コードの動作 |
|---|---|---|
| queued | 受け入れ済み、スロット待ち | ポーリングを続け、バックオフ |
| running | レンダリング中 | ポーリングを続け、バックオフ |
| succeeded | 完了、content.urlが利用可能 | すぐにダウンロード(このイテレーション内で) |
| failed | レンダリング失敗 | エラーボディを読み取り、ログに記録し、同じペイロードを盲目的に再試行しない |
| cancelled | ジョブがキャンセルされた | ループを抜け、終端状態として扱う |
| その他 | enumにない | エラーを発生させる。新しいステータスを黙って「待機中」と扱うと、上の表のバグになる |
expiredステータスは存在しません。この単語はこのAPIによく関連付けられますが、実際には2つの別のものに属します:ダウンロードURL(時間制限があり更新可能)とタスクレコード(過去7日間のみ照会可能)。両方ともステップ4でカバーします。
コードの前にもう一つ数字を。H3のビデオ生成の同時実行数は、1分あたりのリクエスト数ではなく、接続数で制限されています。無料ティアでは2つの同時タスク、有料になると15です(MiniMax Rate Limits、2026年8月)。制限を超えると即座に429が返されます。キューイングは行われません。私はルーティングゲートウェイを介して20の同時H3ジョブをプッシュし、すべて成功したこともあれば、同じ設定で別の日に429が返されたこともあるため、文書化された上限を超える数値は天候のように扱い、定数と見なさないでください。
直接かゲートウェイ経由か
3つのステップはどちらでも同じですが、文字列が異なり、これが深夜のデバッグで重要になります。
| MiniMax直接 | 統一ゲートウェイ(Atlas Cloud) | |
|---|---|---|
| 送信 | POST /v2/video_generation | POST /api/v1/model/generateVideo |
| ポーリング | GET /v2/query/video_generation/{task_id} | GET /api/v1/model/prediction/{id} |
| ステータス単語 | queued / running / succeeded / failed / cancelled | 成功時はcompleted、失敗時はfailed |
| プッシュ通知 | 3秒のチャレンジハンドシェイク付きコールバックURL | prediction idをポーリング |
| 同時実行数 | 2(無料)、15(有料)、厳格な429 | モデルごとの上限として公開されていない。実際にはより広範囲で測定 |
| 同じキーでの最初のフレーム画像モデル | いいえ、別のアカウント | はい、GPT Image 2とH3は1つのキーの背後にある |
| H3の価格 | 解像度ごとに公開 | 出力秒数あたり、解像度別、送信前にRunボタンで表示 |
このチュートリアルのチェーンをゲートウェイで実行した理由は、純粋に最後から2番目の行のためです。最初のフレームはOpenAIの画像モデルから、2つのショットはMiniMaxから来ており、1つの14秒の映画のために2つのベンダー、2つのキー、2つの請求ページを用意したくなかったからです。すでにMiniMaxのプラットフォーム内にいるなら、そのまま滞在してください。以下のループは、パスとステータス単語以外は変更なく動作します。
Hailuo AIビデオジェネレーター:コードを書く前に使う方法
Hailuo AIビデオジェネレーターの使い方を検索してここにたどり着いたなら、正しい場所にいます。まだコードは必要ありません。HailuoはMiniMaxの消費者向けアプリであり、H3はAPIが使用するモデル名です。同じエンジン、異なる入口です。
3分、ターミナル不要:
- モデルページを開きます。例:MiniMax H3 image-to-video。プレイグラウンドはページの右側のパネルです。
- 最初のフレーム画像をドロップするか、テキストから動画のページに切り替えてプロンプトを書きます。解像度と長さを設定します。見たいものだけでなく、聞きたいものも声に出して言います。H3は同じパスでオーディオを生成するため、「ガラスに当たる雨、小さなサーボのクリック音」は実際の指示であり、飾りではありません。
- Runを押します。ボタンは、コミットする前に選択した設定の正確な料金を表示します。待って、ダウンロードします。
これがノーコードのパス全体で、単発のクリップには本当に速いオプションです。10のバリエーションが必要になったり、別のモデルで生成された最初のフレームを直接入力したい場合には、コードに戻ってきてください。これが残りの部分です。
MiniMax H3チュートリアル:作成、ポーリング、ダウンロード、繰り返し
1つの例が7つのステップすべてを実行します。時計職人が小さな真鍮の機械鳥を修理し、一言ささやき、鳥が工房から飛び立ちます。2つのショット。ショットAは画像から動画で、内部がアートディレクションされています。ショットBはテキストから動画で、空のソースフレームがないためです。
ステップ1:GPT Image 2で最初のフレームを生成する
画像から動画はratioを無視するため、最初のフレームでショットAのフレームを決定します。16:9で最高品質ティアで生成します。H3はその中のすべての欠陥を継承し、その上にモーションブラーを追加するためです。
モデル:openai/gpt-image-2/text-to-image。設定:品質high、2048x1152、16:9、PNG。
text1薄暮の時計職人の工房、傷だらけのオークの作業台の上に暖かいタングステンランプ。 2革のエプロンを着た年老いた修理屋が、両手で包んだ小さな真鍮の機械鳥に近づき、 3その羽根プレートは半分開き、小さな歯車が見える。彼の後ろのマリオン窓には雨が 4筋を描き、フレーム左では石炭ストーブが琥珀色に輝く。浅い被写界深度、35mm、 5ランプビーム内の体積塵、深い琥珀とティールのパレット、フォトリアル、テキストなし。 6

Atlas Cloud上のGPT Image 2プレイグラウンド、このチュートリアルの最初のフレームプロンプトと出力パネルにレンダリングされた時計職人工房
Atlas Cloud上のGPT Image 2、品質high、2048x1152。Runボタンは、選択した設定の正確な料金を表示します。この場合は$0.1745。
返されたURLを保持します。ステップ2でそのままH3に渡すため、ダウンロードの往復は不要です。
ステップ2:MiniMax H3タスクを作成し、task_idを保持する
create呼び出しは2つのことを行い、その後はあなたに関心を失います。ペイロードを検証し、task_idを返します。ここでの400はペイロードの問題であり、一時的な障害ではないため、再試行ループに入れないでください。他のすべての種類の問題はポーリング中に後で現れます。
本当に費用を節約する1つの習慣:何よりも先にtask_idを永続化すること。タスクは7日間のみ照会可能であり、プロセスがIDをメモリに残したまま死んだ場合、アクセスできなくなったレンダリングに対して料金を支払ったことになります。
python1import os, json, time, requests 2 3BASE = "https://api.minimax.io" 4HEADERS = { 5 "Authorization": f"Bearer {os.environ['MINIMAX_API_KEY']}", 6 "Content-Type": "application/json", 7} 8 9def create_task(payload: dict) -> str: 10 r = requests.post(f"{BASE}/v2/video_generation", 11 headers=HEADERS, json=payload, timeout=60) 12 if r.status_code == 400: 13 # ペイロードが間違っている。再試行してもまた間違うだけ。 14 raise ValueError(f"rejected: {r.text}") 15 r.raise_for_status() 16 task_id = r.json()["task_id"] 17 with open("tasks.jsonl", "a") as f: # 何よりも先に永続化 18 f.write(json.dumps({"task_id": task_id, "at": int(time.time()), 19 "payload": payload}) + "\n") 20 return task_id 21 22SHOT_A_PROMPT = ( 23 "老修理屋の手が真鍮の鳥を落ち着かせる。そのガラスの目がちらつきながら灯り、" 24 "羽根プレートが一つずつカチッと開く。彼は身を乗り出し、マイクの近くでささやく:" 25 "「まだ空を覚えているか、見せておくれ。」ゆっくりとした50mmのプッシュイン、" 26 "ランプの光が真鍮を斜めに照らし、雨が窓に当たる音、石炭ストーブのパチパチという音、" 27 "彼の声の下で小さなサーボのクリック音。暖かい琥珀色のキーライト、ティールの窓フィル。" 28 "画面上のテキストなし。" 29) 30 31shot_a = create_task({ 32 "model": "MiniMax-H3", 33 "resolution": "2K", 34 "duration": 8, 35 # ここでは意図的に"ratio"なし:画像から動画は最初のフレームからフレームを取得する 36 "content": [ 37 {"type": "text", "text": SHOT_A_PROMPT}, 38 {"type": "image_url", "role": "first_frame", 39 "image_url": {"url": FIRST_FRAME_URL}}, 40 ], 41}) 42print("shot A task:", shot_a) 43
以下は、その正確なプロンプトと最初のフレームをジョブとして実行している様子です。正常な送信がどのように見えるかを別の視点から確認できます。

Atlas Cloud上のMiniMax H3画像から動画へのプレイグラウンド、工房の最初のフレームが読み込まれ、出力パネルにレンダリングされたクリップ
MiniMax H3画像から動画:左に最初のフレームが読み込まれ、右のOUTPUTに完成した2Kクリップ。アスペクト比フィールドがadaptiveに固定され、2K・8秒で$1.12の見積もりが表示されていることに注意。
ステップ3:ポーリングし、5つのMiniMax H3ステータスすべてを処理する
これが誰もが間違えるループなので、完全に書く価値があります。4つのルール:叩き続けるのではなくバックオフする、合計待機時間に上限を設ける、succeededを「今すぐダウンロード」として扱う、enumにないステータスはエラーを発生させる。
python1TERMINAL_OK = {"succeeded"} 2TERMINAL_BAD = {"failed", "cancelled"} 3IN_FLIGHT = {"queued", "running"} 4 5def poll(task_id: str, timeout_s: int = 900) -> dict: 6 delay, deadline = 3.0, time.time() + timeout_s 7 while time.time() < deadline: 8 r = requests.get(f"{BASE}/v2/query/video_generation/{task_id}", 9 headers=HEADERS, timeout=30) 10 r.raise_for_status() 11 task = r.json()["task"] 12 status = task["status"] 13 14 if status in TERMINAL_OK: 15 return task # content.url が今すぐ利用可能 16 if status in TERMINAL_BAD: 17 raise RuntimeError(f"{status}: {json.dumps(r.json())[:400]}") 18 if status not in IN_FLIGHT: 19 # enumにないステータス。「待機継続」にフォールスルーしない。 20 raise RuntimeError(f"unknown status {status!r} -- 変更履歴を読んでください") 21 22 print(f" {status} ... 次回チェックまで {delay:.0f}秒") 23 time.sleep(delay) 24 delay = min(delay * 1.5, 15.0) # 3秒 -> 15秒上限 25 raise TimeoutError(f"{task_id} が {timeout_s}秒後も終端状態にならない") 26
この中で意図的な3つの点:
status not in IN_FLIGHTは継続せずにエラーを発生させます。MiniMaxが来四半期に6つ目のステータスを追加した場合、決して来ない単語を待つループではなく、大きなクラッシュを起こしてほしいからです。この1行が、壊れたチュートリアルとこのチュートリアルの違いです。
failedは再試行しません。レンダリング失敗は通常、プロンプトがフィルターに引っかかったか、ペイロードに悪い組み合わせがあったことを意味し、同一のペイロードを再度送信しても全額料金で同じ失敗を買うことになります。ボディをログに記録し、確認してから判断してください。
バックオフは3秒から始まり、15秒で止まります。2KのH3は数分かかり、秒単位ではありません。毎秒ポーリングすると、クエリエンドポイントのレート制限を消費するだけです。
ステップ4:URLの有効期限が切れる前にダウンロードする
succeededが返った瞬間、ファイルをストリームでディスクに保存します。content.urlのURLは明示的に時間制限付きのリンクです。「すぐにダウンロードするか保存し、期限切れ後に新しいURLを取得するには再度クエリしてください」(MiniMax API Reference、2026年8月)。データベースに入れて忘れられるCDNパスではありません。
後半部分は良いニュースで、翌朝に404が表示された場合の答えです。レンダリングは消えていません。同じtask_idを再度照会すると、作成から7日間は新しいURLが得られます。
python1def download(url: str, path: str) -> str: 2 with requests.get(url, stream=True, timeout=300) as r: 3 r.raise_for_status() 4 with open(path, "wb") as f: 5 for chunk in r.iter_content(1 << 20): 6 f.write(chunk) 7 return path 8 9def refresh_url(task_id: str) -> str: 10 """リンク切れ?レンダリングは問題ありません。7日間のウィンドウ内で再度問い合わせてください。""" 11 r = requests.get(f"{BASE}/v2/query/video_generation/{task_id}", 12 headers=HEADERS, timeout=30) 13 r.raise_for_status() 14 return r.json()["task"]["content"]["url"] 15 16task = poll(shot_a) 17download(task["content"]["url"], "shot-a.mp4") 18
ショットAに対して返ってきたもの。元の静止画と並べて表示:

左右比較:左が生成された最初のフレーム、右が完成したMiniMax H3クリップのフレーム。鳥の羽根プレートが開き、目が光っている。
左:ステップ1のGPT Image 2の静止画、そのまま送信。右:H3が返した2Kクリップから抽出したフレーム。同じセット、同じ照明、羽根プレートと目が動いた部分。
ステップ5:MiniMax H3テキストから動画によるショットB、ratioが必須
空のソースフレームがないため、ショットBはテキストのみです。これによりratioルールが「無視」から「必須」に変わります。テキストのみのプロンプトでは、ratioは必須であり、adaptiveは使用できません(MiniMax API Reference、2026年8月)。省略するかadaptiveを送信すると、レンダリング開始前に即座に400エラーになります。
モデル:minimax/h3/text-to-video。設定:2K、duration 6、ratio 16:9。
text1真鍮の鳥が半分開いた工房の天窓を突き破り、雨に洗われた夕暮れの空へと飛び出す。 2歯車の音を立てて羽ばたく翼、金属の羽根から飛び散る水滴、濡れたスレート屋根の上を 3登り、金色の雲の切れ間へ向かう。カメラはその後ろからクレーンアップ、24mm、 4低い太陽からの逆光のリムライト。音:羽根のサーボが唸る音、風が強まる音、 5遠くの教会の鐘、雨が消えていく音。テキストなし。 6
python1shot_b = create_task({ 2 "model": "MiniMax-H3", 3 "resolution": "2K", 4 "duration": 6, 5 "ratio": "16:9", # ここでは必須。省略するか"adaptive"を渡すと400 6 "content": [{"type": "text", "text": SHOT_B_PROMPT}], 7}) 8download(poll(shot_b)["content"]["url"], "shot-b.mp4") 9

Atlas Cloud上のMiniMax H3テキストから動画プレイグラウンド、鳥が飛び立つプロンプトと出力パネルに完成したクリップ
MiniMax H3テキストから動画、ショットBのプロンプトとアスペクト比を明示的に16:9に設定。この実行では、上記のペイロードの6秒ではなく、ページのデフォルトの8秒を使用。
ステップ6:コールバックでポーリングをスキップし、3秒以内にチャレンジに応答する
知らされる方が好みなら、create呼び出しでcallback_urlを渡します。正確に1つの注意点があり、それはAPIリファレンスの1つの括弧内に文書化されており、セルフホスト型コールバックが失敗する最も一般的な原因です。
MiniMaxが何かをプッシュする前に、challengeフィールドを含む検証リクエストを送信します。「3秒以内にchallengeを変更せずに返す必要があります」(MiniMax API Reference、2026年8月)。これに失敗すると、どこにもエラーはありません。create呼び出しは成功し続け、レンダリングは完了し続けますが、プッシュは決して届きません。どのログにも理由は記載されません。
FastAPIの12行、その中の順序がすべてです:
python1from fastapi import FastAPI, Request 2 3app = FastAPI() 4 5@app.post("/minimax/callback") 6async def callback(req: Request): 7 body = await req.json() 8 if "challenge" in body: # 検証ハンドシェイク、最初に応答する 9 return {"challenge": body["challenge"]} # 変更せず、同期的に、認証ゲートなし 10 task_id = body.get("task_id") 11 status = body.get("status") 12 enqueue(task_id, status) # 実際の通知:処理を引き継ぎ、すぐに返す 13 return {"ok": True} 14
これを壊す間違い。私が頻繁に見た順に:
- チャレンジリクエストが認証ミドルウェアを通過し、401またはリダイレクトになる。検証は定義上、認証されていません。パスをホワイトリストに追加してください。
- ハンドラーがチャレンジをキューにプッシュし、非同期で応答する。遅すぎます。その応答はそのリクエストのレスポンスボディでなければなりません。
- 値が再シリアル化されたり、トリミングされたり、ラップされたりする。バイト単位でそのままエコーしてください。
- トンネル経由でサーバーレス開発サーバーに対してテストしており、コールドスタートだけで3秒を超える。最初にウォームアップするか、すでに実行中のプロセスで検証してください。
ちなみに、ポーリングは完全に問題ありません。1時間に数ジョブしかない場合、ステップ3のループはコードが少なく、壊れることも少ないです。コールバックは、多くのジョブがあり、ジョブごとにポーラーを用意したくない場合に効果を発揮します。
ステップ7:2つのショットを1つの動画に連結する
両方のショットは2560x1440のh264、24fps、AACステレオオーディオ32kHzで返ってきました。同じコンテナ、同じすべてなので、これはストリームコピーであり、再エンコードではありません。品質劣化なし、待ち時間なし。
予想しておくべき小さな驚き:6秒を要求したところ、6.58秒のファイルが返ってきました。長さは要求した値に近いものの、フレーム単位で正確ではないため、2つのショットは合計で14.62秒になります(きれいな14秒ではありません)。
bash1printf "file 'shot-a.mp4'\nfile 'shot-b.mp4'\n" > list.txt 2ffmpeg -f concat -safe 0 -i list.txt -c copy brass-bird-two-shot.mp4 3
その出力がこの記事の上部にある動画です。-c copyがエラーを出す場合、2つのショットの解像度またはフレームレートが異なります。H3では、resolutionを呼び出し間で変更したことを意味します。一致させるか、-c copyを削除して1回の再エンコードを受け入れてください。
盗む価値のあるMiniMax H3チュートリアルのバリエーション
上記のループが機能したら試す価値のある5つのこと。お金を節約できる順に大まかに並べています。
768Pでドラフト、2Kで仕上げる。 両方のティアは同じモデルで、768Pは1秒あたり約29%安価です。短く安価に候補をレンダリングし、確認してから、勝者のみを同じプロンプトで2Kで再実行します。ここにショットリストの節約の大部分が詰まっています。実際に配信に必要なティアは別の議論であり、768P vs 2Kで説明しています。
長さは4から15の任意の整数。 プリセットではありません。アクションが7秒で決まるなら、7秒を要求し、8秒分の料金を支払うのをやめてください。
最初のフレームと最後のフレーム。 role: "last_frame"を持つ2番目の画像アイテムを送信すると、H3がその間の遷移を構築します。すでにアートディレクションしたショット間の受け渡しに便利です。
参照から動画による連続性。 role: "reference_image"は、毎回顔を再生成する代わりに、ショット間でキャラクターを維持します。一致するreference_audioロールもあり、参照クリップの2〜15秒のウィンドウがあります。これにより、声を一貫させることができます。詳細はreference-to-videoを参照。
縦型のトーキングヘッド。 ratio: "9:16"とプロンプト内の会話行は、現在このモデルで最もボリュームのある使用法です。なぜなら、オーディオは同じパスから出力され、唇の動きが別のリップシンクステップなしで一致するからです。
プロンプト作成は非同期配管とは別のスキルであり、ショットが技術的にクリーンでも視覚的に平坦な場合、問題はこの記事の上流にあります。H3プロンプトガイドから始めてください。
このMiniMax H3チュートリアルの実行コスト
上部の動画を生成した実行の実際の明細項目。Runボタンで表示され、2026年8月12日に確認済み。H3は出力秒数で課金され、レートは解像度によって段階的です。2Kジョブは8秒で$1.12、つまり1秒あたり$0.14と見積もられ、カタログの開始レート$0.10は768Pティアです。3つのH3エンドポイントはすべて現在全額で、割引は適用されていません。
| ステップ | モデル | 設定 | 料金 |
|---|---|---|---|
| 最初のフレーム | GPT Image 2 text-to-image | 品質high, 2048x1152 | $0.1745 |
| ショットA | H3 image-to-video | 2K, 8秒 | $1.12 |
| ショットB | H3 text-to-video | 2K, 16:9, 6秒 | $0.84 |
| 納品された動画 | 14.6秒, 2ショット, 2560x1440, ステレオオーディオ | $2.13 | |
| この記事のスクリーンショット実行 | H3 i2v + t2v | 2K, 各8秒 | $2.24 |
注目すべきは、同じ2つのショットを768Pでドラフトした場合、$1.12と$0.84の代わりに$0.80と$0.60になり、約29%オフとなることです。テイクを判断するのに十分な映像です。
高くつく方法で学びやすい2つの請求の詳細。送信で拒否されたリクエストは無料なので、ratio欠落による400は無料です。役に立たないものをレンダリングするリクエストは無料ではありません。ジョブがsucceededに達した場合、出力が望んだものでなくても課金されます。これが768Pでドラフトする本当の理由です。
1秒あたりのレート、768Pと2Kの比較、および長さによる料金の動作は、この記事の姉妹編であるMiniMax H3 API pricingで詳しく説明されています。こちらはコード、あちらは請求書です。
出荷前の帰属と地域
これを公開する前に確認すべき2つのこと。MiniMaxのAPI利用規約には、API出力に対する特許および著作権のクレームをカバーする条件付き防御義務が含まれていますが、その義務は商標や肖像には及ばないため、プロンプト内の認識可能なロゴや実在の人物は依然としてあなたの責任です。別途、H3のオープンウェイトライセンスには除外地域条項が含まれており、その条項はダウンロードされたウェイトとその出力を対象とし、ホスト型APIは対象としません。ホスト型APIの利用規約では、選択可能な米国サービス地域が指定されています。実際に署名した契約書を読んでください。また、UI内でH3出力をH3出力としてラベル付けしてください。
MiniMax H3チュートリアルFAQ
MiniMax H3のタスクステータスは何ですか?expiredはありますか?
5つ:queued、running、succeeded、failed、cancelled。expiredステータスはありません。期限切れになる別の2つのものがあり、それと混同されます。content.urlのダウンロードURLは時間制限があり、タスクレコード自体は過去7日間のみ照会可能です。
MiniMax H3でコールバックを使用する必要がありますか?それともポーリングで十分ですか?
ポーリングで十分であり、コードも少なくなります。コールバックは、ジョブごとにポーラーを用意するのが馬鹿らしいほど多くの同時ジョブがある場合に使用します。使用する場合、エンドポイントはchallengeフィールドを3秒以内に同期的に、認証ミドルウェアより先にそのままエコーする必要があります。ハンドシェイクに失敗するとエラーメッセージは一切表示されず、永久に沈黙します。
MiniMax H3テキストから動画リクエストが「ratioは必須であり、adaptiveは使用できません」で400になるのはなぜですか?
テキストのみのモードでは、フレームを推測するための最初のフレームがないためです。明示的な値を渡してください:21:9、16:9、4:3、1:1、3:4、9:16。同じルールが、画像から動画ではratioが何もしないように見える理由でもあります。画像から動画では最初のフレームが決定し、渡されたratioは無視されます。
MiniMax H3ジョブを並列でいくつ実行できますか?
文書化された上限は接続ベースです。無料で2つの同時タスク、有料で15です。上限を超えると、キューに入る代わりに即座に429が返されるため、自身の処理中の数を制限してください。ルーティングゲートウェイはより多く吸収することがあり、私は20の同時ジョブがすべて完了したこともありますが、同じ設定で別の日に429が返されたこともあります。高い数値を前提としたスケジューラを構築しないでください。
MiniMax H3の動画URLが1日後に404になります。レンダリングは消えましたか?
いいえ。URLが期限切れになっただけで、レンダリングは消えていません。同じtask_idを再度照会すると、7日間の照会ウィンドウ内であれば、応答には新しいURLが含まれます。7日後、タスクレコード自体は照会できなくなります。そのため、ステップ2では何よりも先にtask_idを永続化しています。
「hailuo ai video generator how to use」を検索してMiniMax H3チュートリアルにたどり着きました。正しい場所ですか?
はい。Hailuoは消費者向けアプリであり、H3はAPIが使用するモデル名です。同じエンジンです。1つのクリップが必要な場合は、上記のワークフローセクションのプレイグラウンドパスを使用してください。コードは不要です。10のバリエーションや別のモデルからの最初のフレームをパイプしたい場合は、7つのステップがあなた向けです。






