ナビゲーションにスキップ

MiniMax H3 Image

テキストと最大 16 枚の参照画像から画像を生成または編集します。1K、2K、4K または正確なピクセルサイズに対応し、1 回のレンダリングで使ったトークンで課金されます。

  • 非同期:作成の呼び出しはすぐにタスク ID を返し、タスクが成功すると画像を受け取れます。
  • 1 タスクにつき画像 1 枚です。複数枚ほしいときは、複数のタスクを作成してください。
  • テキストから画像、または公開 HTTPS リンクで渡した最大 16 枚の参照画像を編集・合成します。
  • resolution と aspect_ratio で画面サイズを選ぶか、2720x1536 のような 1 つの正確な size を使います。両方は使えません。aspect_ratio の既定値は auto で、プロンプトと参照画像からモデルがフレームを決めます。
  • トークン課金:テキスト入力(MiniMax のプロンプト強化を含むプロンプト)、参照画像の入力、画像出力に、それぞれ 100 万トークンあたりの単価がかかります。下の 1 枚あたりの価格は見積もりです。resolution の既定値は 4K で、1K と 2K は出力トークンが同じなので価格も同じです。
  • 結果は png(既定)、jpeg、webp のいずれかで、output_format で選びます。失敗したタスクは課金されません。

MiniMax H3 Image は MiniMax の画像モデルで、MiniMax の公式リスト価格の 30% 引きでトークン課金されます。Highspeed ラインが必要な場合は minimax-h3-image-highspeed を使ってください。リクエストは同じで、画像入力と画像出力の 100 万トークンあたりの単価が高くなります。

POST/v1/images/tasks試してみる

このモデルをテスト画面で開きます。BeatAPI の API キーを入力するとタスクを作成できます。実際に呼び出され、ご自身の残高から課金されます。

モデル ID

MiniMax H3 Image の 2 つのモデルは同じエンドポイントを使い、同じフィールドを受け付けます。下の値はゲートウェイ契約からそのまま取っています。

モデル IDresolutionimages の上限output_format説明
minimax-h3-image1K, 2K, 4K16png, jpeg, webpMiniMax の画像モデル。100 万トークンあたりの単価は価格表を参照してください。
minimax-h3-image-highspeed1K, 2K, 4K16png, jpeg, webpHighspeed ライン。フィールドと制限は同じで、画像入力と画像出力の単価が高くなります。価格表を参照してください。

エンドポイントと認証

POST https://api.beatapi.io/v1/images/tasks

Authorization string 必須

BeatAPI の API キーを Bearer <BEATAPI_API_KEY> の形式で送信します。キーはダッシュボードで作成できます。キーはサーバー側で保管し、ブラウザーやモバイルアプリに含めないでください。

ボディは JSON で送信し、Content-Type: application/json を指定します。Idempotency-Key は任意です。論理的に 1 件のリクエストごとに一意の値(255 文字以内)を送り、まったく同じボディを再試行するときだけ再利用してください。24 時間以内に同じキーと同じボディで再試行すると、最初のレスポンスが Idempotent-Replayed: true 付きで再度返されます。同じキーで異なるボディを送ると 409 idempotency_conflict が返ります。2xx 以外のレスポンスは保存されないため、400 や 402 の後の再試行は改めて実行されます。

リクエストの流れ

1

タスクを作成する

下記のパラメーターをエンドポイントに POST します。201 が返れば、タスクが受け付けられ、料金が残高から仮確保されたことを意味します。処理はバックグラウンドで実行されます。data.id を保存してください。

2

完了を待つ

GET /v1/tasks/{task_id} を呼び出し、status が succeeded または failed になるまで、呼び出しの間隔を data.poll_after_seconds(画像は 5 秒、動画は 8 秒)だけ空けてください。あるいは task.succeeded と task.failed のWebhookを登録することもできます。処理タイムアウトで停止したタスクはイベントを送信しないため、フォールバックとしてポーリングも続けてください。

3

結果を保存する

succeeded の場合は、すべての data.output.media[].url をダウンロードし、必要なファイルを保存してください。結果 URL がいつまで利用できるかは保証されません。failed の場合は、data.error_code と data.error_message を確認してください。仮確保された金額は残高に戻されます。data.retryable は、同じリクエストをもう一度送れば成功する可能性があるかどうかを示します。

入力モード

モード必須の入力備考
テキストから画像model、promptimages は送りません。
画像の編集・合成model、prompt、images公開 HTTPS の画像リンクを 1〜16 件。変更・維持・合成したい内容を prompt に書きます。

リクエストパラメーター

model string 必須

実行するモデル。

値:minimax-h3-image

値が正しくない場合

  • 指定がない:"model" is required
  • 未知のモデル ID:"model" minimax-image-9 is not catalogued
  • 動画モデルをこのエンドポイントに送った:"model" seedance-2.5 is served by POST /v1/videos/tasks, not this endpoint

