Zum Hauptinhalt springen

Documentation Index

Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt

Use this file to discover all available pages before exploring further.

Das Kernkonzept verstehen

Die MidJourney API simuliert Discord-Schaltflächeninteraktionen. Anders als typische REST-APIs arbeitet sie als Zustandsmaschine, bei der jeder Vorgang neue Schaltflächen für den nächsten Schritt zurückgibt.

Die 4 Kern-APIs

APIZweckWann verwenden
POST /mj/submit/imagineText-zu-Bild-GenerierungAusgangspunkt für alle Workflows
GET /mj/task/\{id\}/fetchTask-Status abfragen und Schaltflächen abrufenNach jedem Submit (abfragen, bis abgeschlossen)
POST /mj/submit/actionAuf eine Schaltfläche klicken (upscale, vary, zoom usw.)Wenn Sie ein Bild bearbeiten möchten
POST /mj/submit/modalZusätzliche Eingaben sendenNur wenn der Status MODAL ist

Vollständiges Workflow-Diagramm

┌─────────────────────────────────────────────────────────────────────────────┐
│                         MIDJOURNEY API WORKFLOW                             │
└─────────────────────────────────────────────────────────────────────────────┘

  ┌──────────────────┐
  │  POST /submit/   │  ← Step 1: Submit prompt, get task_id
  │     imagine      │
  └────────┬─────────┘
           │ Returns: { "result": "task_id_1" }

  ┌──────────────────┐
  │ GET /task/{id}/  │  ← Step 2: Poll until status = "SUCCESS"
  │      fetch       │
  └────────┬─────────┘
           │ Returns: imageUrl + buttons[] (U1,U2,U3,U4,V1,V2,V3,V4,🔄)

  ┌──────────────────┐
  │  POST /submit/   │  ← Step 3: Click a button using customId
  │     action       │
  └────────┬─────────┘
           │ Returns: { "result": "task_id_2" }

  ┌──────────────────┐
  │ GET /task/{id}/  │  ← Step 4: Poll the new task
  │      fetch       │
  └────────┬─────────┘

           ├─── status = "SUCCESS" → Done! Get imageUrl

           └─── status = "MODAL" → Need additional input (see Step 5)


           ┌──────────────────┐
           │  POST /submit/   │  ← Step 5: Submit mask/prompt for special operations
           │      modal       │
           └────────┬─────────┘
                    │ Returns: { "result": "task_id_3" }

           ┌──────────────────┐
           │ GET /task/{id}/  │  ← Step 6: Poll until SUCCESS
           │      fetch       │
           └──────────────────┘

Schlüsselkonzept: Schaltflächen und customId

Jeder erfolgreiche Task gibt ein buttons-Array zurück. Jede Schaltfläche hat eine customId, mit der Sie die nächste Aktion auslösen. Beispielantwort von /mj/task/\{id\}/fetch:
{
  "status": "SUCCESS",
  "imageUrl": "https://api.cometapi.com/mj/image/xxx",
  "buttons": [
    { "customId": "MJ::JOB::upsample::1::abc123", "label": "U1" },
    { "customId": "MJ::JOB::upsample::2::abc123", "label": "U2" },
    { "customId": "MJ::JOB::variation::1::abc123", "label": "V1" },
    { "customId": "MJ::JOB::reroll::0::abc123", "emoji": "🔄" }
  ]
}
customId ist kein fester Wert. Er ändert sich bei jedem Task. Holen Sie 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:
ButtoncustomId-MusterAktionErgebnis
U1-U4MJ::JOB::upsample::1::xxxEinzelnes Bild hochskalierenEinzelnes Bild in hoher Auflösung
V1-V4MJ::JOB::variation::1::xxxVariationen generierenNeues 4er-Raster
🔄MJ::JOB::reroll::0::xxx::SOLOAlle neu generierenNeues 4er-Raster

Nach UPSCALE (einzelnes Bild)

Nach dem Hochskalieren erhältst du Zugriff auf Bearbeitungswerkzeuge:
BezeichnungModal erforderlich?
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-Bezeichnungen und customId-Formate können je nach der in deinem Prompt angegebenen MJ-Version variieren (z. B. --v 6.1 vs --v 5.2). Lies die Buttons immer aus der API-Antwort aus.
Der Inpaint-Button (Vary Region) erscheint erst nach Upscale.

