本文へスキップ

Midjourney

Midjourney で非同期に画像を生成:パラメータ、レスポンス、注意事項。

項目値
Base URLhttps://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.2midjourney-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 のみ41 タスクは常に 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:

リクエストボディは厳格にデコードされます。表にないフィールドは送信時にすべて 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 × 10242048 × 2048
1:2768 × 15361552 × 3104
9:16816 × 14561648 × 2944
2:3896 × 13441792 × 2688
3:4928 × 12321904 × 2544
5:6992 × 12002016 × 2416
6:51200 × 9922416 × 2016
4:31232 × 9282544 × 1904
3:21344 × 8962688 × 1792
16:91456 × 8162944 × 1648
2:11536 × 7683104 × 1552
21:91680 × 7203376 × 1440
14:14096 × 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 / --stylize0〜1000スタイライズの強度
--c / --chaos0〜1004 枚の画像間のばらつき
--weird / --w0〜3000型にはまらない美的表現
--iw0〜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このモデルバージョンでは効果がありません
--nijiNiji はパラメータではなく、別のモデルバージョンです
--repeat効果がありません。1 タスクあたりの画像枚数は固定です
--oref、--crefOmni 参照とキャラクター参照は v8.x では利用できません
--stealth、--stopこのモデルバージョンでは対応していません
--relax、--turboタスクは常に Fast モードで実行されます。Relax はこの API では提供しておらず、Turbo は v8.x では利用できません
--draft1 タスクにつき低解像度の画像を 24 枚返す機能で、提供していません
--profile / --pパーソナライズプロファイルはこの API では対応していません
::マルチプロンプトの重み付けはこのモデルバージョンでは対応していません

レスポンス

送信時のレスポンス

送信に成功すると HTTP 202 が返ります。

フィールド型説明
idstring照会に使う HopBase のタスク ID
objectstring常に image.generation.task
modelstringmidjourney-v8-2
statusstring最初は queued
createdinteger作成時刻(Unix 秒)
billing_bucketstringデフォルトのティアか --hd の 2K ティアか
requested_imagesinteger常に 4
images_per_taskinteger常に 4
noticestring4 枚固定・全枚課金の注意書き
{
  "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 つのみなので、それ以外の値は実行中として扱ってください。

フィールド型説明
idstringタスク ID
objectstring画像タスクでも常に video.generation.task
statusstringqueued / processing / completed / failed
outputsstring[]完了後に 4 件の画像 URL、24 時間有効
usageobject完了後の計量。bucket(送信時の課金区分)と billed_images(常に 4)
usage.costnumberこのタスクの課金額の人民元額(usage.cost_usd と同じ課金額)
usage.cost_usdnumberこのタスクで残高から実際に差し引かれた米ドル額。使用記録と同じ金額
usage.currencystringusage.cost の通貨。常に CNY
error.codestring失敗時の安定したエラーコード
error.messagestring失敗理由の英語の説明

完了したタスクの抜粋です。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 時間経っても終わらないタスクは失敗扱いになり、課金されません。
コンテンツ審査は厳しめです:

ファッションや商業用のポートレートであっても、体型・スタイル・脚などの身体部位の細かな描写や、体にフィットした服や薄手の服の強調が重なると、拒否されることがあります。全体のスタイリング、雰囲気、シーン、ライティングを描写する形に改めてから再送信してください。

よくあるエラー

送信時のエラーはすべて 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 modelquality を削除し、2K は --hd で指定
the n field cannot change thatn を省略するか 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_sensitiveprompt を書き換えて再送信してください
参照画像がコンテンツ審査で拒否input_sensitive参照画像を差し替えて再送信してください
コンテンツ審査で拒否(対象の明示なし)input_sensitiveprompt を書き換え、参照画像を送った場合は差し替えてください
同時実行数の上限rate_limitedしばらくしてから再試行し、同時実行数を減らしてください
説明文がないprompt_required説明文を追加してください
非対応のパラメータinvalid_request対応リストにないパラメータを削除してください
無効なアスペクト比invalid_request上限内の整数比を使ってください
prompt の形式エラーinvalid_request末尾のパラメータの書き方と値を確認してください
生成失敗(その他)generation_failed1 回再試行し、失敗が続けばタスク ID を添えてお問い合わせください
タスクを追跡できないgeneration_failedタスク ID を添えてサポートにお問い合わせください
タイムアウトtimeout再送信してください
出力なしで終了no_output再送信してください

課金

Midjourney は返却された画像 1 枚単位で課金されるため、1 タスクはそのティアのレートで 4 枚分の費用になります。デフォルトの生成と --hd の 2K 生成は別の価格です。正常に完了したタスクのみ課金され、送信時の拒否、コンテンツ審査による拒否、失敗したタスクは課金されません。

公式のリスト価格は料金ページに掲載されています。実際の適用レートはログイン後のモデルカタログに表示され、各リクエストの実際の課金額は利用量レコードで確認できます。

このモデルの仕様と公式価格は、モデルカードにも掲載されています。

次のステップ