prompt string 必須

描くもの、または参照画像で変えたいこと。平易な言葉が最適です:被写体、スタイル、照明、構図、画像に入れたい文字。

長さ:1–5000 文字

  • 長さは文字数で数えます(日中韓の文字は 1 文字として数えます)。
  • images を送るときは、どの画像が何の役割かを書いてください。例:「商品は 1 枚目、背景は 2 枚目を使う」。
  • MiniMax のプロンプト強化はすべての注文で有効です。入力にテキストトークンが加わり、テキスト入力の単価で課金されます。

値が正しくない場合

  • 指定がない:"prompt" is required
  • 空、または上限より長い:"prompt" has an unsupported length
  • 文字列ではない:"prompt" must be a string

images string[] 任意

編集・合成する参照画像。このフィールドを送ると、リクエストはテキストから画像から画像編集に切り替わります。

要素数:1–16
各要素は公開されている https:// の URL です。ローカルファイルは先に アップロード(POST /v1/files)し、返された data.url を渡してください。

  • 各リンクは、公開 HTTPS で画像ファイルそのもの(PNG、JPEG、WebP)を返し、50 MB 以下である必要があります。ゲートウェイはタスクを作る前に各リンクの先頭バイトをダウンロードし、ファイル名や Content-Type ではなくそのバイトから種類を判定します。
  • Web ページ、ログイン画面、期限切れの署名付き URL、ホットリンク防止のホストへのリンクは、画像を返さないため拒否されます。
  • エラーメッセージ中の位置は 0 始まりです:images[0] が 1 件目のリンクです。
  • 参照画像は画像入力として、専用の 100 万トークンあたりの単価で課金されます(価格を参照)。

値が正しくない場合

  • 上限を超えている:"images" accepts at most 16 items
  • 空の配列:"images" requires at least 1 item
  • https:// のリンクではない:"images[0]" must be a public HTTPS URL
  • プライベートまたは安全でないアドレス:"images[0]" must be a publicly reachable HTTPS image URL
  • ホストが 4xx エラーを返す:"images[0]" could not be downloaded: the URL returned HTTP 404
  • リンク先が PNG、JPEG、WebP 以外を返す:"images[0]" is not a PNG, JPEG or WebP image: the URL returned text/html
  • 50 MB を超えている:"images[2]" is 63.4 MB; images must be 50 MB or smaller

例

"images": [
"https://cdn.beatapi.io/samples/smart-bottle.png",
"https://cdn.beatapi.io/samples/neon-singer.png"
]

aspect_ratio string 任意デフォルト: auto

画像の縦横比(幅:高さ)。resolution と一緒に送るか、両方を省略して size を送ります。

指定できる値:auto, 1:1, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 16:9, 9:16, 2:1, 1:2, 3:1, 1:3, 21:9, 9:21
デフォルト:auto

  • 既定値は auto:プロンプトと、あれば参照画像からモデルがフレームを決めます。形が重要なときは比率を指定してください。
  • パノラマ比率の 2:1、1:2、3:1、1:3、21:9、9:21 も使えます。最も横長・縦長のフレームは 3:1 です。
  • size と同時には使えません。

値が正しくない場合

  • 一覧にない値:"aspect_ratio" must be one of: [auto 1:1 3:2 2:3 4:3 3:4 5:4 4:5 16:9 9:16 2:1 1:2 3:1 1:3 21:9 9:21]
  • size と一緒に送った:"size" already fixes the output; do not send "aspect_ratio" with it

resolution string 任意デフォルト: 4K

画像のサイズ区分:1K、2K、4K。区分が大きいほど画像も大きくなります。正確なピクセルサイズは aspect_ratio に応じてモデルが決めます。

指定できる値:1K, 2K, 4K
デフォルト:4K

  • このフィールドを省略すると 4K になります。
  • 1K と 2K は出力トークンが同じなので、価格も同じです。4K は約 4 倍の出力トークンを使い、価格が高くなります(価格を参照)。
  • 大文字の K を使ってください:2k は拒否されます。
  • このページは、区分ごとの正確なピクセル寸法を保証しません。正確なフレームが必要なときは size を送ってください。
  • size と同時には使えません。size は自分でサイズを指定します。

値が正しくない場合

  • 一覧にない値:"resolution" must be one of: [1K 2K 4K]
  • size と一緒に送った:"size" already fixes the output; do not send "resolution" with it

size string 任意

