コンテンツにスキップ

動画

Videos API はテキストプロンプトから動画クリップを生成し、必要に応じてアップロード済みのメディア(first/last フレームとしての 1〜2 枚の画像、または参照画像・動画クリップ・音声クリップ)を条件に指定できます。レンダリングには数秒ではなく数分かかるため、非同期のジョブリソースとして提供されます。ジョブを作成し、終了ステータスになるまでポーリングし、出力をダウンロードします。

POST /v1/videos
GET /v1/videos
GET /v1/videos/models
GET /v1/videos/acceptance
POST /v1/videos/acceptance
GET /v1/videos/{video_id}
GET /v1/videos/{video_id}/content
GET /v1/videos/{video_id}/thumbnail

出力は音声付き MP4、768p です。すべてのリクエストで aspect_ratio の指定が必要です。

MiniMax H3 による動画生成は日本国内のハードウェアで実行されます。

日本語のシーン説明は、生成前に英語へ翻訳されます。翻訳時、<d>…</d> 内のセリフとシーン内に表示されるテキストはそのまま保持するよう翻訳モデルに指示しています。

動画ジョブを開始するには、その人がコンソールのプレイグラウンドで Video Service Terms に同意している必要があります。同意した本人が使う API キーはその後使えます。同じ組織でも、同意していない同僚はジョブを開始できません。

ジョブの作成は同意の記録にはなりません。記録できるのは、コンソールログインからの POST /v1/videos/acceptance だけです。API キーでは同意できません。

GET /v1/videos/acceptance は、現行の規約バージョンと、この組織でその人が同意済みかを返します。

同意がない場合は 403、コード agreement_required です。ジョブ一覧・取得・モデル一覧は開いたままです。

Terminal window
curl https://api.aiand.com/v1/videos \
-H "Authorization: Bearer $AIAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimaxai/minimax-h3",
"prompt": "A paper boat drifting down a rain-soaked gutter at dusk",
"seconds": 8,
"aspect_ratio": "16:9"
}'
フィールド必須説明
modelはいGET /v1/videos/models が返すモデル ID
promptはい最大 7000 文字
secondsはいクリップの長さ、4〜15
aspect_ratioはいAuto, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16 のいずれか
image_referenceいいえ一意の first_frame/last_frame ロールを持つ画像を 1〜2 個(purpose: "vision"、image-to-video)
referencesいいえ条件にする参照メディア(reference-to-video): images, videos, audio。image_reference とは併用不可

最初と最後のフレーム(image-to-video)

Section titled “最初と最後のフレーム(image-to-video)”

最初に各画像をアップロードし、返された file_id を使用します。各画像は purpose: "vision" の PNG、JPEG、WebP ファイルで、30 MiB 以下である必要があります — Files API は 100 MiB までアップロードできますが、エンジンはそれより大きい入力を拒否します。

Terminal window
curl https://api.aiand.com/v1/files \
-H "Authorization: Bearer $AIAND_API_KEY" \
-F "purpose=vision" \
-F "file=@first.jpg"

次に、ユーザーが決めた順序で 1〜2 個のファイル参照を送信します。

Terminal window
curl https://api.aiand.com/v1/videos \
-H "Authorization: Bearer $AIAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimaxai/minimax-h3",
"prompt": "A cinematic scene inspired by the references, natural motion",
"seconds": 5,
"aspect_ratio": "16:9",
"image_reference": [
{ "file_id": "file-first", "role": "first_frame" },
{ "file_id": "file-last", "role": "last_frame" }
]
}'

API は各ファイルが同じ組織に属し、purpose: "vision" であることを検証します。保存済みの R2 オブジェクトは、エンジンへ送信する直前に短時間だけ有効な署名付き URL に変換されるため、公開 URL は不要です。どちらのロールも単独で使用できるため、first_frame だけを指定しても last_frame は必要ありません。両方を指定する場合、ロールは重複できません。

参照画像・動画・音声(reference-to-video)

Section titled “参照画像・動画・音声(reference-to-video)”

フレームではなく参照メディアを条件にする場合は、各ファイルを対応する purpose でアップロードし(画像は vision、動画は video、音声は audio)、file_id を references オブジェクトに入れて渡します。

Terminal window
curl https://api.aiand.com/v1/videos \
-H "Authorization: Bearer $AIAND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimaxai/minimax-h3",
"prompt": "A cinematic scene inspired by the references, natural motion",
"seconds": 5,
"aspect_ratio": "16:9",
"references": {
"images": [{ "file_id": "file-img1" }],
"videos": [{ "file_id": "file-clip1" }],
"audio": [{ "file_id": "file-aud1" }]
}
}'

