
MiniMax H3 APIの使い方
MiniMax H3は、Hailuo 3やHailuo 03とも検索されるMiniMaxの最新動画生成モデルです。テキストからの動画生成、開始画像や終了画像のアニメーション化、画像・動画・音声を参照した新しいクリップの生成という3つのワークフローに対応しています。
このガイドでは、EvoLink 経由で MiniMax H3 にアクセスし、正しいモデル ID を選択し、リクエストを送信し、非同期タスクを追跡し、完成した動画を取得する方法を示します。この例では、3 つのモードすべてで同じ統合動画エンドポイントを使用しているため、別個のタスクシステムを構築せずに、既存の本番運用ワークフローに H3 を追加できます。
すぐに分かる要点
- エンドポイント:
POST https://api.evolink.ai/v1/videos/generations - 認証: Bearer APIキー
- テキストから動画へのモデル:
minimax-h3-text-to-video - 画像から動画へのモデル:
minimax-h3-image-to-video - 参照動画モデル:
minimax-h3-reference-to-video - 出力: 2K 動画
- 長さ: 5 ~ 15 秒
- タスクフロー: リクエストを送信し、タスク ID を受信して、タスク エンドポイントをポーリングするか、HTTPS コールバックを使用します。
- 結果の有効期間: 完成した動画を 24 時間以内にダウンロードして保存します
目次
- MiniMax H3 でできること
- 主な機能と実用的なアップグレード
- MiniMax H3 API の概要
- MiniMax H3 APIへのアクセス方法
- 適切な生成モードを選択してください
- クイックスタート:60秒で最初のリクエストを送信
- 非同期ワークフローを理解する
- テキストから動画への例
- 画像から動画への例
- 参照動画の例
- ローカル素材のアップロード
- 完全な TypeScript 実装
- 完全な Python 実装
- パラメータとプロンプトの早見表
- 一般的なエラーと修正
- 価格設定とコスト計画
- 本番運用チェックリスト
- 実用例
- FAQ
1. MiniMax H3 でできること
MiniMax H3 は、さまざまなレベルのクリエイティブ コントロールを備えた短編動画生成用に設計されています。 3 つの API モードは同じタスク ライフサイクルを共有しますが、異なる入力を受け入れます。
| モード | 何をするのか | 一般的な用途 |
|---|---|---|
| テキストから動画へ | 書かれたシーンの説明から直接動画を作成します | 広告コンセプト、映画のようなショット、ソーシャル クリップ、ストーリーボード |
| 画像から動画へ | 開始画像、終了画像、またはその両方をアニメーション化します | 製品アニメーション、キャラクターモーション、制御されたトランジション |
| 参照動画 | 画像、動画、およびオプションの音声を新しい動画の参照として使用します | キャラクターとスタイルの参照、モーションの方向、マルチ素材の制作 |
重要な違いは制御です。テキストから動画への変換は、モデルに最も自由度を与えます。画像から動画への変換では、構成が 1 つまたは 2 つのフレームに固定されます。参照動画を使用すると、複数の参照素材が結果にどのような影響を与えるかを説明できます。
2. 主な機能と実用的なアップグレード
開発者にとって最も役立つ H3 の変更は、入力および出力仕様に表示されます。
- 3 つの専用ワークフロー。 テキスト、キーフレーム、およびマルチモーダル 参照の生成には個別のモデル ID がありますが、1 つの EvoLink エンドポイントを使用します。
- 2K 出力。 現在の H3 ルートは、単一の
2k品質オプションを公開しています。 - 柔軟な 5 ~ 15 秒のクリップ。 長さは整数であるため、生成の長さをショット プランに合わせやすくなります。
- 最初と最後のフレームのコントロール。 Image-to-Video は開始画像、終了画像、またはその両方を受け入れます。
- より豊富な参照入力。 参照動画は、順序付けられた画像、動画、および音声の配列を受け入れ、単一の主題画像よりも明確なクリエイティブな方向性を可能にします。
- 本番運用指向のタスク処理 EvoLink は、3 つのモードにわたって一貫した非同期タスク エンドポイントとオプションの完了コールバックを提供します。
最後のポイントは、モデルの機能ではなく、EvoLink 統合機能です。本番運用アプリケーションでは、選択したモデルに関係なく、予測可能なタスク状態、コールバック、ロギング、および結果処理が必要であるため、これは重要です。
Hailuo 2.3 との違い
| エリア | EvoLink を介した Hailuo 2.3 | EvoLink を介した MiniMax H3 |
|---|---|---|
| 出力層 | 768P または 1080P (期間に応じて) | 2K |
| クリップの長さ | 6秒または10秒。 1080Pは6秒に制限されています | 5 ~ 15 秒の任意の整数 |
| 画像制御 | 画像から動画への入力画像が 1 つ | 開始画像、終了画像、またはその両方 |
| 参照メディア | 個別のマルチモーダル参照ルートなし | 順序付けられた画像、動画、および音声の参照 |
| モード選択 | 自動テキスト/画像モード検出付きの 1 つのモデル ID | テキスト、画像、参照ワークフロー用の 3 つの明示的なモデル ID |
公式例:動画と音声の参照
video_urlsとaudio_urlsを別々の配列として順序どおりに渡す理由が分かる例です。Audio 1を声質の参照として使用しています。3. MiniMax H3 API の概要
3 つのモードはすべて次のものを使用します。
POST https://api.evolink.ai/v1/videos/generationsmodel 値により、どの入力仕様が適用されるかが決まります。| モデルID | 必須入力 | 受け入れられる参照フィールド | アスペクト比 |
|---|---|---|---|
minimax-h3-text-to-video | prompt | なし | アダプティブまたはサポートされているプリセット |
minimax-h3-image-to-video | prompt および image_start または image_end の少なくとも 1 つ | 開始/終了画像のみ | 入力画像により決定 |
minimax-h3-reference-to-video | prompt および少なくとも 1 つの画像または動画参照 | image_urls、video_urls、audio_urls | アダプティブ |
共有ルール:
durationは 5 ~ 15 の整数を受け入れます。デフォルトは 5 です。qualityは2kでなければなりません。768pは送信しないでください。- プロンプトは英語または中国語で記述できます。
- プロンプトは英語で約 1,000 単語または中国語で 500 文字以内に収めてください。
- ビットレート、フレーム レート、コーデックは構成できません。
- 生成は非同期です。
4. MiniMax H3 API へのアクセス方法
EvoLink アカウント、API キー、および要求されたタスクに十分なクレジットが必要です。
- EvoLink アカウントを作成するか、アカウントにサインインします。
- APIキーダッシュボードを開き、キーを作成します。
- キーをサーバー側の環境変数に保存します。
- 利用可能な入力に一致する H3 モードを選択します。
- 統合動画エンドポイントにリクエストを送信します。
EVOLINK_API_KEY=your_api_keyこのキーをブラウザの JavaScript、パブリック リポジトリ、またはモバイル アプリケーション バンドルで公開しないでください。サーバー、サーバー アクション、API ルート、ワーカー、または別の信頼できるランタイムから EvoLink API を呼び出します。
5. 適切な生成モードを選択する
ペイロードを構築する前に、このルーティング テーブルを使用します。
| あなたの意見や目標 | このモードを使用する |
|---|---|
| シーンの説明しかありません | テキストから動画へ |
| 1つの商品やキャラクターの画像をアニメーションさせたい | 画像から動画へ |
| 動画がどのように始まり、どのように終わるべきかを知っています | image_start および image_end による画像から動画への変換 |
| 出力をガイドするには複数の画像が必要です | 参照動画 |
| 動画クリップでアクションやカメラの動きをガイドしたい | 参照動画 |
| 音声を追加の参照として機能させたい | 画像または動画による参照動画 |
| 音声ファイルしかありません | 画像または動画を追加します。音声のみの参照リクエストは無効です |