ピクセル単位の正確な出力フレーム。幅x高さ の形式で、例は 2720x1536 です。resolution と aspect_ratio の代わりになります。

  • 合計ピクセル数は 655,360〜20,000,000 の範囲で、長辺は短辺の 3 倍以下にします。辺の長さに倍数の制約はありません。
  • フレームは指定どおりに正確にレンダリングされ、丸められません。
  • 区切りには x、X、× が使えます。前後の空白は無視されます。
  • 課金はレンダリングが実際に使ったトークンに従います:フレームが大きいほど出力トークンが増え、価格も高くなります(価格を参照)。
  • resolution や aspect_ratio は、既定値であっても一緒に送らないでください。

値が正しくない場合

  • 文字列ではない:"size" must be a string
  • 幅x高さ の形式ではない(数字だけ、auto、カンマ):"size" must be WIDTHxHEIGHT in pixels, for example 2720x1536
  • ピクセル数が少なすぎる、または多すぎる:"size" must have between 655,360 and 20,000,000 pixels; 512x512 has 262,144
  • 3:1 より横長または縦長:"size" must not be wider or taller than 3:1
  • resolution と一緒に送った:"size" already fixes the output; do not send "resolution" with it
  • aspect_ratio と一緒に送った:"size" already fixes the output; do not send "aspect_ratio" with it

例

"size": "2720x1536"

output_format string 任意デフォルト: png

画像のファイル形式:png、jpeg、webp。

指定できる値:png, jpeg, webp
デフォルト:png

  • 既定値は png です。
  • 形式によって価格は変わりません。
  • 保存されたファイルの種類は、出力の mime_type を読んでください。

値が正しくない場合

  • 一覧にない値:"output_format" must be one of: [png jpeg webp]

例

"output_format": "webp"

ゲートウェイはタスク作成前に、次の組み合わせも確認します。

  • size は 幅x高さ で指定し、resolution と aspect_ratio の代わりに使用します。総画素数は 655,360~20,000,000、長辺と短辺の比は 3:1 以下で、指定どおりに正確にレンダリングされ、丸められません。
  • 生成ごとに実際に使ったトークン数(プロンプト強化を含むテキスト入力、参照画像、画像出力)を表示価格の単価で課金します。記載の 1 枚あたりの価格は見積もりで、1K と 2K は出力トークンが同じです。
  • aspect_ratio: auto では、プロンプトと入力画像からモデルがフレームを決めます。

入力メディアの上限

ゲートウェイはタスク作成前にすべての入力を読み取り、次の上限を超えるものは、その入力を示す 400 bad_request で拒否します。課金はされません。

  • 参照画像:PNG、JPEG、WebP(ファイルの中身から判定)。1 枚あたり 50 MB 以下(10 進の MB。ホストがサイズを示す場合に確認)。リンクは 1〜16 件。GIF、HEIC、SVG は拒否されます。
  • 参照画像自体のピクセル数や縦横比の制限は確認しません。
  • ホストが時間内に応答しなくても、作成時にはリンクを拒否しません。ゲートウェイはタスクの割り当て時にもう一度取得し、それでも取得できないリンクはタスクを失敗させ、返金されます。
  • ローカルのファイルがありますか? POST /v1/files でアップロードし、返ってきた data.url を渡してください。

フレームの選び方:resolution と aspect_ratio、または size

画像の大きさと幅を指定する方法は 2 つあり、同時には使えません:

  • 区分と比率。 resolution(1K、2K、4K)を送り、形を指定したいときは aspect_ratio も送ります。両方を省略すると 4K と auto になり、モデルがフレームを決めます。
  • 正確なサイズ。 size だけを送ります。例:2720x1536。655,360〜20,000,000 ピクセル、3:1 以下で、指定どおりに正確にレンダリングされます。

size を resolution または aspect_ratio と一緒に送ると、"size" already fixes the output; do not send "resolution" with it(または "aspect_ratio")で拒否されます。もう一方のフィールドが既定値でも、この確認は行われます。

見積もりの前提

下の価格表の 1 枚あたりの価格は見積もりです。いずれも、テキスト 3,000 トークン(プロンプトと MiniMax のプロンプト強化)と、その区分の出力トークンを前提とし、参照画像はありません。実際の請求は、レンダリングが実際に使ったトークンで精算されます。

resolution見積もりの出力トークン
1K4,096
2K4,096
4K16,384

このモデルが受け付けないフィールド

画像エンドポイントは、他の画像モデルが使うフィールドをいくつか知っています。ここでそれらを送ると、無視されずに拒否されるため、効果のない設定に課金されることはありません:

  • background、quality、seed、enhance_prompt → field "background" is not supported by model minimax-h3-image(送ったフィールドと呼び出したモデルが入ります)。
  • その他の未知のフィールド(n や moderation など) → unknown field: n。n はありません:1 タスクで作る画像は 1 枚です。

リクエスト例

curl --request POST \
--url https://api.beatapi.io/v1/images/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "minimax-h3-image",
"prompt": "A minimalist product photo of a glass water bottle on wet black stone, soft rim light, shallow depth of field",
"aspect_ratio": "3:2",
"resolution": "2K"
}'

