🎯 コアコンセプトを理解する
MidJourney API は Discord のボタン操作をシミュレート します。一般的な REST API とは異なり、各操作が次のステップ用の新しいボタンを返す 状態機械 として動作します。4 つのコア API
| API | 用途 | 使用するタイミング |
|---|---|---|
POST /mj/submit/imagine | テキストから画像を生成 | すべてのワークフローの開始点 |
GET /mj/task/\{id\}/fetch | タスク状態を照会してボタンを取得 | submit のたびに実行(完了までポーリング) |
POST /mj/submit/action | ボタンをクリックする(upscale、vary、zoom など) | 画像に対して操作したいとき |
POST /mj/submit/modal | 追加の入力を送信 | status が MODAL の場合のみ |
📊 完全なワークフロー図
🔑 重要な概念: Buttons と customId
成功した各タスクはbuttons 配列を返します。各ボタンには customId があり、これを使って次のアクションをトリガーします。
/mj/task/\{id\}/fetch からのレスポンス例:
customId は固定値ではありません。タスクごとに変わります。必ず buttons 配列から取得してください。
📋 ステージ別ボタンリファレンス
IMAGINE 後(4分割グリッド画像)
初回の画像生成が完了すると、以下のボタンが返されます:| Button | customId Pattern | Action | Result |
|---|---|---|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | 単一画像をアップスケール | 高解像度の単一画像 |
| V1-V4 | MJ::JOB::variation::1::xxx | バリエーションを生成 | 新しい4分割グリッド |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | すべて再生成 | 新しい4分割グリッド |
UPSCALE 後(単一画像)
アップスケール後は、編集ツールにアクセスできます:| Label | Needs Modal? |
|---|---|
| Upscale (Subtle) / Upscale (2x) | ❌ No |
| Upscale (Creative) / Upscale (4x) | ❌ No |
| Vary (Subtle) 🪄 | ❌ No |
| Vary (Strong) 🪄 | ❌ No |
| Vary (Region) 🖌️ | ✅ Yes (mask) |
| Zoom Out 2x / 1.5x 🔍 | ❌ No |
| Custom Zoom 🔍 | ✅ Yes (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ No |
| Animate 🎞️ | ❌ No |
| 🔄 Reroll | ❌ No |
注: ボタンラベルと⚠️ Inpaint(Vary Region)ボタンは Upscale 後にのみ表示されます!customIdの形式は、プロンプトで指定した MJ バージョン(例:--v 6.1と--v 5.2)によって異なる場合があります。必ず API レスポンスからボタンを読み取ってください。
⚡ 完全な例: Generate & Upscale
ステップ 1: Imagine リクエストを送信
ステップ 2: タスクステータスをポーリング
ステップ 3: U1 をクリックしてアップスケール
ステップ 4: 新しいタスクをポーリングして結果を取得
⚠️ Modal が必要になるのはいつですか?
/mj/submit/action を呼び出した際に、タスクステータスが SUCCESS ではなく MODAL になった場合、追加の入力を提供するために /mj/submit/modal を呼び出す必要があります。
確認済みの Modal 操作
| Operation | Button | What to Submit |
|---|---|---|
| Inpaint | Vary (Region) | maskBase64(PNG マスク)+ prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt(例: “your prompt —zoom 2”) |
🚀 速度モードの選択
パスに速度プレフィックスを追加します:| モード | パスプレフィックス | 例 |
|---|---|---|
| Fast | /mj-fast | /mj-fast/mj/submit/imagine |
| Turbo | /mj-turbo | /mj-turbo/mj/submit/imagine |
| Relax | (デフォルト) | /mj/submit/imagine |
🔗 その他のエントリーポイント
これらの API は、imagine → action フローに従わない独立したエントリーポイントです:| API | 用途 |
|---|---|
POST /mj/submit/blend | 2〜5 枚の画像を 1 枚にブレンド |
POST /mj/submit/describe | 画像からプロンプト(Prompt)を生成 |
POST /mj/submit/video | 画像を動画に変換 |
POST /mj/submit/edits | マスクを使って画像を編集 |
❓ トラブルシューティングのヒント
API の設計とワークフローに基づき、遭遇する可能性のある一般的な問題を以下に示します:| 問題 | 考えられる原因 | 解決方法 |
|---|---|---|
| Vary(Region)ボタンが見つからない | 4 分割グリッド画像を見ている | 先にアップスケールします(U1〜U4 をクリック)その後ボタンを確認してください |
タスクのステータスが MODAL のまま止まっている | 操作に追加の入力が必要 | 必要なデータを指定して /mj/submit/modal を呼び出してください |
customId が機能しない | 古い値またはハードコードした値を使用している | 必ず /mj/task/\{id\}/fetch のレスポンスから最新の customId を取得してください |
buttons 配列が空 | タスクがまだ進行中 | ボタンにアクセスする前に status: "SUCCESS" になるまで待ってください |