Midjourney
Midjourney で非同期に画像を生成:パラメータ、レスポンス、注意事項。
| 項目 | 値 |
|---|---|
| Base URL | https://api.hop-base.com/v1 |
| タスクを送信 | POST /v1/images/generations |
| タスクを照会 | GET /v1/video/tasks/{task_id} |
| タスク一覧 | GET /v1/video/tasks |
| キーのプラン | 「Midjourney 画像生成」 |
Midjourney は非同期 API です。タスクを送信して HopBase のタスク ID を受け取り、それをポーリングして結果を取得します。1 タスクは必ず 4 枚で、すべて課金対象です。
利用可能なモデル
| モデル | モデル ID | ティア / サイズ | 公式価格 |
|---|---|---|---|
| Midjourney v8.2 | midjourney-v8-2 | デフォルト 1K、--hd でネイティブ 2K | $0.0067〜/ 枚 |
課金対象の処理を送信する前に、GET /v1/models でキーが使える正確なモデル ID を確認してください。
リクエストパラメータ
すべてのリクエストは Authorization: Bearer sk-your-key と Content-Type: application/json を使用します。サイズや画質はリクエストのフィールドではなく、prompt 末尾の -- パラメータで指定します。
ボディのフィールド
| パラメータ | 必須 | 型と制限 | デフォルト | 説明 |
|---|---|---|---|---|
model | 必須 | string、完全一致 | — | midjourney-v8-2 |
prompt | 必須 | string、説明文が必要 | — | 後ろに -- パラメータを付けられます |
images | 任意 | 0〜1 項目の配列 | — | 参照画像 |
n | 任意 | 4 のみ | 4 | 1 タスクは常に 4 枚 |
quality | 省略 | 空であること | — | 2K は --hd を使用 |
extra | 省略 | 空であること | — | 追加パラメータ不可 |
promptには--パラメータだけでなく説明文が必要で、::は使えません。画像のみで説明文がない場合は拒否されます。imagesは参照画像です。例:[{"url":"https://example.com/ref.png"}]。指定できるのは 1 枚です。複数使う場合は下記「複数の参照画像」を参照してください。images[]の各項目はurl(公開の絶対 HTTP(S))/file_idのどちらか一方のみを含み、usageは指定できません。- 空でない
qualityは 400 になります。2K は prompt に--hdを付けてください。 - 空でない
extraオブジェクトは 400 になります。このモデルは追加パラメータを受け付けません。
リクエストボディは厳格にデコードされます。表にないフィールドは送信時にすべて 400 で拒否され、タスクは作成されず課金もされません。アスペクト比は prompt 内の --ar、画質は --hd で指定してください。
OpenAI Images のクライアントがよく送る size、response_format、style なども表にないフィールドです。一覧は下の「注意事項」の「詳細」にあります。
サイズとアスペクト比
画像サイズは prompt 内の --ar(別名 --aspect)で決まります。--hd を付けると辺の長さがおよそ 2 倍のサイズでネイティブに生成されます。
表にない比率も含め、整数比であればどれでも使えます——縦横どちらの向きも 14:1(--hd 併用時は 4:1)を超えなければ構いません。下表はよく使う比率の一覧で、サイズは計算値ではなく実測値です——--hd は正確に 2 倍になるわけではありません。
--ar | デフォルト | --hd 併用時 |
|---|---|---|
1:1(デフォルト) | 1024 × 1024 | 2048 × 2048 |
1:2 | 768 × 1536 | 1552 × 3104 |
9:16 | 816 × 1456 | 1648 × 2944 |
2:3 | 896 × 1344 | 1792 × 2688 |
3:4 | 928 × 1232 | 1904 × 2544 |
5:6 | 992 × 1200 | 2016 × 2416 |
6:5 | 1200 × 992 | 2416 × 2016 |
4:3 | 1232 × 928 | 2544 × 1904 |
3:2 | 1344 × 896 | 2688 × 1792 |
16:9 | 1456 × 816 | 2944 × 1648 |
2:1 | 1536 × 768 | 3104 × 1552 |
21:9 | 1680 × 720 | 3376 × 1440 |
14:1 | 4096 × 288 | 拒否されます——下記を参照 |
--arには幅:高さ形式の値をちょうど 1 つ、正の整数で指定します。--ar 1.5:1は拒否されます。- 比率はどちらの方向でも 14:1 を超えることはできません。
--hdを付けるとその上限は 4:1 まで下がります。--hd --ar 14:1は拒否され、--hd --ar 4:1は 4096 × 1184 で生成されます。
プロンプトパラメータ
以下のパラメータは受け付けられ、そのまま渡されます。
| パラメータ | 範囲 | 用途 |
|---|---|---|
--ar / --aspect | 整数比 | アスペクト比 |
--hd | フラグ | ネイティブ 2K 生成 |
--s / --stylize | 0〜1000 | スタイライズの強度 |
--c / --chaos | 0〜100 | 4 枚の画像間のばらつき |
--weird / --w | 0〜3000 | 型にはまらない美的表現 |
--iw | 0〜3 | 参照画像の重み |
--sref + --sw | --sw は 0〜1000 | スタイル参照とその強度 |
--no | テキスト | 要素の除外 |
--seed | 整数 | 再現性 |
--tile、--exp | フラグ / 0〜100 | シームレスなタイリング、ダイナミックレンジ |
- パラメータはすべて説明文の後ろに書いてください。最初の
--パラメータより後ろのテキストは、そのパラメータの値として扱われます。 - 範囲のある数値パラメータには、数値をちょうど 1 つ続けてください。値がない、値が複数ある、数値でない、範囲外のいずれかの場合は 400 になります。
複数の参照画像
images に指定できるのは 1 枚です。複数使う場合は、画像 URL をスペース区切りで prompt の先頭に書き、その後に画面の説明を続けます。これは Midjourney 公式の Image Prompt の書き方です。
"prompt": "https://example.com/a.png https://example.com/b.png a cat sitting in a vintage car --ar 1:1"
- URL はすべて公開アクセス可能な HTTP(S) アドレスである必要があります。
- 参照画像はコラージュではなくインスピレーションの素材です。各画像の影響力は均等に分かれず、主題が際立つ画像がほかを上回ることがあります。
- 特定の画像の要素を確実に出したい場合は、説明文で明記するか、
--iw(0-3)で参照画像の重みを上げてください。
受け付けないパラメータ
以下のパラメータは送信時に 400 で拒否されます。そうしなければ、モデルがこれらを黙って無視して得られていない効果に料金だけを支払うことになるか、数分後にタスクが失敗するためです。
| パラメータ | 理由 |
|---|---|
--q / --quality | このモデルバージョンでは効果がありません |
--niji | Niji はパラメータではなく、別のモデルバージョンです |
--repeat | 効果がありません。1 タスクあたりの画像枚数は固定です |
--oref、--cref | Omni 参照とキャラクター参照は v8.x では利用できません |
--stealth、--stop | このモデルバージョンでは対応していません |
--relax、--turbo | タスクは常に Fast モードで実行されます。Relax はこの API では提供しておらず、Turbo は v8.x では利用できません |
--draft | 1 タスクにつき低解像度の画像を 24 枚返す機能で、提供していません |
--profile / --p | パーソナライズプロファイルはこの API では対応していません |
:: | マルチプロンプトの重み付けはこのモデルバージョンでは対応していません |
レスポンス
送信時のレスポンス
送信に成功すると HTTP 202 が返ります。
| フィールド | 型 | 説明 |
|---|---|---|
id | string | 照会に使う HopBase のタスク ID |
object | string | 常に image.generation.task |
model | string | midjourney-v8-2 |
status | string | 最初は queued |
created | integer | 作成時刻(Unix 秒) |
billing_bucket | string | デフォルトのティアか --hd の 2K ティアか |
requested_images | integer | 常に 4 |
images_per_task | integer | 常に 4 |
notice | string | 4 枚固定・全枚課金の注意書き |
{
"id": "ktEXAMPLE",
"object": "image.generation.task",
"model": "midjourney-v8-2",
"status": "queued",
"created": 1790000000,
"billing_bucket": "img_1k",
"requested_images": 4,
"images_per_task": 4,
"notice": "this model always returns 4 images per task and bills every returned image"
}照会結果
status は queued → processing → completed または failed と遷移します。終了状態はこの最後の 2 つのみなので、それ以外の値は実行中として扱ってください。
| フィールド | 型 | 説明 |
|---|---|---|
id | string | タスク ID |
object | string | 画像タスクでも常に video.generation.task |
status | string | queued / processing / completed / failed |
outputs | string[] | 完了後に 4 件の画像 URL、24 時間有効 |
usage | object | 完了後の計量。bucket(送信時の課金区分)と billed_images(常に 4) |
usage.cost | number | このタスクの課金額の人民元額(usage.cost_usd と同じ課金額) |
usage.cost_usd | number | このタスクで残高から実際に差し引かれた米ドル額。使用記録と同じ金額 |
usage.currency | string | usage.cost の通貨。常に CNY |
error.code | string | 失敗時の安定したエラーコード |
error.message | string | 失敗理由の英語の説明 |
完了したタスクの抜粋です。ID と URL は例示用の値です。
{
"id": "ktEXAMPLE",
"object": "video.generation.task",
"model": "midjourney-v8-2",
"status": "completed",
"created": 1790000000,
"outputs": [
"https://api.hop-base.com/example-signed-image-1.png",
"https://api.hop-base.com/example-signed-image-2.png",
"https://api.hop-base.com/example-signed-image-3.png",
"https://api.hop-base.com/example-signed-image-4.png"
],
"usage": { "bucket": "img_1k", "billed_images": 4, "cost": 0.1496, "cost_usd": 0.022, "currency": "CNY" }
}出力 URL は api.hop-base.com から配信される署名付きリンクで、タスク完了時点から 24 時間有効です。再度照会しても同じ URL が返るだけで有効期限は延長されず、期限切れのリンクは 410 を返すため、期限内にダウンロードしてください。
タスク終了後は、照会レスポンスのルートの usage に cost_usd(このタスクで残高から実際に差し引かれた米ドル額。課金なしの失敗は 0)、cost(同じ課金額の人民元額)、currency(常に CNY)も含まれます。詳しくは動画生成を参照してください。タスク一覧(GET /v1/video/tasks)でも、終了済みの各タスクの usage に同じ cost・cost_usd・currency が含まれます。
例
16:9 のタスクを送信し、終了状態までポーリングします。
curl https://api.hop-base.com/v1/images/generations \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "midjourney-v8-2",
"prompt": "a red apple on a wooden table, studio light --ar 16:9"
}'
# 返ってきた id で照会(課金用ヘッダーは付けない)
curl https://api.hop-base.com/v1/video/tasks/YOUR_TASK_ID \
-H "Authorization: Bearer sk-your-key"注意事項
- 1 タスクは必ず 4 枚で、すべて課金されるため、1 回の送信につき 4 枚分の予算を見込んでください。
nは4または未指定のみを受け付けます。- 比率は
--ar、2K は--hdで指定し、ボディにsizeやqualityを入れると 400 になります。 --hd併用時はアスペクト比の上限が 14:1 から 4:1 に下がります。--パラメータはすべて説明文の後ろに書いてください。- 同時実行数は限られており、大量に並列送信するとキューに積まれずほとんどが失敗します。
- 作成から 2 時間経っても終わらないタスクは失敗扱いになり、課金されません。
ファッションや商業用のポートレートであっても、体型・スタイル・脚などの身体部位の細かな描写や、体にフィットした服や薄手の服の強調が重なると、拒否されることがあります。全体のスタイリング、雰囲気、シーン、ライティングを描写する形に改めてから再送信してください。
-
OpenAI Images のクライアントがよく送る次のフィールドは表になく、400 になります。
size response_format style user background output_format -
ボディは 1 つの JSON オブジェクトのみで、その後ろに何も続けることはできません。
-
パラメータ名の大文字・小文字は区別されません。
-
どちらのパラメータ表にも載っていないパラメータは送信時にブロックされませんが、効果があるとは限りません。
-
--repeatの短縮形--rは現在送信時にブロックされませんが、効果もないため使用しないでください。 -
Midjourney のコンテンツ審査は多くの画像モデルより厳格で、拒否されたタスクは課金されません。
-
同時に生成できるプロンプトはごくわずかで同期型の画像モデルよりはるかに少ないため、数件ずつ送信し、混雑で返ってきたものだけを再試行してください。
-
照会は他の非同期メディアタスクと同じ方法で、課金用のヘッダーは付けません。
-
以前に失敗したタスクには
error.codeがない場合があります。
よくあるエラー
送信時のエラーはすべて HTTP 400 で、タスクは作成されず課金もされません。チェックは順番に行われ、最初に見つかったエラーが次の形式で返されます。
{
"error": {
"message": "request body does not match the JSON contract: json: unknown field \"size\"",
"type": "invalid_request_error"
}
}| エラー | 対処 |
|---|---|
json: unknown field "size" | 表にないフィールドを削除し、比率は --ar で指定 |
the quality field has no effect on this model | quality を削除し、2K は --hd で指定 |
the n field cannot change that | n を省略するか 4 にする |
prompt must contain a description | パラメータの前に説明文を追加 |
parameter --draft is not accepted | 受け付けないパラメータを削除 |
may not exceed 4:1 when --hd is used | 比率を小さくするか --hd を外す |
失敗したタスク
タスクが失敗しても、照会は HTTP 200 で返り、status は failed になります。成否は status で判断し、処理の分岐は error.code で行い、error.message を表示してください。
| 原因 | error.code | 対処 |
|---|---|---|
| prompt がコンテンツ審査で拒否 | input_sensitive | prompt を書き換えて再送信してください |
| 参照画像がコンテンツ審査で拒否 | input_sensitive | 参照画像を差し替えて再送信してください |
| コンテンツ審査で拒否(対象の明示なし) | input_sensitive | prompt を書き換え、参照画像を送った場合は差し替えてください |
| 同時実行数の上限 | rate_limited | しばらくしてから再試行し、同時実行数を減らしてください |
| 説明文がない | prompt_required | 説明文を追加してください |
| 非対応のパラメータ | invalid_request | 対応リストにないパラメータを削除してください |
| 無効なアスペクト比 | invalid_request | 上限内の整数比を使ってください |
| prompt の形式エラー | invalid_request | 末尾のパラメータの書き方と値を確認してください |
| 生成失敗(その他) | generation_failed | 1 回再試行し、失敗が続けばタスク ID を添えてお問い合わせください |
| タスクを追跡できない | generation_failed | タスク ID を添えてサポートにお問い合わせください |
| タイムアウト | timeout | 再送信してください |
| 出力なしで終了 | no_output | 再送信してください |
# で始まる行が発生条件、その次の行が error.message の原文です。山括弧の部分はリクエストによって変わります。
# 表にないフィールドがある
request body does not match the JSON contract: json: unknown field "<フィールド名>"
# quality が空でない
the quality field has no effect on this model; ask for 2K output with --hd in the prompt instead
# n が 4 以外
this model always returns 4 images per task and bills every returned image; the n field cannot change that, so omit it or set it to 4
# prompt が空
prompt is required for this model, even when input images are provided
# prompt に :: が含まれる
multi-prompt weighting (::) is not supported on this model version
# パラメータだけで説明文がない
prompt must contain a description, not only parameters
# 受け付けないパラメータを使用
parameter --<名前> is not accepted: <理由>
# images[] の項目に url / file_id がない、または両方ある
images[<番号>] must provide exactly one of url or file_id
# url が公開された絶対 http(s) アドレスでない
images[<番号>].url must be a publicly accessible absolute http(s) URL
# images[] に usage がある
images[<番号>].usage is not part of the image generation API; remove this field
# extra が空でない
model "midjourney-v8-2" does not accept unverified extra parameters
# 参照画像が 2 枚以上
model "midjourney-v8-2" accepts at most 1 input images, got <枚数># --ar の値がない、または複数
parameter --ar requires exactly one value such as 16:9
# --ar が 幅:高さ 形式でない
parameter --ar must look like 16:9, got "<値>"
# --ar に小数が含まれる
parameter --ar must use whole numbers such as 3:2; decimals are rejected, got "<値>"
# --ar に 0 または負の数が含まれる
parameter --ar must use positive numbers, got "<値>"
# 比率が 14:1 を超える
parameter --ar may not exceed 14:1, got "<値>"
# --hd 併用時に比率が 4:1 を超える
parameter --ar may not exceed 4:1 when --hd is used, got "<値>"
# 数値パラメータの値がない、または複数
parameter --<名前> requires exactly one numeric value
# 数値パラメータが数値でない
parameter --<名前> must be a number, got "<値>"
# 数値パラメータが範囲外
parameter --<名前> must be between <下限> and <上限>, got <値>{
"id": "ktEXAMPLE",
"object": "video.generation.task",
"model": "midjourney-v8-2",
"status": "failed",
"created": 1790000000,
"error": {
"code": "input_sensitive",
"message": "the prompt was rejected by content moderation; rephrase it and submit again"
}
}# input_sensitive: prompt がコンテンツ審査で拒否
the prompt was rejected by content moderation; rephrase it and submit again
# input_sensitive: 参照画像がコンテンツ審査で拒否
the reference image was rejected by content moderation; replace it and submit again
# input_sensitive: コンテンツ審査で拒否(対象の明示なし)
the prompt or reference image was rejected by content moderation; revise it and submit again
# rate_limited: 同時実行数の上限
this model is at its concurrency limit right now; please retry shortly
# prompt_required: 説明文がない
prompt is required for this model, even when input images are provided
# invalid_request: 非対応のパラメータ
the prompt uses a parameter that this model version does not support
# invalid_request: 無効なアスペクト比
the --ar value is not a valid aspect ratio for this model
# invalid_request: prompt の形式エラー
the prompt was rejected by the model; check the parameters at the end of the prompt
# generation_failed: 生成失敗(その他)
image generation failed; please retry, and contact support with the task ID if it keeps failing
# generation_failed: タスクを追跡できない(この文で終わります)
… contact support with the task ID
# timeout: タイムアウト
task did not reach a billable terminal state within 2 hours; polling stopped
# no_output: 出力なしで終了
image generation finished without a usable output; please retry, and contact support with the task ID if it keeps failing課金
Midjourney は返却された画像 1 枚単位で課金されるため、1 タスクはそのティアのレートで 4 枚分の費用になります。デフォルトの生成と --hd の 2K 生成は別の価格です。正常に完了したタスクのみ課金され、送信時の拒否、コンテンツ審査による拒否、失敗したタスクは課金されません。
公式のリスト価格は料金ページに掲載されています。実際の適用レートはログイン後のモデルカタログに表示され、各リクエストの実際の課金額は利用量レコードで確認できます。
このモデルの仕様と公式価格は、モデルカードにも掲載されています。
次のステップ
- 画像生成の概要: 各画像モデルシリーズと共通ルール
- Kling 画像: 同じく非同期タスクで動く画像シリーズ
- 画像生成 API リファレンス: ボディの全フィールド
- 動画タスク照会 API リファレンス: Midjourney タスクの照会エンドポイント
- クリエイティブスタジオ: コードを書かずに画像と動画を生成する
- トラブルシューティング: エラーメッセージから対処法を探す