テキストから画像

プロンプトから 2K の横長画像を作ります。区分と比率を指定します。

curl --request POST \
--url https://api.beatapi.io/v1/images/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "minimax-h3-image",
"prompt": "A minimalist product photo of a glass water bottle on wet black stone, soft rim light, shallow depth of field",
"aspect_ratio": "3:2",
"resolution": "2K"
}'

フレームをモデルに任せる

プロンプトだけ:resolution は 4K、aspect_ratio は auto で、モデルがフレームを決めます。

curl --request POST \
--url https://api.beatapi.io/v1/images/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "minimax-h3-image",
"prompt": "A tall, narrow travel poster of a mountain railway at dawn, bold flat colours"
}'

画像を 1 枚編集

商品はそのままに、背景を変えます。

curl --request POST \
--url https://api.beatapi.io/v1/images/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "minimax-h3-image",
"prompt": "Keep the bottle exactly as it is. Replace the background with a sunlit kitchen counter and add a soft reflection under the bottle.",
"images": [
"https://cdn.beatapi.io/samples/smart-bottle.png"
],
"aspect_ratio": "1:1",
"resolution": "2K"
}'

複数の画像を合成

プロンプトで、各参照画像を位置で呼びます。

curl --request POST \
--url https://api.beatapi.io/v1/images/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "minimax-h3-image",
"prompt": "Place the bottle from the first image on a neon-lit stage like the one in the second image. Keep the bottle label readable.",
"images": [
"https://cdn.beatapi.io/samples/smart-bottle.png",
"https://cdn.beatapi.io/samples/neon-singer.png"
],
"aspect_ratio": "16:9",
"resolution": "2K"
}'

正確なサイズ

2720x1536 のフレームを WebP で。size は単独で使います:resolution も aspect_ratio も送りません。

curl --request POST \
--url https://api.beatapi.io/v1/images/tasks \
--header "Authorization: Bearer $BEATAPI_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "minimax-h3-image",
"prompt": "A flat illustration of a lighthouse on a cliff at dawn, pastel colours, clean shapes",
"size": "2720x1536",
"output_format": "webp"
}'

レスポンス

タスクの作成(201)

タスクオブジェクトです。タスクが成功するまで output は null です。「実行中」と記載されたフィールドは、タスクの完了後に表示されなくなります。

{
"data": {
"id": "task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ",
"object": "task",
"task_kind": "image",
"capability_id": "minimax-h3-image",
"capability_version": 1,
"media_type": "image",
"model": "minimax-h3-image",
"status": "queued",
"stage": "queued",
"created_at": 1791993600,
"updated_at": 1791993600,
"completed_at": null,
"poll_after_seconds": 5,
"output": null,
"usage": {
"credits_reserved": 0.015725,
"credits_settled": 0,
"credits_refunded": 0,
"credits_charged": 0.015725
},
"request_id": "req_5f0c2a9e4b7d4e31",
"error_code": null,
"error_message": null
}
}
フィールド型説明
data.idstringタスク ID です。task_ の後に英数字 32 文字が続きます。ポーリングや Webhook イベントとの照合に使います。
data.objectstring常に task です。
data.task_kindstringimage または video です。
data.capability_idstring送信したモデル ID です。
data.capability_versionintegerモデルの仕様バージョンです。現在は 1 です。
data.media_typestringimage または video です。
data.modelstring送信したモデル ID です(capability_id と同じ)。
data.statusstringqueued、processing、succeeded、failed のいずれかです。最終状態は後ろの 2 つだけです。
data.stagestringstatus と同じ値です。古いクライアント向けに残されています。
data.created_atintegerタスクの作成日時(Unix 秒)です。
data.updated_atinteger最終更新日時(Unix 秒)です。
data.completed_atinteger | nullタスクの完了日時(Unix 秒)です。実行中は null です。
data.poll_after_secondsinteger実行中のみ。次のポーリングまでに待つ秒数です(画像は 5、動画は 8)。
data.typical_secondsobject実行中のみ、直近のタスクが十分にある場合に含まれます。直近 window の samples 件のタスクについて、完了までの時間(秒)の p50 と p90 を示します。
data.outputobject | null結果です。status が succeeded になるまでは null です。下の出力フィールドを参照してください。
data.usage.credits_reservednumberタスク作成時に残高から仮確保された金額(USD)です。
data.usage.credits_chargednumberこのタスクの料金(USD)です。失敗したタスクでは 0 です。
data.usage.credits_settlednumber最終的に差し引かれた金額(USD)です。タスクが成功した時点で設定され、それ以外では 0 です。
data.usage.credits_refundednumber残高に戻された金額(USD)です。失敗したタスクでは、返金が記録された時点で仮確保した金額と一致します。
data.usage.billable_duration_secondsinteger動画のみ。料金の算定に使われた秒数です。モデルが長さを報告しない場合は含まれません。
data.request_idstringリクエスト ID です。サポートに問い合わせる際に添えてください。
data.error_codestring | null失敗コードです。タスクが失敗した場合以外は null です。
data.error_messagestring | null何が問題で、何を変更すればよいかを示します。タスクが失敗した場合以外は null です。