image_start を受け入れず、参照ルートは image_start または image_end を受け入れません。6. クイックスタート:60秒で最初のリクエストを送信
ステップ 1: テキストから動画へのリクエストを送信する
curl -X POST https://api.evolink.ai/v1/videos/generations \
-H "Authorization: Bearer $EVOLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax-h3-text-to-video",
"prompt": "A compact electric concept car drives through a rain-soaked city at night. The camera tracks beside the car, then slowly pulls back to reveal neon reflections across the street.",
"quality": "2k",
"aspect_ratio": "16:9",
"duration": 5
}'API は非同期タスクを返します。
{
"id": "task-unified-example",
"status": "pending",
"created": 1785470400
}ステップ 2: タスクを確認する
curl https://api.evolink.ai/v1/tasks/task-unified-example \
-H "Authorization: Bearer $EVOLINK_API_KEY"statusがcompletedの場合、生成された動画URLをresultsから読み込みます。{
"id": "task-unified-example",
"status": "completed",
"results": [
"https://example-cdn.com/generated-video.mp4"
]
}結果は24時間以内にダウンロードしてください。後から必要になる場合は、自社の永続ストレージへ保存します。
7. 非同期ワークフローを理解する
動画の生成には、通常の HTTP リクエストよりも時間がかかります。したがって、作成呼び出しは、動画が終了するまで接続を開いたままにするのではなく、タスクを返します。
Submit request
↓
Receive task ID
↓
pending → processing
↓
completed or failed
↓
Download completed resultタスクのステータスは次のとおりです。
pending: リクエストはキューに入れられています。processing: 生成中です。completed:results配列には出力が含まれます。failed: エラー情報を検査し、リクエストを修正するか再試行するかを決定します。
ポーリングかコールバックか?
GET /v1/tasks/{task_id} を使用します。callback_url を生成リクエストに追加します。タスクが completed または failed に到達し、請求が確認された後、EvoLink はコールバックを送信します。コールバック URL は次のことを行う必要があります。- HTTPS を使用します。
- 2,048 文字以内にしてください。
- プライベート IP ではなく、パブリック宛先に解決します。
- 10 秒以内に応答してください。
- イベントが受け入れられた後、2xx 応答を返します。
配信に失敗した場合は、約1秒、2秒、4秒の間隔で3回再試行されます。同じイベントを複数回受信しても安全なように、ハンドラーを冪等にしてください。
8. テキストから動画への変換の例
Text-to-Video はメディア入力なしでプロンプトを受け入れます。
{
"model": "minimax-h3-text-to-video",
"prompt": "A ceramic coffee cup sits on a wooden table beside a window. Morning steam curls upward while the camera makes a slow clockwise orbit. Natural light, realistic texture, quiet editorial mood.",
"quality": "2k",
"aspect_ratio": "4:3",
"duration": 8,
"callback_url": "https://api.example.com/webhooks/evolink"
}サポートされているアスペクト比は次のとおりです。
21:916:94:31:13:49:16- アダプティブ
image_start、image_end、image_urls、video_urls、audio_urlsを受け付けません。特定の被写体やビジュアルを基準にしたい場合は、画像から動画または参照動画へ切り替えてください。9. 画像から動画への変換の例
image_start または image_end の少なくとも 1 つが必要です。開始画像をアニメーション化する
{
"model": "minimax-h3-image-to-video",
"prompt": "The camera slowly moves closer as the fabric responds to a soft breeze. Preserve the product shape, label, and lighting.",
"image_start": "https://assets.example.com/product-start.webp",
"quality": "2k",
"duration": 6
}終了フレームに向けて生成
{
"model": "minimax-h3-image-to-video",
"prompt": "A wide landscape shot gradually resolves into the supplied final frame, with continuous forward camera movement and stable natural lighting.",
"image_end": "https://assets.example.com/landscape-end.jpg",
"quality": "2k",
"duration": 10
}最初と最後のフレームの両方を制御する
{
"model": "minimax-h3-image-to-video",
"prompt": "The sealed package opens smoothly and the product rises into the final display position. Keep the logo legible and avoid sudden camera cuts.",
"image_start": "https://assets.example.com/package-closed.png",
"image_end": "https://assets.example.com/package-open.png",
"quality": "2k",
"duration": 8
}入力画像は次の条件を満たす必要があります。
- JPG、JPEG、PNG、WEBP、HEIC、または HEIF を使用します。
- 30 MB 以下にしてください。
- 幅と高さは 256 ~ 5,760 ピクセルです。
- 幅と高さの比率は 0.4 ~ 2.5 です。
- パブリック HTTP(S) URL から利用できること。
mm_file:// 参照は、このルートでは受け入れられません。出力のアスペクト比は入力画像によって決まります。このルートは aspect_ratio フィールド自体を受け付けず、送信するとパラメーターエラーが返ります。10. 参照動画の例
参照動画モードでは、画像、動画、任意の音声を順序付きの配列で渡します。プロンプトだけでは被写体、動き、テンポを十分に指定できない場合に便利です。
{
"model": "minimax-h3-reference-to-video",
"prompt": "Use Image 1 for the main character and Image 2 for the wardrobe. Follow the camera movement and walking rhythm from Video 1. Use Audio 1 only as a pacing reference. The character crosses a modern gallery and stops beside a large window.",
"image_urls": [
"https://assets.example.com/character.jpg",
"https://assets.example.com/wardrobe.jpg"
],
"video_urls": [
"https://assets.example.com/camera-reference.mp4"
],
"audio_urls": [
"https://assets.example.com/pacing-reference.mp3"
],
"quality": "2k",
"duration": 10
}参照数の上限
image_urlsは最大9件。video_urlsは最大3件。audio_urlsは最大3件。- 参照ファイルは合計12件までで、9 + 3 + 3のフルセットは拒否されます。
- 少なくとも 1 つの画像または動画が必要です。
- 音声だけを参照タイプにすることはできません。
- 参照動画および音声 クリップはそれぞれ 2 ~ 15 秒である必要があります。
- 参照動画の合計時間は 15 秒を超えてはなりません。
- 参照音声の合計時間は15秒以内です。
- 参照動画は、H.264 または H.265 動画を備えた MP4 または MOV を使用する必要があり、AAC または MP3 音声を含めることができます。
- 各参照動画は最大 50 MB まで可能です。
- 参照動画のサイズは、片側 256 ~ 5,760 ピクセル、幅と高さの比率が 0.4 ~ 2.5、フレーム レートが 23.976 ~ 60 FPS である必要があります。
- 参照音声はWAVまたはMP3形式で、1クリップあたり最大15MBです。
- 完全な JSON リクエスト本文は 64 MB 未満にする必要があります。
参照画像は、画像から動画への変換と同じ形式、サイズ、寸法、URL ルールに従います。
配列の順序で素材を参照する
Image 1、Image 2、Video 1、および Audio 1 を使用します。この番号は、配列内の素材の位置に対応します。 @image1 は使用しないでください。その構文はこの API 規約の一部ではありません。参照動画の長さは課金対象の使用量に影響するため、タスクに必要な長さよりも長いクリップを添付することは避けてください。
11. ローカル素材をアップロードする
生成ルートにはパブリック HTTP(S) メディア URL が必要です。ローカル ディスクまたはプライベート アプリケーションのアップロードからファイルを使用するには、まずそのファイルを EvoLink ファイルサービスに送信します。
curl -X POST https://files-api.evolink.ai/api/v1/files/upload/stream \
-H "Authorization: Bearer $EVOLINK_API_KEY" \
-F "file=@./product-start.png"file_url を読み取り、それを image_start、image_end、または参照配列内の項目として渡します。12. TypeScript の完全な実装
この例は、Node.js 18 以降の信頼されたサーバー環境で実行します。
const API_BASE = "https://api.evolink.ai";
type TaskStatus = "pending" | "processing" | "completed" | "failed";
interface VideoTask {
id: string;
status: TaskStatus;
results?: string[];
error?: {
code?: string;
message?: string;
};
}
interface BaseRequest {
prompt: string;
quality?: "2k";
duration?: number;
callback_url?: string;
}
type AspectRatio =
| "adaptive"
| "21:9"
| "16:9"
| "4:3"
| "1:1"
| "3:4"
| "9:16";
// ルートごとに型を分けるため、不正なフィールドの組み合わせはコンパイルできません。
interface TextToVideoRequest extends BaseRequest {
model: "minimax-h3-text-to-video";
aspect_ratio?: AspectRatio;
}
interface ImageToVideoRequest extends BaseRequest {
model: "minimax-h3-image-to-video";
image_start?: string;
image_end?: string;
// aspect_ratio はありません: このルートはフィールドを拒否し、
// 入力画像から比率を導き出します。
}
interface ReferenceToVideoRequest extends BaseRequest {
model: "minimax-h3-reference-to-video";
aspect_ratio?: AspectRatio;
image_urls?: string[];
video_urls?: string[];
audio_urls?: string[];
}
type VideoRequest =
| TextToVideoRequest
| ImageToVideoRequest
| ReferenceToVideoRequest;
function getApiKey(): string {
const apiKey = process.env.EVOLINK_API_KEY;
if (!apiKey) {
throw new Error("EVOLINK_API_KEY is not configured");
}
return apiKey;
}
async function requestJson<T>(
path: string,
init?: RequestInit,
): Promise<T> {
const response = await fetch(`${API_BASE}${path}`, {
...init,
headers: {
Authorization: `Bearer ${getApiKey()}`,
"Content-Type": "application/json",
...init?.headers,
},
});
if (!response.ok) {
const body = await response.text();
throw new Error(`EvoLink request failed (${response.status}): ${body}`);
}
return response.json() as Promise<T>;
}
async function submitVideo(payload: VideoRequest): Promise<VideoTask> {
return requestJson<VideoTask>("/v1/videos/generations", {
method: "POST",
body: JSON.stringify(payload),
});
}
async function getTask(taskId: string): Promise<VideoTask> {
return requestJson<VideoTask>(
`/v1/tasks/${encodeURIComponent(taskId)}`,
);
}
function wait(milliseconds: number): Promise<void> {
return new Promise((resolve) => setTimeout(resolve, milliseconds));
}
async function waitForVideo(
taskId: string,
timeoutMs = 10 * 60 * 1000,
pollIntervalMs = 5_000,
): Promise<string> {
const deadline = Date.now() + timeoutMs;
while (Date.now() < deadline) {
const task = await getTask(taskId);
if (task.status === "completed") {
const resultUrl = task.results?.[0];
if (!resultUrl) {
throw new Error("Task completed without a result URL");
}
return resultUrl;
}
if (task.status === "failed") {
throw new Error(task.error?.message ?? "Video generation failed");
}
await wait(pollIntervalMs);
}
throw new Error(`Timed out while waiting for task ${taskId}`);
}
async function main(): Promise<void> {
const task = await submitVideo({
model: "minimax-h3-text-to-video",
prompt:
"A slow aerial approach toward a coastal observatory at sunrise, " +
"natural cloud movement, cinematic wide shot",
quality: "2k",
aspect_ratio: "16:9",
duration: 6,
});
const videoUrl = await waitForVideo(task.id);
console.log(videoUrl);
}
void main();大容量システムの場合は、アプリケーション側のポーリングをコールバックと永続的なジョブ レコードに置き換えます。タスク ID は、リクエスト、請求レコード、ログ、結果の間の主要なリンクとして保持してください。
13. 完全な Python 実装
import os
import time
from typing import NotRequired, TypedDict, cast
import requests
API_BASE = "https://api.evolink.ai"
API_KEY = os.environ["EVOLINK_API_KEY"]
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
class VideoError(TypedDict):
code: NotRequired[str]
message: NotRequired[str]
class VideoTask(TypedDict):
id: str
status: str
results: NotRequired[list[str]]
error: NotRequired[VideoError]
class VideoPayload(TypedDict):
model: str
prompt: str
image_start: NotRequired[str]
quality: NotRequired[str]
duration: NotRequired[int]
def submit_video(payload: VideoPayload) -> VideoTask:
response = requests.post(
f"{API_BASE}/v1/videos/generations",
headers=HEADERS,
json=payload,
timeout=30,
)
response.raise_for_status()
return cast(VideoTask, response.json())
def get_task(task_id: str) -> VideoTask:
response = requests.get(
f"{API_BASE}/v1/tasks/{task_id}",
headers=HEADERS,
timeout=30,
)
response.raise_for_status()
return cast(VideoTask, response.json())
def wait_for_video(
task_id: str,
timeout_seconds: int = 600,
poll_interval_seconds: int = 5,
) -> str:
deadline = time.monotonic() + timeout_seconds
while time.monotonic() < deadline:
task = get_task(task_id)
status = task["status"]
if status == "completed":
results = task.get("results", [])
if not results:
raise RuntimeError("Task completed without a result URL")
return str(results[0])
if status == "failed":
error = task.get("error", {})
message = error.get("message", "Video generation failed")
raise RuntimeError(message)
time.sleep(poll_interval_seconds)
raise TimeoutError(f"Timed out while waiting for task {task_id}")
task = submit_video(
{
"model": "minimax-h3-image-to-video",
"prompt": (
"The camera slowly orbits the product while the background "
"light shifts from warm to cool. Preserve the product design."
),
"image_start": "https://assets.example.com/product.webp",
"quality": "2k",
"duration": 8,
}
)
print(wait_for_video(task["id"]))この例は、消費するフィールドを宣言しながら、依存関係を軽くしたままです。大規模な Python サービスでは、完全な応答を保存する前に Pydantic で検証します。
14. パラメータとプロンプトの早見表
パラメータのサポート
| パラメータ | 文章 | 画像 | 参照 | 注意事項 |
|---|---|---|---|---|
model | はい | はい | はい | モード固有のモデル ID を使用する |
prompt | 必須 | 必須 | 必須 | 英語または中国語 |
quality | はい | はい | はい | 2kのみ |
duration | はい | はい | はい | 5 ~ 15 の整数 |
aspect_ratio | はい | いいえ | はい | テキストと参照のルートは adaptive または固定比率を指定できます。画像から動画のルートはこのフィールドを拒否し、入力画像から比率を決めます |
image_start | いいえ | はい | いいえ | 開始フレーム |
image_end | いいえ | はい | いいえ | 終了フレーム |
image_urls | いいえ | いいえ | はい | 9まで |
video_urls | いいえ | いいえ | はい | 3つまで |
audio_urls | いいえ | いいえ | はい | 最大 3 つまで。単独では使用できません |
callback_url | はい | はい | はい | パブリックHTTPS URL |
プロンプトパターン:テキストから動画
[subject] + [action] + [environment] + [camera movement] +
[lighting] + [visual mood]例:
夜明け、霧のかかった森の上に架かる吊り橋を渡るサイクリスト。カメラは後方から追跡し、次に上昇して広い空撮ビューを表示します。柔らかな自然光とリアルな動き。
プロンプトパターン:画像から動画
[motion to add] + [camera movement] + [elements to preserve] +
[transition or ending state]例:
太陽光が床を横切るにつれて、カメラは椅子の周りをゆっくりと半円を描きます。椅子の正確な形状、素材、色を保存します。
プロンプトパターン:参照動画
Use [Image/Video/Audio number] for [specific purpose].
[Describe the new scene, action, camera, and final composition.]例:
キャラクターには画像 1、車両には画像 2、カメラの動きには動画 1 を使用します。キャラクターは日没時の静かな砂漠で車から降り、カメラは動画 1 と同じ前方弧を描きます。
15. 一般的なエラーと修正
| エラーまたは症状 | 考えられる原因 | 何をするか |
|---|---|---|
401 unauthorized | API キーが見つからない、形式が間違っている、または無効です | Bearerヘッダーとサーバー環境を確認する |
402 insufficient quota | アカウントのクレジットが不十分です | クレジットを追加するか、計画された作業負荷を削減します |
403 permission_denied | キーまたはアカウントがルートにアクセスできません | キーの権限とモデルの可用性を確認する |
404 task_not_found | タスクIDが間違っているか期限切れです | 返されたタスク ID を変更せずに保存します |
429 rate_limit_exceeded | リクエストが多すぎます | 指数バックオフを適用し、同時実行を制限する |
リクエストが拒否されました 768p | H3 は 2k のみを受け入れます | "quality": "2k"を設定する |
| 画像を取得できません | URL が非公開であるか、期限切れであるか、外部リクエストをブロックしています | EvoLink ファイルサービスを通じてアップロードします。 |
| Base64 画像が拒否される | ルートにはパブリック URL が必要です | ファイルをアップロードし、その file_url を使用します |
| 参照リクエストは無効です | 音声のみが供給されました | 少なくとも 1 つの画像または動画を追加します |
| 参照入力が拒否される | 数、サイズ、形式、または合計時間が制限を超えています | 送信する前に素材を検証する |
| タスクは完了したがURLを開けない | 結果URLの24時間の有効期限が切れた | 完成した動画を永続ストレージへ保存する |
| 繰り返しのコールバック処理 | 配信が 2 回再試行または処理されました | データベース内でコールバック ハンドラーを冪等にする |
一時的なネットワーク障害やレート制限など、リクエストを変更せずに成功できるエラーのみを再試行します。無効なパラメータとサポートされていない素材は、別の送信前に修正する必要があります。
16. 価格設定とコスト計画
計画の目的:
- 出力時間が長いほど、必要な処理量が増えます。
- 参照動画では、入力した参照動画の長さも課金対象になる場合があります。
- プロンプトやワークフローの検証には、目的を満たす最短の動画時間を使います。
- 大規模なバッチを開始する前に、少数のテスト生成を実行して結果を確認します。
- 各タスクの生成モード、出力時間、参照動画時間、ステータス、コストを記録します。
- 使用可能な動画1本あたりのコストを評価するときは、失敗した生成と使用できる結果を分けます。
EvoLinkの統一APIを使えば、認証、タスク追跡、請求連携を作り直さずに、制作チームがH3と他の動画モデルを比較できます。
17. 本番運用チェックリスト
本番投入前:
- API キーをサーバー上に保管します。
- 送信する前に、モード固有のパラメータをすべて検証してください。
- メディア URL がパブリックであり、生成中も利用可能な状態であることを確認します。
- リクエストのタイムアウトを設定します。
- ポーリング間隔と合計ポーリング時間に上限を設けます。
429や一時的なサーバーエラーにはバックオフを適用します。- ポーリングを開始する前にタスク ID を保存します。
- H3 タスクがキャンセルできると想定しないでください。現在のタスク 仕様は
can_cancel: falseを報告します。 - コールバックを反復可能なイベントとして扱います。
- イベントを受け入れた後にのみ 2xx コールバック応答を返します。
- 完成した動画は、一時 URL の有効期限が切れる前に保持します。
- モデル ID、期間、入力参照、ステータス、結果を記録します。
- アカウントレベルの同時実行性と予算制御を適用します。
- 文書化されていないヘッダーや出力設定に依存しないでください。
18. 実際の使用例
| 使用事例 | 推奨モード | なぜ |
|---|---|---|
| 広告コンセプトの迅速な生成 | テキストから動画へ | コピーからビジュアルテストまでの最速ルート |
| 商品写真アニメーション | 画像から動画へ | 供給された製品構成を維持します |
| 移行前と移行後 | 画像から動画へ | 開始フレームと終了フレームは両方の状態を定義します |
| キャラクター主導のショート動画 | 参照動画 | 複数の視覚的参照により主題をガイドできる |
| カメラモーションマッチング | 参照動画 | 短い参照クリップで動きをガイドできる |
| ストーリーボードの探索 | テキストから動画へ、または画像から動画へ | 承認されたフレームがすでに存在するかどうかに基づいて選択します |
| アプリ内での動画生成 | 任意のモード | 1 つのエンドポイントとタスクのライフサイクルにより統合が簡素化されます |
| 複数モデルの生産ルーティング | 任意のモード | 同じ EvoLink キーとタスクシステムで他のモデルにも対応可能 |
19. よくある質問
MiniMax H3 API にアクセスするにはどうすればよいですか?
POST https://api.evolink.ai/v1/videos/generations に送信します。どの MiniMax H3 モデル ID を使用すればよいですか?
minimax-h3-text-to-video を、開始/終了フレーム制御には minimax-h3-image-to-video を、順序付けされた画像、動画、および音声参照には minimax-h3-reference-to-video を使用します。MiniMax H3 は 2K 動画をサポートしていますか?
2k を受け入れます。API は 4K または 60 FPS をサポートしていますか?
これらのコントロールは、現在の H3 API 契約の一部ではありません。文書化されていない品質、フレームレート、ビットレート、またはコーデック設定を送信しないでください。
動画の最長時間はどれくらいですか?
現在の継続時間の範囲は、整数値を使用して 5 ~ 15 秒です。
ローカル画像をアップロードできますか?
file_url を生成リクエストに渡します。生成 API は Base64 画像を受け入れますか?
いいえ。パブリック HTTP(S) URL を使用します。
参照素材は何件まで使用できますか?
Reference-to-video は、ファイルごとの制限と合計時間の制限に従って、最大 9 つの画像、3 つの動画、および 3 つの音声ファイルを受け入れます。
音声参照のみから動画を生成できますか?
いいえ。参照リクエストには少なくとも 1 つの画像または動画を含める必要があります。音声を別の参照として追加できます。
生成状況を確認するにはどうすればよいですか?
GET /v1/tasks/{task_id} を呼び出すか、元のリクエストでパブリック HTTPS コールバック URL を指定します。生成された動画 URL はどれくらいの期間利用可能ですか?
結果の URL は 24 時間利用可能です。有効期限が切れる前に、動画をダウンロードするか、自分のストレージに移動してください。
MiniMax H3 を JavaScript または Python から使用できますか?
はい。 API は標準の HTTPS であり、JSON リクエストとベアラー認証をサポートする任意のサーバー側環境から呼び出すことができます。
タスクをポーリングする必要がありますか、それともコールバックを使用する必要がありますか?
ポーリングはテストや少量のスクリプトに便利です。一般に、本番キューやワークロードが大きい場合は、コールバックの方が効率的です。