個数、ファイルごとのサイズ、合計サイズはリクエスト時に検証されます。リクエストした動画より長い動画・音声の参照はカットされ、先頭から seconds の長さ分だけが使われます。たとえば 8 秒の動画なら、各クリップの最初の 8 秒です。最良の結果を得るには、2〜15 秒のクリップを使ってください。

参照purpose最大個数最大サイズ推奨の長さ
画像vision830 MiB—
動画video250 MiB2〜15 秒
音声audio315 MiB2〜15 秒

次のルールがあります。

  • フレームと参照は混在できません。 リクエストは image_reference か references のどちらか一方のみを使い、両方は使えません(別々のリクエスト形式です)。
  • 音声にはアンカーが必要です。 references には画像または動画が少なくとも 1 つ必要で、音声単独は拒否されます。
  • 参照は合計 12 個までです。 上記の種類ごとの上限に加えて、references 全体で 12 個を超えるファイルは指定できません。
  • 入力ファイルは合計 256 MiB までです。 上記のファイルごとの上限に加えて、1 回のリクエストの入力ファイルの合計は 256 MiB を超えられません。同じファイルを 2 つの枠で使う場合は 2 回分として数えます。
  • 入力ファイルには 1 時間以上の有効期限が必要です。 1 時間以内に期限切れになるフレームや参照ファイルは拒否されます。再度アップロードしてください。
  • 枠ごとに受け付ける形式が決まっています。 最初と最後のフレームおよび参照画像は PNG、JPEG、WebP。参照動画は MP4、MOV、WebM。参照音声は WAV、MP3、FLAC、OGG、M4A、または MP4・WebM ファイルに入った音声です。GIF や HEIC など、その他の形式は拒否されます。
  • 入力ファイルは空であってはなりません。 0 バイトのフレームや参照ファイルは拒否されます。
  • 画像の縦横比は 1:4〜4:1 の範囲である必要があります。 長辺が短辺の 4 倍を超えるフレーム画像や参照画像は拒否されます。
  • 画像には標準的で読み取り可能なヘッダーが必要です。 JPEG は 8 ビットのベースラインまたはプログレッシブ形式に限られ、マルチピクチャ JPEG(一部の iPhone 写真など)や CMYK の JPEG は拒否されます。Ultra HDR 写真は使用できます。画像ヘッダーはファイルの先頭 64 KiB 以内にある必要があり、メタデータが非常に大きいとそれより後ろにずれることがあります。標準的な PNG または JPEG に変換してください。
  • 画像は静止画である必要があります。 アニメーション PNG やアニメーション WebP は拒否されます。

これらのルールに違反したリクエストは 400 invalid_value で拒否されます。可能な場合、param が原因の入力を示します。

レスポンスは status: "moderating" のジョブオブジェクトです。

{
"id": "video_9f2c1b7e4a3d4e8fa1b0c9d8e7f6a5b4",
"object": "video",
"model": "minimaxai/minimax-h3",
"prompt": "A paper boat drifting down a rain-soaked gutter at dusk",
"seconds": 8,
"status": "moderating",
"error": null,
"cost": "0.64000000",
"currency": "usd",
"created_at": 1755302400,
"completed_at": null,
"thumbnail": false
}

status は moderating、translating、queued、in_progress、completed、failed、canceled のいずれかです。現在 canceled で終わるジョブはありません。認識できないステータスは「実行中」として扱ってください — 中間ステージは今後追加される可能性があります。error はジョブが失敗した場合のみ設定されます。

すべてのジョブは moderating から始まり、プロンプトと参照メディアがコンテンツポリシーに照らして検査されます。通常は数秒(参照がある場合は最大 1 分程度)で完了し、許可されたジョブはプロンプトを英語へ翻訳する translating を経て queued に進み、通常どおりレンダリングされます。ポリシーに違反するリクエストはエラーコード moderation_blocked で失敗し、課金は発生しません。

{
"status": "failed",
"error": {
"code": "moderation_blocked",
"message": "Your request was rejected by our content moderation system."
}
}

モデレーションシステム自体が利用できない場合、ジョブはエラーコード moderation_unavailable でフェイルクローズします。何も判定されず課金もされないため、後で再送信してください。同様に、日本語プロンプトの翻訳ができない場合、ジョブはエラーコード translation_unavailable でフェイルクローズします。課金はされないため、後で再送信してください。

Terminal window
curl https://api.aiand.com/v1/videos/video_9f2c1b7e4a3d4e8fa1b0c9d8e7f6a5b4 \
-H "Authorization: Bearer $AIAND_API_KEY"

通常のクリップで数分かかります。終了ステータスになるまで 10〜30 秒間隔でポーリングしてください。より短い間隔でポーリングしてもレンダリングは早く終わりません。