完了したタスク

GET /v1/tasks/{task_id} は HTTP 200 と status: "succeeded" を返し、結果は data.output に入ります。

{
"data": {
"id": "task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ",
"object": "task",
"task_kind": "image",
"capability_id": "minimax-h3-image",
"capability_version": 1,
"media_type": "image",
"model": "minimax-h3-image",
"status": "succeeded",
"stage": "succeeded",
"created_at": 1791993600,
"updated_at": 1791993690,
"completed_at": 1791993690,
"output": {
"media": [
{
"type": "image",
"url": "https://media.beatapi.io/outputs/task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ/0.png",
"mime_type": "image/png"
}
],
"r2_url": "https://media.beatapi.io/outputs/task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ/0.png"
},
"usage": {
"credits_reserved": 0.015725,
"credits_settled": 0.015725,
"credits_refunded": 0,
"credits_charged": 0.015725
},
"request_id": "req_5f0c2a9e4b7d4e31",
"error_code": null,
"error_message": null
}
}

出力フィールド

フィールド型説明
output.mediaobject[]生成されたファイル。このモデルでは 1 件です。
output.media[].typestring常に image です。
output.media[].urlstring保存された画像への HTTPS リンク。ダウンロードして保管してください。保存期間は約束されません。
output.media[].mime_typestring保存されたファイルの種類:output_format に従い image/png、image/jpeg、image/webp のいずれか。
output.r2_urlstring最初のメディア URL の再掲で、古いクライアント向けです。media を読んでください。

失敗したタスク

失敗したタスクも、GET /v1/tasks/{task_id} では HTTP 200 になります。失敗はボディに示されます。仮確保された金額は全額戻されるため、課金されません。

{
"data": {
"id": "task_7Qm2Xc9LpR4vT8sKa1Nf6YbH3eWdJ0uZ",
"object": "task",
"task_kind": "image",
"capability_id": "minimax-h3-image",
"capability_version": 1,
"media_type": "image",
"model": "minimax-h3-image",
"status": "failed",
"stage": "failed",
"created_at": 1791993600,
"updated_at": 1791993690,
"completed_at": 1791993690,
"output": null,
"usage": {
"credits_reserved": 0.015725,
"credits_settled": 0,
"credits_refunded": 0.015725,
"credits_charged": 0
},
"retryable": true,
"request_id": "req_5f0c2a9e4b7d4e31",
"error_code": "processing_failed",
"error_message": "The task failed during processing on our side. Retry; a failed task is refunded."
}
}
フィールド型説明
data.error_codestringbad_request と content_policy_violation(リクエストを修正してください)、または processing_unavailable、processing_timeout、processing_failed、result_transfer_failed(時間をおいて再試行してください)のいずれかです。エラーを参照してください。
data.error_messagestring問題と対処方法を示す文です。
data.retryableboolean失敗したタスクにのみ含まれます。同じリクエストをもう一度送れば成功する可能性がある場合は true です。
data.usageobject返金が記録された時点(通常はタスクが失敗した瞬間)で、credits_charged と credits_settled は 0 になり、credits_refunded は credits_reserved と一致します。

完全なコード例

タスクを作成し、サーバーが示すポーリング間隔で完了を待ち、結果の URL を出力します。環境変数に BEATAPI_API_KEY を設定し、requests をインストールしてください。

import os
import time
import uuid
import requests
API = "https://api.beatapi.io"
HEADERS = {"Authorization": f"Bearer {os.environ['BEATAPI_API_KEY']}"}
def create_task(body: dict) -> dict:
# One Idempotency-Key per logical request: a retry with the same key cannot create a second task.
headers = {**HEADERS, "Idempotency-Key": str(uuid.uuid4())}
for attempt in range(3):
response = requests.post(f"{API}/v1/images/tasks", headers=headers, json=body, timeout=60)
if response.status_code in (429, 503) and attempt < 2:
time.sleep(int(response.headers.get("Retry-After", 10)))
continue
break
try:
payload = response.json()
except ValueError: # an edge error page is not JSON
response.raise_for_status()
raise
if not response.ok:
error = payload["error"]
raise RuntimeError(f"{response.status_code} {error['code']}: {error['message']} (request_id={error.get('request_id')})")
return payload["data"]
def wait_for_task(task_id: str, timeout_seconds: int = 1800) -> dict:
deadline = time.monotonic() + timeout_seconds
while time.monotonic() < deadline:
response = requests.get(f"{API}/v1/tasks/{task_id}", headers=HEADERS, timeout=30)
if response.status_code == 429 or response.status_code >= 500:
time.sleep(int(response.headers.get("Retry-After", 10)))
continue
response.raise_for_status()
task = response.json()["data"]
if task["status"] in ("succeeded", "failed"):
return task
time.sleep(task.get("poll_after_seconds", 5))
raise TimeoutError(f"task {task_id} is still running; keep polling later")
task = create_task({
"model": "minimax-h3-image",
"prompt": "A minimalist product photo of a glass water bottle on wet black stone, soft rim light, shallow depth of field",
"aspect_ratio": "3:2",
"resolution": "2K"
})
print("created", task["id"])
task = wait_for_task(task["id"])
if task["status"] == "failed":
raise SystemExit(f"{task['error_code']}: {task['error_message']}")
for item in task["output"]["media"]:
print(item["url"])

