🎯 Das Grundkonzept verstehen
Die MidJourney API simuliert Discord-Button-Interaktionen. Im Gegensatz zu typischen REST-APIs arbeitet sie als Zustandsmaschine, bei der jede Operation neue Buttons für den nächsten Schritt zurückgibt.Die 4 Kern-APIs
| API | Zweck | Wann verwenden |
|---|---|---|
POST /mj/submit/imagine | Text-zu-Bild-Generierung | Ausgangspunkt für alle Workflows |
GET /mj/task/\{id\}/fetch | Task-Status abfragen und Buttons erhalten | Nach jedem Submit (abfragen, bis abgeschlossen) |
POST /mj/submit/action | Einen Button klicken (upscale, vary, zoom usw.) | Wenn du ein Bild weiterbearbeiten möchtest |
POST /mj/submit/modal | Zusätzliche Eingaben senden | Nur wenn der Status MODAL ist |
📊 Vollständiges Workflow-Diagramm
🔑 Schlüsselkonzept: Buttons & customId
Jeder erfolgreiche Task gibt einbuttons-Array zurück. Jeder Button hat eine customId, die du verwendest, um die nächste Aktion auszulösen.
Beispielantwort von /mj/task/\{id\}/fetch:
customId ist KEIN fester Wert. Er ändert sich bei jedem Task. Hole ihn immer aus dem buttons-Array.
📋 Button-Referenz nach Phase
Nach IMAGINE (4er-Bildraster)
Diese Buttons werden zurückgegeben, wenn deine anfängliche Bildgenerierung abgeschlossen ist:| Button | customId Pattern | Action | Result |
|---|---|---|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | Einzelnes Bild hochskalieren | Einzelnes Bild in hoher Auflösung |
| V1-V4 | MJ::JOB::variation::1::xxx | Variationen generieren | Neues 4er-Bildraster |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | Alles neu generieren | Neues 4er-Bildraster |
Nach UPSCALE (einzelnes Bild)
Nach dem Hochskalieren erhältst du Zugriff auf Bearbeitungswerkzeuge:| Label | Needs Modal? |
|---|---|
| Upscale (Subtle) / Upscale (2x) | ❌ Nein |
| Upscale (Creative) / Upscale (4x) | ❌ Nein |
| Vary (Subtle) 🪄 | ❌ Nein |
| Vary (Strong) 🪄 | ❌ Nein |
| Vary (Region) 🖌️ | ✅ Ja (Maske) |
| Zoom Out 2x / 1.5x 🔍 | ❌ Nein |
| Custom Zoom 🔍 | ✅ Ja (Prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ Nein |
| Animate 🎞️ | ❌ Nein |
| 🔄 Reroll | ❌ Nein |
Hinweis: Button-Beschriftungen und⚠️ Der Inpaint-Button (Vary Region) erscheint erst nach Upscale!customId-Formate können je nach der in deinem Prompt angegebenen MJ-Version variieren (z. B.--v 6.1vs--v 5.2). Lies die Buttons immer aus der API-Antwort aus.
⚡ Vollständiges Beispiel: Generieren & hochskalieren
Schritt 1: Imagine-Anfrage senden
Schritt 2: Task-Status abfragen
Schritt 3: U1 anklicken, um hochzuskalieren
Schritt 4: Neuen Task abfragen & Ergebnis abrufen
⚠️ Wann ist Modal erforderlich?
Wenn du/mj/submit/action aufrufst und der Task-Status zu MODAL statt zu SUCCESS wird, musst du /mj/submit/modal aufrufen, um zusätzliche Eingaben bereitzustellen.
Bestätigte Modal-Operationen
| Operation | Button | What to Submit |
|---|---|---|
| Inpaint | Vary (Region) | maskBase64 (PNG-Maske) + prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt (z. B. “dein Prompt —zoom 2”) |
🚀 Auswahl des Speed-Modus
Fügen Sie dem Pfad ein Speed-Präfix hinzu:| Modus | Pfad-Präfix | Beispiel |
|---|---|---|
| Schnell | /mj-fast | /mj-fast/mj/submit/imagine |
| Turbo | /mj-turbo | /mj-turbo/mj/submit/imagine |
| Relax | (Standard) | /mj/submit/imagine |
🔗 Andere Entry Points
Diese APIs sind unabhängige Entry Points, die nicht dem imagine → action-Ablauf folgen:| API | Zweck |
|---|---|
POST /mj/submit/blend | 2–5 Bilder zu einem zusammenführen |
POST /mj/submit/describe | Prompt aus einem Bild generieren |
POST /mj/submit/video | Bild in ein Video umwandeln |
POST /mj/submit/edits | Bild mit Maske bearbeiten |
❓ Tipps zur Fehlerbehebung
Basierend auf dem API-Design und dem Workflow finden Sie hier häufige Probleme, auf die Sie stoßen können:| Problem | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Vary (Region)-Button nicht gefunden | Sie betrachten ein 4er-Rasterbild | Zuerst Upscale ausführen (U1–U4 anklicken), dann die Buttons prüfen |
Task-Status bleibt bei MODAL hängen | Der Vorgang erfordert zusätzliche Eingaben | Rufen Sie /mj/submit/modal mit den erforderlichen Daten auf |
customId funktioniert nicht | Veralteter oder fest codierter Wert wird verwendet | Holen Sie immer eine aktuelle customId aus der Antwort von /mj/task/\{id\}/fetch |
Leeres buttons-Array | Task wird noch verarbeitet | Warten Sie auf status: "SUCCESS", bevor Sie auf Buttons zugreifen |