status が completed になったらバイト列を取得します。レスポンスは JSON ではなく MP4 そのものです。

Terminal window
curl https://api.aiand.com/v1/videos/video_9f2c1b7e4a3d4e8fa1b0c9d8e7f6a5b4/content \
-H "Authorization: Bearer $AIAND_API_KEY" \
-o clip.mp4

completed でないジョブのコンテンツを要求すると 400 が返ります。

完了したジョブには通常、クリップの冒頭付近から切り出した幅 480 ピクセルの JPEG 静止画もあります。ダウンロードできるサムネイルがある場合、ジョブの thumbnail は true になります。ない場合は 404 を、ジョブが completed でない場合は 400 を返します。

Terminal window
curl https://api.aiand.com/v1/videos/video_9f2c1b7e4a3d4e8fa1b0c9d8e7f6a5b4/thumbnail \
-H "Authorization: Bearer $AIAND_API_KEY" \
-o clip.jpg

サムネイルは無料で、動画と一緒に削除されます。

Terminal window
curl "https://api.aiand.com/v1/videos?limit=20" \
-H "Authorization: Bearer $AIAND_API_KEY"

新しい順に返ります。limit の既定値は 20、上限は 100 です。ページングには after=<video_id> を指定します。

認証は任意です。API キーを付けると組織の請求通貨で価格が表示され、付けない場合は USD で表示されます。キーなしのリクエストは IP ごとに毎分 600 回までに制限されます。この上限は GET /v1/models を含む、キーなしで呼べるすべてのカタログエンドポイントで共有されます。

Terminal window
curl https://api.aiand.com/v1/videos/models

API キーを使う場合:

Terminal window
curl https://api.aiand.com/v1/videos/models \
-H "Authorization: Bearer $AIAND_API_KEY"

各エントリには秒単価が、出力解像度ごとに 1 行ずつ含まれます。

{
"object": "list",
"data": [
{
"id": "minimaxai/minimax-h3",
"object": "video_model",
"name": "MiniMaxAI/MiniMax-H3",
"description": null,
"pricing": [
{
"resolution": "768p",
"per_second": "0.080000",
"currency": "usd"
}
]
}
]
}

レンダリングの料金は 秒単価 × 秒数 で、完了時にのみ課金されます。失敗またはタイムアウトしたジョブが課金されることはありません。送信後のジョブはキャンセルできません。

1 回のレンダリングは数ドル規模で途中で中断できないため、料金は送信時に 秒単価 × リクエストした秒数 で確定します。その確定料金と実行中のレンダリング料金の合計を残高がカバーできない場合、ジョブは拒否されます。残高がゼロを超えていればリクエストを受け付けるチャットエンドポイントより厳格です。

ジョブオブジェクトの cost と currency は最初のレスポンスからこの確定料金を示します。残高からの差し引きは、レンダリングが正常に完了した後にのみ行われます。

ステータスコード意味
400invalid_value不正なボディ、範囲外の seconds、不正またはサイズ超過の参照、完了前のコンテンツ要求
403agreement_requiredこの人がコンソールのプレイグラウンドで現行の Video Service Terms に同意していない
402insufficient_credits残高がこのレンダリングの確定料金に満たない
402monthly_budget_reached組織の月間予算の残りが、このレンダリングと実行中のレンダリングの確定料金に満たない
404model_not_found不明なモデル、またはプランで利用できないモデル
429concurrency_limit_exceededプランで許可された同時レンダリング数に達している
429rate_limit_exceeded組織からの送信が 1 分あたり 10 回を超えた。Retry-After の秒数後に再試行
409conflictジョブが実行中、または審査中のため削除できない
503provider_unavailableこのモデルには動画エンジンが構成されていません

受け付け済みのジョブも失敗することがあります。たとえば次のエラーコードです。失敗したジョブは課金されません。

  • engine_unavailable:動画エンジンを利用できませんでした。後で再送信してください。
  • engine_rejected:エンジンがこのジョブを処理できませんでした。同じ入力で再試行しても同じ結果になります。解決しない場合はサポートまでお問い合わせください。

完了したジョブ(生成された動画と、プロンプトを含むジョブ記録)は、完了から 30 日後 に自動的に削除されます。残しておきたいものは、それまでにダウンロードしてください。

DELETE /v1/videos/{video_id} で即時に削除できます。

Terminal window
curl -X DELETE https://api.aiand.com/v1/videos/video_abc123 \
-H "Authorization: Bearer $AIAND_API_KEY"
{ "id": "video_abc123", "object": "video", "deleted": true }

削除は完全で、取り消せません。実行中のジョブは先に完了させる必要があります。ステータスが終了状態 になるまでポーリングしてから削除してください。