課金

  • 下の表の 100 万トークンあたりの単価で、トークン課金されます:テキスト入力(MiniMax のプロンプト強化を含むプロンプト)、画像入力(images の参照画像)、画像出力。トークンはモデルが数えます。resolution または size、プロンプト、参照画像のすべてがトークン数を変えます。
  • 1 枚あたりの価格は、各 resolution を参照画像なしで 1 回レンダリングしたときの見積もりで、テキスト 3,000 トークンと上の表の出力トークンで計算しています。1K と 2K は出力トークンが同じなので、見積もりも同じです。
  • タスクを作成すると、その区分の見積もりが残高(キーにクォータがあればそのクォータ)から確保されます。成功すると、レンダリングが実際に使ったトークンで精算されるため、最終的な data.usage は確保額と異なることがあります。タスクが作られる前に拒否されたリクエストは課金されません。
  • 失敗したタスクは全額返金されます。

現在の定価です。料金ページと同じ金額です。割引を個別に契約しているアカウントでは、より低い金額になります。実際に課金された金額は、タスクの data.usage で確認できます。

オプション定価(USD)
1 枚 · 1K · 実測トークン数での見積もり$0.015725
1 枚 · 2K · 実測トークン数での見積もり$0.015725
1 枚 · 4K · 実測トークン数での見積もり$0.048411
テキスト入力 · 100万トークンあたり$1.61
画像入力 · 100万トークンあたり$1.05
画像出力 · 100万トークンあたり$2.66

よくあるエラー

エラーまたは症状原因対処
400 "size" already fixes the output; do not send "resolution" with itsize を resolution または aspect_ratio と一緒に送りました。後者が既定値でも同じです。size だけを送るか、size なしで resolution と aspect_ratio を送ってください。
400 "size" must have between 655,360 and 20,000,000 pixels; 512x512 has 262,144フレームのピクセル数が少なすぎるか多すぎます。合計ピクセル数を 655,360〜20,000,000 の範囲に収めてください。
400 "size" must not be wider or taller than 3:1長辺が短辺の 3 倍を超えています。3:1 以下のフレームにしてください。例:3000x1000。
400 "resolution" must be one of: [1K 2K 4K]小文字の 2k、8K、または resolution に 2048x2048 のようなピクセルサイズを書きました。1K、2K、4K を送るか、ピクセルには size フィールドを使ってください。
400 "output_format" must be one of: [png jpeg webp]gif、jpg など別のファイル形式を送りました。png、jpeg、webp を送るか、フィールドを省略して png にしてください。
400 field "background" is not supported by model minimax-h3-image他の画像モデルのフィールド(background、quality、seed、enhance_prompt)を送りました。フィールドを削除してください。
400 unknown field: n1 つのタスクで複数の画像を求めました。n を削除し、画像ごとにタスクを 1 つ作成してください。
400 "images[0]" must be a public HTTPS URLhttp:// のリンク、data: URI、ローカルパスを送りました。ファイルを HTTPS で公開するか、POST /v1/files でアップロードして data.url を使ってください。
400 "images[1]" is not a PNG, JPEG or WebP image: the URL returned text/htmlリンク先がファイルではなく、Web ページ、ログイン画面、期限切れの署名付き URL です。画像ファイルへ直接リンクしてください。
400 "images[0]" could not be downloaded: the URL returned HTTP 403ホストがサーバーからのダウンロードを遮断しています(ホットリンク防止、またはプライベートなバケット)。ファイルを公開するか、POST /v1/files でアップロードしてください。
請求額が 1 枚あたりの価格と異なる請求はレンダリングが使ったトークンで精算されます。1 枚あたりの価格は見積もりです。完了したタスクの data.usage を読んでください。
タスクが content_policy_violation で failed になるプロンプト、参照画像、または生成された画像がモデレーションで拒否されました。プロンプトか画像を変更してください。そのまま再試行しても失敗します。課金はありません。
タスクが processing_timeout で failed になる処理時間内に画像が完成しませんでした。再試行してください。失敗したタスクは返金されています。