Vollständiges Beispiel: Generieren und hochskalieren

Schritt 1: Imagine-Request senden

curl -X POST 'https://api.cometapi.com/mj/submit/imagine' \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "botType": "MID_JOURNEY",
    "prompt": "a cute cat --v 6.1",
    "accountFilter": { "modes": ["FAST"] }
  }'
Antwort:
{ "code": 1, "result": "1768464763141701" }

Schritt 2: Task-Status abfragen

curl -X GET 'https://api.cometapi.com/mj/task/1768464763141701/fetch' \
  -H "Authorization: Bearer $COMETAPI_KEY"
Antwort (wenn abgeschlossen):
{
  "status": "SUCCESS",
  "imageUrl": "https://api.cometapi.com/mj/image/1768464763141701",
  "buttons": [
    { "customId": "MJ::JOB::upsample::1::5f20922e-xxx", "label": "U1" },
    { "customId": "MJ::JOB::upsample::2::5f20922e-xxx", "label": "U2" },
    ...
  ]
}

Schritt 3: Auf U1 klicken, um hochzuskalieren

curl -X POST 'https://api.cometapi.com/mj/submit/action' \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "taskId": "1768464763141701",
    "customId": "MJ::JOB::upsample::1::5f20922e-xxx"
  }'
Antwort:
{ "code": 1, "result": "1768464800000000" }

Schritt 4: Neuen Task abfragen und Ergebnis abrufen

curl -X GET 'https://api.cometapi.com/mj/task/1768464800000000/fetch' \
  -H "Authorization: Bearer $COMETAPI_KEY"

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

OperationButtonWas zu senden ist
InpaintVary (Region)maskBase64 (PNG-Maske) + prompt
Custom Zoom🔍 Custom Zoomprompt (z. B. “your prompt —zoom 2”)
Beispiel: Inpaint-Ablauf
# 1. Click Vary (Region) button via Action API
curl -X POST 'https://api.cometapi.com/mj/submit/action' \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"taskId": "xxx", "customId": "MJ::Inpaint::xxx", "enableRemix": true}'

# 2. Poll and see status = "MODAL"
curl -X GET 'https://api.cometapi.com/mj/task/new_task_id/fetch'
# Response: { "status": "MODAL" }

# 3. Submit mask and prompt via Modal API
curl -X POST 'https://api.cometapi.com/mj/submit/modal' \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "taskId": "new_task_id",
    "prompt": "replace with golden crown",
    "maskBase64": "data:image/png;base64,..."
  }'

Auswahl des Geschwindigkeitsmodus

Fügen Sie dem Pfad ein Geschwindigkeitspräfix hinzu:
ModusPfadpräfixBeispiel
Fast/mj-fast/mj-fast/mj/submit/imagine
Turbo/mj-turbo/mj-turbo/mj/submit/imagine
Relax(Standard)/mj/submit/imagine

Andere Einstiegspunkte

Diese APIs sind unabhängige Einstiegspunkte, die nicht dem imagine → action-Ablauf folgen:
APIZweck
POST /mj/submit/blend2–5 Bilder zu einem zusammenführen
POST /mj/submit/describePrompt aus einem Bild generieren
POST /mj/submit/videoBild in Video umwandeln
POST /mj/submit/editsBild mit Maske bearbeiten

Tipps zur Fehlerbehebung

Basierend auf dem API-Design und dem Workflow sind hier häufige Probleme, auf die Sie stoßen können:
ProblemWahrscheinliche UrsacheLösung
Vary (Region)-Button nicht auffindbarAnzeige des 4er-BildrastersZuerst Upscale ausführen (auf U1–U4 klicken), dann die Buttons prüfen
Task-Status bleibt bei MODAL hängenVorgang erfordert zusätzliche EingabenRufen Sie /mj/submit/modal mit den erforderlichen Daten auf
customId funktioniert nichtVeralteten oder fest codierten Wert verwendetHolen Sie immer eine aktuelle customId aus der Antwort von /mj/task/\{id\}/fetch
Leeres buttons-ArrayTask noch in BearbeitungWarten Sie auf status: "SUCCESS", bevor Sie auf die Buttons zugreifen