結論から言うと、Midjourney v8.2(モデル ID midjourney-v8-2)が HopBase で利用可能になりました。OpenAI 互換の POST /v1/images/generations エンドポイントで送信すると 202 とタスク ID が返り、タスクが completed または failed になるまで GET /v1/video/tasks/{task_id} でポーリングします。多くの画像モデルとの最大の違いは、1 回のジョブで必ず 4 枚の候補画像が返ること、そしてアスペクト比と画質をリクエストのフィールドではなくプロンプト内に書くこと(--ar で比率、--hd でネイティブ 2K 出力)です。テキストプロンプトは必須で、参照画像は images フィールドで最大 1 枚まで指定できます。課金は実際に返された画像の枚数に基づき、1K は 1 枚あたり $0.0067、2K は 1 枚あたり $0.0108、ジョブ単位ではそれぞれ $0.0267 と $0.0433 です。出力された 4 つのリンクは完了から 24 時間有効で、2 時間経っても完了しないタスクは失敗扱いとなり課金されません。実際の課金額は usage.cost_usd で確認できます。お使いのキーで利用できるかは GET /v1/models で確認してください。
呼び出し方
- 2 ステップの非同期処理:
POST /v1/images/generationsが202とタスク ID を返し、その後GET /v1/video/tasks/{task_id}をポーリングします。ステータスはqueued → processing → completedと遷移し、終了状態はcompletedとfailedのみです。 - モデル ID は完全な形で指定:
midjourney-v8-2。正式な ID はGET /v1/modelsが返す値に準じます。 - プロンプトは必須:テキストの説明なしで参照画像だけを送ると拒否されます。参照画像は最大 1 枚で、
imagesフィールドで渡します。 - 出力の有効期限:完了すると
outputsに署名付きリンクが 4 つ入り、タスク完了時点から 24 時間有効です。再度ポーリングしても同じリンクが返るだけで期限は延長されず、期限切れのリンクは 410 を返すため、期限内にダウンロードしてください。 - タイムアウトは無料:作成から 2 時間経っても完了しないタスクは失敗扱いとなり、課金されません。
- タスクごとの実際の課金額:タスクが終了状態になると、タスク照会の結果に実際に差し引かれた金額である
usage.cost_usdが含まれるため、ジョブごとのコストをコード上で照合できます。
料金:公式レートを 1 枚あたりの単価に換算
| 区分 | 指定方法 | 1 枚あたり | 1 ジョブ(4 枚)あたり |
|---|---|---|---|
| 標準 | デフォルト | $0.0067 | $0.0267 |
| 2K | プロンプトに --hd を追加 | $0.0108 | $0.0433 |
Midjourney の公式料金は GPU 時間に基づいており(標準ジョブは 0.8 GPU 分、--hd 付きは 1.3 分)、HopBase ではその公式レートを 1 枚あたりの単価に換算しています。課金は実際に返された画像の枚数に基づくため、1 回の呼び出しで 4 枚分の料金がかかります。1 枚あたりの価格から見積もるのではなく、この点を予算モデルに組み込んでください。比較として、カタログ内で 1 回に 1 枚を返すモデルは 1 回あたりおおむね $0.029〜$0.067 で、Midjourney の 4 枚分の合計はそれでも大半のモデルより安くなります。実際の単価はご利用のプランのグループによって異なり、コンソールではリクエストごとのコストが項目別に表示されます。
アスペクト比とサイズ
サイズはリクエストのフィールドではなく、プロンプト内の --ar で決まります。--hd を加えるとネイティブ 2K で出力されます。以下は実測値です。
--ar | 標準 | --hd 付き |
|---|---|---|
| 1:1(デフォルト) | 1024 × 1024 | 2048 × 2048 |
| 16:9 | 1456 × 816 | 2944 × 1648 |
| 9:16 | 816 × 1456 | 1648 × 2944 |
| 4:3 | 1232 × 928 | 2544 × 1904 |
| 21:9 | 1680 × 720 | 3376 × 1440 |
--ar は整数比のみ受け付けるため、--ar 1.5:1 は拒否されます。上限は 14:1 ですが、--hd を有効にすると 4:1 に制限されます。
パラメータの対応状況
- 対応:
--ar、--hd、--s(0-1000)、--c(0-100)、--weird(0-3000)、--iw(0-3)、--srefと--sw、--no、--seed、--tile、--exp。 - v8.2 では非対応、送信時に 400 で拒否:
--q/--quality、--niji、--repeat、--oref、--cref、--stealth、--stop、--draft、および::によるマルチプロンプトの重み付け。
これらのパラメータは転送せず、送信時点で拒否しています。一部はモデルが黙って無視する(料金を払っても何の効果もない)もので、残りはジョブが数十秒実行された後にようやく失敗するものだからです。エラーメッセージには、該当するパラメータ名と非対応の理由が示されます。
3 分でできる組み込み
# 1. Submit; returns 202 plus a task ID
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"}'
# 2. Poll with the id from the previous step; once completed, take the 4 links from outputs (valid 24 hours)
curl https://api.hop-base.com/v1/video/tasks/YOUR_TASK_ID \
-H "Authorization: Bearer sk-your-key"
よくある質問
1 枚だけ生成できますか?
できません。Midjourney のすべての生成モードは、4 枚の候補画像を 2×2 のグリッドで返す仕様です。これはモデル自体の動作であり、HopBase 側で追加した制限ではありません。リクエストの画像枚数フィールドも --repeat も結果を変えないため、n には 4 以外の値を受け付けていません。黙って 4 枚分を課金するより、送信時点でそう伝えるほうがよいと考えています。
サイズはどう指定しますか?
プロンプト内で指定します。--ar で比率を、--hd でネイティブ 2K 出力を指定します。リクエストボディの quality フィールドはこのモデルでは効果がなく、送信すると拒否されます。サイズの一覧は上の表をご覧ください。
参照画像は使えますか?
はい。最大 1 枚を images フィールドで渡し、--iw(0-3)で反映の強さを調整できます。スタイル参照には --sref と --sw を組み合わせてください。なお、v8.2 は --oref と --cref に対応していません。Midjourney はこれらを新しい編集モデルに置き換えています。
失敗したジョブは課金されますか?
いいえ。実際に画像を生成したジョブのみが課金され、失敗したジョブには費用がかかりません。プロンプトがコンテンツ審査で止められた場合はレスポンスに明確な失敗理由が示されるので、書き直して再試行できます。