- MiniMax H3 python api は、作成・ポーリング・取得の非同期ワークフローを使用します。
- 認証 には、Bearer 認証ヘッダー経由で送信する API キーが必要です。
- Python 統合 では、タスク作成、ステータス確認、ファイル取得に
requestsを使用できます。 - ベストプラクティス は、API キーをソースコードではなく環境変数に保持することです。
- 出力の取り扱い では、完了した動画を永続的なアプリケーションストレージへコピーする必要があります。
MiniMax H3 python api の概要
MiniMax H3 は、自然言語プロンプトと対応する参照素材を受け付けるマルチモーダル AI 動画生成モデルです。Python API は、動画ジョブの送信、レンダリング進行状況の監視、そして生成プロセス全体でリクエストを開き続けなくても完了済みファイルを取得したいアプリケーション向けに設計されています。
標準的なワークフローは非同期です。アプリケーションは動画生成リクエストを送信し、task_id を受け取り、一定間隔でタスク状態を確認し、タスクが Success に到達した後に出力を取得します。この構成は、Web アプリケーション、社内ツール、コンテンツパイプライン、バッチ生成システムに適しています。
| ワークフロー段階 | API アクション | アプリケーションの結果 |
|---|---|---|
| 認証 | Authorization ヘッダーで API キーを送信する | リクエストが認可される |
| タスク作成 | プロンプトと出力設定を送信する | API が task_id を返す |
| 状態ポーリング | ID でタスクを照会する | アプリケーションが進行状況を追跡する |
| 完了 | 成功したタスク応答を読む | file_id が利用可能になる |
| ファイル取得 | ファイルのメタデータまたは URL を要求する | 動画をダウンロードできる |
MiniMax H3 の公式ワークフローは、時間と解像度を設定できる短尺動画生成をサポートしています。選択したエンドポイントやアカウント設定によっては、利用可能な制御項目にテキストプロンプト、画像参照、動画参照、音声指示、アスペクト比、出力解像度が含まれる場合があります。
| 一般的なパラメータ | 例 | 用途 |
|---|---|---|
model | MiniMax-H3 | H3 動画モデルを選択する |
prompt | 映画的なシーンの説明 | 視覚および音声の結果を定義する |
duration | 6 | 短尺動画の長さを指定する |
resolution | 768P | 出力解像度を選択する |
task_id | 作成時に返される | 非同期ジョブを識別する |
file_id | 成功時に返される | 完成した動画ファイルを識別する |
生成はすべて、直接のファイル応答ではなくジョブとして扱ってください。一時的なネットワーク中断の後でもポーリングを継続できるよう、タスク ID はすぐに保存しましょう。
Python API のセットアップと認証
統合の実装を始める前に、Python 環境を準備し、HTTP クライアントをインストールし、MiniMax API キーをアプリケーションコードの外に保存してください。この方法により、リポジトリ、ログ、スクリーンショット、クライアント側バンドルへのキーの意図しない露出を抑えられます。
以下の例では Python と requests パッケージを使用します。アプリケーションで使う環境にインストールしてください。
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install requests
スクリプトを実行する前に、API キーを環境変数として設定します。
export MINIMAX_API_KEY="YOUR_API_KEY"
Windows PowerShell では次を使用します。
$env:MINIMAX_API_KEY="YOUR_API_KEY"
| セットアップ項目 | 推奨方法 | 重要な理由 |
|---|---|---|
| API キー | MINIMAX_API_KEY に保存する | 資格情報をソースファイルから分離できる |
| HTTP クライアント | タイムアウト付きの requests を使う | 無期限に停止する呼び出しを防ぐ |
| ベース URL | 1 つの設定値にまとめる | エンドポイント変更が容易になる |
| ペイロード | 送信前に検証する | 回避可能な 400 応答を減らす |
| ロギング | 認証ヘッダーを絶対に出力しない | デバッグ中の資格情報を保護する |
ホスト型 API
- 管理されたモデル提供
- 非同期タスク処理
- API エンドポイント経由のファイル取得
Python Requests
- シンプルな HTTP 統合
- スクリプトとバックエンドサービスで利用可能
- ステータスとエラー処理が容易
本番ワーカー
- キューベースのタスク処理
- リトライとバックオフのサポート
- 永続的な結果保存
MiniMax API キーを、ブラウザ JavaScript、モバイルクライアントコード、公開ノートブック、またはコミット済みの設定ファイルに置かないでください。リクエストは保護されたバックエンド経由でルーティングしてください。
動画を作成し、ポーリングし、取得する
基本的な MiniMax H3 Python API 統合では、次の 4 段階の手順に従ってください。重要な設計原則は、タスク送信とタスク監視を分離することです。本番サービスは、同じ生成を再送信せずにポーリングを再開できる必要があります。
動画タスクを作成する
H3 モデル名、プロンプト、時間、解像度を含む JSON ペイロードを作成します。それを Bearer トークン付きで動画生成エンドポイントに送信します。その他の作業を行う前に、返された task_id を保存してください。
タスク状態をポーリングする
保存した ID を使ってタスクエンドポイントを照会します。タスクが queued、preparing、processing の間は継続します。リクエストを連続送信するのではなく、各リクエストの間に待機時間を入れてください。
成功または失敗を処理する
状態が Success または Fail になったらポーリングを停止します。成功時は file_id を読み取ります。失敗時は返されたエラーメッセージを記録し、問題を修正した後に新しいタスクを作成します。
出力ファイルを取得する
完了したファイル ID をファイル取得エンドポイントで使用します。結果を引き続き利用可能にする必要がある場合は、返されたダウンロード URL またはファイル内容を永続的なアプリケーションストレージにコピーしてください。
簡潔な Python 実装は次のようになります。
import os
import time
import requests
API_KEY = os.environ["MINIMAX_API_KEY"]
BASE_URL = "https://api.minimax.io/v1"
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
payload = {
"model": "MiniMax-H3",
"prompt": (
"A premium perfume bottle rotating on black glass, "
"dramatic studio lighting, synchronized ambient sound."
),
"duration": 6,
"resolution": "768P",
}
create_response = requests.post(
f"{BASE_URL}/video_generation",
headers=HEADERS,
json=payload,
timeout=60,
)
create_response.raise_for_status()
task_id = create_response.json()["task_id"]
print("Created task:", task_id)
while True:
query_response = requests.get(
f"{BASE_URL}/query/video_generation",
headers=HEADERS,
params={"task_id": task_id},
timeout=30,
)
query_response.raise_for_status()
task = query_response.json()
status = task.get("status")
print("Current status:", status)
if status == "Success":
file_id = task["file_id"]
print("Completed file:", file_id)
break
if status == "Fail":
message = task.get("error_message", "Video generation failed")
raise RuntimeError(message)
time.sleep(10)
| ステータス | 意味 | 推奨アクション |
|---|---|---|
Preparing | タスクを初期化中 | ポーリングを継続する |
Queueing | タスクが処理待ち | 間隔を空けてポーリングを継続する |
Processing | 動画生成中 | ポーリングを継続する |
Success | 動画の準備完了 | file_id を取得する |
Fail | 生成が失敗した | エラーを読み取り、リクエストを修正する |
完了したタスクについては、返された ID を使ってファイル情報を取得します。
file_id = "FILE_ID_FROM_SUCCESS_RESPONSE"
file_response = requests.get(
f"{BASE_URL}/files/retrieve",
headers=HEADERS,
params={"file_id": file_id},
timeout=30,
)
file_response.raise_for_status()
file_data = file_response.json()
download_url = file_data.get("file", {}).get("download_url")
if not download_url:
download_url = file_data.get("download_url")
print("Download URL:", download_url)
正確なレスポンス形状はエンドポイントのバージョンによって異なる場合があります。統合時には JSON レスポンスを確認し、現在の MiniMax video generation API documentation に従ってください。
適用できる場合は、task_id と file_id をデータベースに保存してください。これにより、レンダリング中やファイル取得中にワーカーが再起動しても統合を復旧できます。
エラーハンドリングと本番運用のベストプラクティス
シンプルなスクリプトでは HTTP リクエスト失敗時に例外を送出できますが、本番向け統合にはより多くの構造が必要です。クライアントエラーと一時的なサービスエラーを分離し、回数制限付きリトライを使い、元のタスク識別子を保持してください。
| エラー | 主な原因 | 対処方針 |
|---|---|---|
400 | 無効なペイロードまたは未対応の設定 | モデル、時間、解像度、入力を検証する |
401 | API キーの欠落または無効 | 環境変数とヘッダーを確認する |
403 | アカウントまたは権限制限 | アカウントアクセスとサービス権限を確認する |
429 | レート制限またはクォータ到達 | 指数バックオフを使い、リクエストをキュー化する |
500–599 | 一時的なサービス問題 | 回数を限定して再試行する |
Fail | レンダリングタスクが失敗した | タスクメッセージを読み、リクエストを見直す |
一時的な失敗に対しては、直ちに再試行するのではなく指数バックオフを使用してください。
import time
def wait_with_backoff(attempt, base_delay=5, max_delay=60):
delay = min(base_delay * (2 ** attempt), max_delay)
time.sleep(delay)
ポーリングでは、ワーカーが無期限に稼働し続けないよう最大待機時間を設定します。
started_at = time.time()
max_wait_seconds = 30 * 60
while time.time() - started_at < max_wait_seconds:
# Query the task here.
# Break on Success or Fail.
time.sleep(10)
raise TimeoutError("The MiniMax H3 task exceeded the polling limit.")
ローカルテストを超えて運用する際は、次のベストプラクティスを適用してください。
- プロンプトとペイロードを再現可能に保つ。 プロンプト、モデル、時間、解像度、参照ファイル識別子を保存します。
- バックグラウンドワーカーを使う。 Web リクエストはジョブを作成するだけで、動画レンダリングの完了を待つべきではありません。
- 重複送信を防ぐ。 create エンドポイントを呼び出す前に内部リクエスト ID を割り当てます。
- 入力を早期に検証する。 API 送信前に、欠落ファイル、未対応形式、競合する設定を拒否します。
- 出力 URL を保護する。 返されたダウンロードリンクはアプリケーションデータとして扱い、重要なファイルは管理されたストレージへコピーします。
- 利用状況を監視する。 成功タスク、失敗タスク、リトライ回数、総生成秒数を追跡します。
本番準備チェックリスト:
- API キーを保護された環境変数に保存する
- 返されたすべてのタスク ID を保存する
- リクエストのタイムアウトと回数制限付きリトライを使う
- 遅延と最大待機時間を設けてポーリングする
- 完了した動画を永続ストレージに保持する
公開された H3 モデルの重みをダウンロードすることは、ホスト型 API の使用とは別です。ホスト型サービスの機能、プラットフォーム側の処理、API ファイル配信がローカルデプロイにも存在すると想定しないでください。
MiniMax H3 Python API FAQ
Q: MiniMax H3 Python API は同期型ですか?
いいえ。標準的な統合は非同期です。タスクを作成し、task_id を保存し、query エンドポイントをポーリングし、タスクが Success に達した後にファイルを取得します。
Q: MiniMax H3 API キーはどこに保存すべきですか?
保護された環境変数またはシークレットマネージャーに保存してください。Python ファイル、公開リポジトリ、ブラウザコード、アプリケーションログへのハードコーディングは避けてください。
Q: タスクが Fail を返した場合はどうすればよいですか?
返されたエラー情報を読み取り、プロンプトとリクエスト設定を確認し、参照入力を検証し、問題を修正した後にのみ新しいタスクを送信してください。
Q: ローカルの H3 重みでも同じ Python ワークフローを使えますか?
直接は使えません。ホスト型 API は HTTP エンドポイントと task ID を使用しますが、ローカルの重みではリポジトリの推論環境、依存関係、ハードウェア構成、実行コマンドが必要です。
最も安全な開始点は、短い H3 タスクを 1 つ作成し、タイムアウト付きでポーリングし、結果を取得し、デバッグに必要な各レスポンスを記録する小さなバックエンドスクリプトです。その経路が機能したら、キュー、永続ストレージ、リトライポリシー、アプリケーションレベルのリクエスト追跡を追加してください。