HTTP エラー早見表

タスクが作られる前のエラーは、2xx 以外のレスポンスで返されます。課金はされません。error.code または error.retryable で処理を分岐してください。message には問題の内容が示されます。全一覧と再試行のルールはエラーにあります。

{
"error": {
"code": "bad_request",
"message": "\"prompt\" is required",
"retryable": false,
"request_id": "req_5f0c2a9e4b7d4e31"
}
}
HTTP ステータスerror.code対処方法
400bad_request, content_policy_violationリクエストを修正してください。メッセージにフィールド名が示されます。そのまま再試行しないでください。
401missing_api_key, invalid_api_key(古いクライアントでは unauthorized が返ることがあります)有効なキーを Authorization: Bearer <key> で送信してください。
402insufficient_credits残高をチャージするか、キーのクォータを引き上げてから、再度送信してください。
403forbiddenこのキーまたはアカウントでは、このモデルを利用できない可能性があります(たとえば、無料クレジットは一部のモデルにのみ使えます)。そのまま再試行しないでください。
404not_foundGET /v1/tasks/{task_id} の場合:このキーのアカウントに該当するタスクが存在しません。ID を確認してください。
409idempotency_conflict新しい Idempotency-Key を使うか、同じキーの最初のリクエストが完了するまで待ってください。
429rate_limit_exceededRetry-After の秒数(error.retry_after_seconds にも含まれます)だけ待ってから再試行してください。
500internal_errorバックオフを入れて再試行してください。解消しない場合は、request_id を添えてサポートにお問い合わせください。
503processing_unavailable, processing_timeout, processing_failed, result_transfer_failed課金はされていません。指数バックオフで再試行してください。

認証

AuthorizationBearer

API キーを Authorization: Bearer <BEATAPI_API_KEY> として送信してください。

ヘッダー

Idempotency-Keystringオプション<=255 characters

ボディは JSON で送信し、Content-Type: application/json を指定します。Idempotency-Key は任意です。論理的に 1 件のリクエストごとに一意の値(255 文字以内)を送り、まったく同じボディを再試行するときだけ再利用してください。24 時間以内に同じキーと同じボディで再試行すると、最初のレスポンスが Idempotent-Replayed: true 付きで再度返されます。同じキーで異なるボディを送ると 409 idempotency_conflict が返ります。2xx 以外のレスポンスは保存されないため、400 や 402 の後の再試行は改めて実行されます。

リクエスト

This endpoint expects an object.
modelenum必須

実行するモデル。

値:minimax-h3-image

値が正しくない場合

  • 指定がない:"model" is required
  • 未知のモデル ID:"model" minimax-image-9 is not catalogued
  • 動画モデルをこのエンドポイントに送った:"model" seedance-2.5 is served by POST /v1/videos/tasks, not this endpoint
許可された値:
promptstring必須1-5000 characters

描くもの、または参照画像で変えたいこと。平易な言葉が最適です:被写体、スタイル、照明、構図、画像に入れたい文字。

長さ:1–5000 文字

  • 長さは文字数で数えます(日中韓の文字は 1 文字として数えます)。
  • images を送るときは、どの画像が何の役割かを書いてください。例:「商品は 1 枚目、背景は 2 枚目を使う」。
  • MiniMax のプロンプト強化はすべての注文で有効です。入力にテキストトークンが加わり、テキスト入力の単価で課金されます。

値が正しくない場合

  • 指定がない:"prompt" is required
  • 空、または上限より長い:"prompt" has an unsupported length
  • 文字列ではない:"prompt" must be a string
aspect_ratioenumオプションデフォルト値 auto

画像の縦横比(幅:高さ)。resolution と一緒に送るか、両方を省略して size を送ります。

指定できる値:auto, 1:1, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 16:9, 9:16, 2:1, 1:2, 3:1, 1:3, 21:9, 9:21

デフォルト:auto

  • 既定値は auto:プロンプトと、あれば参照画像からモデルがフレームを決めます。形が重要なときは比率を指定してください。
  • パノラマ比率の 2:1、1:2、3:1、1:3、21:9、9:21 も使えます。最も横長・縦長のフレームは 3:1 です。
  • size と同時には使えません。

値が正しくない場合

  • 一覧にない値:"aspect_ratio" must be one of: [auto 1:1 3:2 2:3 4:3 3:4 5:4 4:5 16:9 9:16 2:1 1:2 3:1 1:3 21:9 9:21]
  • size と一緒に送った:"size" already fixes the output; do not send "aspect_ratio" with it
imageslist of stringsオプション

