🎯 Begrijp het kernconcept
De MidJourney API simuleert Discord-knopinteracties. In tegenstelling tot typische REST API’s werkt deze als een statusmachine waarbij elke bewerking nieuwe knoppen teruggeeft voor de volgende stap.De 4 kern-API’s
| API | Doel | Wanneer te gebruiken |
|---|---|---|
POST /mj/submit/imagine | Tekst-naar-afbeeldinggeneratie | Startpunt voor alle workflows |
GET /mj/task/\{id\}/fetch | Taskstatus opvragen en knoppen ophalen | Na elke submit (poll tot voltooid) |
POST /mj/submit/action | Op een knop klikken (upscale, vary, zoom, enz.) | Wanneer je een bewerking op een afbeelding wilt uitvoeren |
POST /mj/submit/modal | Extra invoer versturen | Alleen wanneer de status MODAL is |
📊 Compleet workflowdiagram
🔑 Kernconcept: Buttons & customId
Elke succesvolle task geeft eenbuttons-array terug. Elke knop heeft een customId die je gebruikt om de volgende actie te triggeren.
Voorbeeldresponse van /mj/task/\{id\}/fetch:
customId is GEEN vaste waarde. Deze verandert voor elke task. Haal deze altijd op uit de buttons-array.
📋 Knoppenreferentie per fase
Na IMAGINE (4-grid afbeelding)
Deze knoppen worden teruggegeven wanneer je initiële afbeeldingsgeneratie is voltooid:| Button | customId Pattern | Action | Result |
|---|---|---|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | Afzonderlijke afbeelding upscalen | Enkele afbeelding in hoge resolutie |
| V1-V4 | MJ::JOB::variation::1::xxx | Variaties genereren | Nieuwe 4-grid |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | Alles opnieuw genereren | Nieuwe 4-grid |
Na UPSCALE (enkele afbeelding)
Na het upscalen krijg je toegang tot bewerkingstools:| Label | Needs Modal? |
|---|---|
| Upscale (Subtle) / Upscale (2x) | ❌ Nee |
| Upscale (Creative) / Upscale (4x) | ❌ Nee |
| Vary (Subtle) 🪄 | ❌ Nee |
| Vary (Strong) 🪄 | ❌ Nee |
| Vary (Region) 🖌️ | ✅ Ja (masker) |
| Zoom Out 2x / 1.5x 🔍 | ❌ Nee |
| Custom Zoom 🔍 | ✅ Ja (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ Nee |
| Animate 🎞️ | ❌ Nee |
| 🔄 Reroll | ❌ Nee |
Opmerking: Knoplabels en⚠️ De Inpaint-knop (Vary Region) verschijnt alleen na Upscale!customId-indelingen kunnen variëren afhankelijk van de MJ-versie die in je prompt is opgegeven (bijv.--v 6.1vs--v 5.2). Lees knoppen altijd uit de API-respons.
⚡ Volledig voorbeeld: Genereren & upscalen
Stap 1: Imagine-request indienen
Stap 2: Taakstatus pollen
Stap 3: Klik op U1 om te upscalen
Stap 4: Poll de nieuwe taak en haal het resultaat op
⚠️ Wanneer is Modal vereist?
Wanneer je/mj/submit/action aanroept en de taakstatus MODAL wordt in plaats van SUCCESS, moet je /mj/submit/modal aanroepen om extra invoer te geven.
Bevestigde Modal-bewerkingen
| Operation | Button | What to Submit |
|---|---|---|
| Inpaint | Vary (Region) | maskBase64 (PNG-masker) + prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt (bijv. “your prompt —zoom 2”) |
🚀 Snelheidsmodusselectie
Voeg een snelheidsprefix toe aan het pad:| Modus | Padprefix | Voorbeeld |
|---|---|---|
| Snel | /mj-fast | /mj-fast/mj/submit/imagine |
| Turbo | /mj-turbo | /mj-turbo/mj/submit/imagine |
| Relax | (standaard) | /mj/submit/imagine |
🔗 Andere toegangspunten
Deze API’s zijn onafhankelijke toegangspunten die niet de imagine → action-flow volgen:| API | Doel |
|---|---|
POST /mj/submit/blend | Meng 2-5 afbeeldingen tot één |
POST /mj/submit/describe | Genereer prompt uit een afbeelding |
POST /mj/submit/video | Zet afbeelding om naar video |
POST /mj/submit/edits | Bewerk afbeelding met masker |
❓ Tips voor probleemoplossing
Op basis van het API-ontwerp en de workflow zijn dit veelvoorkomende problemen die je kunt tegenkomen:| Probleem | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
| Kan de knop Vary (Region) niet vinden | Je kijkt naar een 4-grid-afbeelding | Eerst Upscale uitvoeren (klik op U1-U4), controleer daarna de knoppen |
Taakstatus blijft hangen op MODAL | De bewerking vereist extra invoer | Roep /mj/submit/modal aan met de vereiste gegevens |
customId werkt niet | Je gebruikt een verouderde of hardcoded waarde | Haal altijd een nieuwe customId op uit het antwoord van /mj/task/\{id\}/fetch |
Lege buttons-array | Taak is nog bezig | Wacht op status: "SUCCESS" voordat je buttons benadert |