編集・合成する参照画像。このフィールドを送ると、リクエストはテキストから画像から画像編集に切り替わります。

要素数:1–16

各要素は公開されている https:// の URL です。ローカルファイルは先に アップロード(POST /v1/files)し、返された data.url を渡してください。

  • 各リンクは、公開 HTTPS で画像ファイルそのもの(PNG、JPEG、WebP)を返し、50 MB 以下である必要があります。ゲートウェイはタスクを作る前に各リンクの先頭バイトをダウンロードし、ファイル名や Content-Type ではなくそのバイトから種類を判定します。
  • Web ページ、ログイン画面、期限切れの署名付き URL、ホットリンク防止のホストへのリンクは、画像を返さないため拒否されます。
  • エラーメッセージ中の位置は 0 始まりです:images[0] が 1 件目のリンクです。
  • 参照画像は画像入力として、専用の 100 万トークンあたりの単価で課金されます(価格を参照)。

値が正しくない場合

  • 上限を超えている:"images" accepts at most 16 items
  • 空の配列:"images" requires at least 1 item
  • https:// のリンクではない:"images[0]" must be a public HTTPS URL
  • プライベートまたは安全でないアドレス:"images[0]" must be a publicly reachable HTTPS image URL
  • ホストが 4xx エラーを返す:"images[0]" could not be downloaded: the URL returned HTTP 404
  • リンク先が PNG、JPEG、WebP 以外を返す:"images[0]" is not a PNG, JPEG or WebP image: the URL returned text/html
  • 50 MB を超えている:"images[2]" is 63.4 MB; images must be 50 MB or smaller

例

"images": [
  "https://cdn.beatapi.io/samples/smart-bottle.png",
  "https://cdn.beatapi.io/samples/neon-singer.png"
]
output_formatenumオプションデフォルト値 png

画像のファイル形式:png、jpeg、webp。

指定できる値:png, jpeg, webp

デフォルト:png

  • 既定値は png です。
  • 形式によって価格は変わりません。
  • 保存されたファイルの種類は、出力の mime_type を読んでください。

値が正しくない場合

  • 一覧にない値:"output_format" must be one of: [png jpeg webp]

例

"output_format": "webp"
許可された値:
resolutionenumオプションデフォルト値 4K

画像のサイズ区分:1K、2K、4K。区分が大きいほど画像も大きくなります。正確なピクセルサイズは aspect_ratio に応じてモデルが決めます。

指定できる値:1K, 2K, 4K

デフォルト:4K

  • このフィールドを省略すると 4K になります。
  • 1K と 2K は出力トークンが同じなので、価格も同じです。4K は約 4 倍の出力トークンを使い、価格が高くなります(価格を参照)。
  • 大文字の K を使ってください:2k は拒否されます。
  • このページは、区分ごとの正確なピクセル寸法を保証しません。正確なフレームが必要なときは size を送ってください。
  • size と同時には使えません。size は自分でサイズを指定します。

値が正しくない場合

  • 一覧にない値:"resolution" must be one of: [1K 2K 4K]
  • size と一緒に送った:"size" already fixes the output; do not send "resolution" with it
許可された値:
sizestringオプション形式: "image-size"

ピクセル単位の正確な出力フレーム。幅x高さ の形式で、例は 2720x1536 です。resolution と aspect_ratio の代わりになります。

  • 合計ピクセル数は 655,360〜20,000,000 の範囲で、長辺は短辺の 3 倍以下にします。辺の長さに倍数の制約はありません。
  • フレームは指定どおりに正確にレンダリングされ、丸められません。
  • 区切りには x、X、× が使えます。前後の空白は無視されます。
  • 課金はレンダリングが実際に使ったトークンに従います:フレームが大きいほど出力トークンが増え、価格も高くなります(価格を参照)。
  • resolution や aspect_ratio は、既定値であっても一緒に送らないでください。

値が正しくない場合

  • 文字列ではない:"size" must be a string
  • 幅x高さ の形式ではない(数字だけ、auto、カンマ):"size" must be WIDTHxHEIGHT in pixels, for example 2720x1536
  • ピクセル数が少なすぎる、または多すぎる:"size" must have between 655,360 and 20,000,000 pixels; 512x512 has 262,144
  • 3:1 より横長または縦長:"size" must not be wider or taller than 3:1
  • resolution と一緒に送った:"size" already fixes the output; do not send "resolution" with it
  • aspect_ratio と一緒に送った:"size" already fixes the output; do not send "aspect_ratio" with it

例

"size": "2720x1536"

レスポンス

タスクオブジェクトです。タスクが成功するまで output は null です。「実行中」と記載されたフィールドは、タスクの完了後に表示されなくなります。

エラー

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
403
Forbidden Error
409
Conflict Error
429
Too Many Requests Error
500
Internal Server Error
503
Service Unavailable Error