🎯 Comprendere il concetto fondamentale
L’API MidJourney simula le interazioni dei pulsanti di Discord. A differenza delle tipiche API REST, funziona come una macchina a stati in cui ogni operazione restituisce nuovi pulsanti per il passaggio successivo.Le 4 API fondamentali
| API | Scopo | Quando usarla |
|---|---|---|
POST /mj/submit/imagine | Generazione di immagini da testo | Punto di partenza per tutti i workflow |
GET /mj/task/\{id\}/fetch | Verificare lo stato del task e ottenere i pulsanti | Dopo ogni submit (interroga finché non è completato) |
POST /mj/submit/action | Fare clic su un pulsante (upscale, vary, zoom, ecc.) | Quando vuoi eseguire un’operazione su un’immagine |
POST /mj/submit/modal | Inviare input aggiuntivo | Solo quando lo stato è MODAL |
📊 Diagramma completo del workflow
🔑 Concetto chiave: pulsanti e customId
Ogni task completato con successo restituisce un arraybuttons. Ogni pulsante ha un customId che usi per attivare l’azione successiva.
Esempio di risposta da /mj/task/\{id\}/fetch:
customId NON è un valore fisso. Cambia per ogni task. Ottienilo sempre dall’array buttons.
📋 Riferimento pulsanti per fase
Dopo IMAGINE (immagine in griglia 4)
Questi pulsanti vengono restituiti quando la generazione iniziale dell’immagine è completata:| Button | customId Pattern | Action | Result |
|---|---|---|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | Upscale immagine singola | Immagine singola ad alta risoluzione |
| V1-V4 | MJ::JOB::variation::1::xxx | Genera variazioni | Nuova griglia 4 |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | Rigenera tutto | Nuova griglia 4 |
Dopo UPSCALE (immagine singola)
Dopo l’upscaling, ottieni l’accesso agli strumenti di modifica:| Label | Needs Modal? |
|---|---|
| Upscale (Subtle) / Upscale (2x) | ❌ No |
| Upscale (Creative) / Upscale (4x) | ❌ No |
| Vary (Subtle) 🪄 | ❌ No |
| Vary (Strong) 🪄 | ❌ No |
| Vary (Region) 🖌️ | ✅ Sì (mask) |
| Zoom Out 2x / 1.5x 🔍 | ❌ No |
| Custom Zoom 🔍 | ✅ Sì (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ No |
| Animate 🎞️ | ❌ No |
| 🔄 Reroll | ❌ No |
Nota: Le etichette dei pulsanti e i formati⚠️ Il pulsante Inpaint (Vary Region) appare solo dopo Upscale!customIdpossono variare a seconda della versione MJ specificata nel tuo prompt (ad esempio,--v 6.1vs--v 5.2). Leggi sempre i pulsanti dalla risposta dell’API.
⚡ Esempio completo: genera & upscale
Passaggio 1: invia la richiesta Imagine
Passaggio 2: interroga lo stato del task
Passaggio 3: fai clic su U1 per eseguire l’upscale
Passaggio 4: interroga il nuovo task e ottieni il risultato
⚠️ Quando è richiesto Modal?
Quando chiami/mj/submit/action e lo stato del task diventa MODAL invece di SUCCESS, devi chiamare /mj/submit/modal per fornire input aggiuntivo.
Operazioni Modal confermate
| Operation | Button | What to Submit |
|---|---|---|
| Inpaint | Vary (Region) | maskBase64 (PNG mask) + prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt (ad esempio, “your prompt —zoom 2”) |
🚀 Selezione della modalità Speed
Aggiungi il prefisso della velocità al path:| Modalità | Prefisso path | Esempio |
|---|---|---|
| Fast | /mj-fast | /mj-fast/mj/submit/imagine |
| Turbo | /mj-turbo | /mj-turbo/mj/submit/imagine |
| Relax | (predefinito) | /mj/submit/imagine |
🔗 Altri punti di ingresso
Queste API sono punti di ingresso indipendenti che non seguono il flusso imagine → action:| API | Scopo |
|---|---|
POST /mj/submit/blend | Unisci da 2 a 5 immagini in una sola |
POST /mj/submit/describe | Genera un prompt da un’immagine |
POST /mj/submit/video | Converte un’immagine in un video |
POST /mj/submit/edits | Modifica un’immagine con una maschera |
❓ Suggerimenti per il troubleshooting
In base al design dell’API e al workflow, ecco alcuni problemi comuni che potresti riscontrare:| Problema | Causa probabile | Soluzione |
|---|---|---|
| Impossibile trovare il pulsante Vary (Region) | Si sta visualizzando l’immagine in griglia 4 | Esegui prima l’upscale (fai clic su U1-U4), poi controlla i pulsanti |
Stato del task bloccato su MODAL | L’operazione richiede input aggiuntivi | Chiama /mj/submit/modal con i dati richiesti |
customId non funziona | Si sta usando un valore obsoleto o hardcoded | Ottieni sempre un customId aggiornato dalla risposta di /mj/task/\{id\}/fetch |
Array buttons vuoto | Il task è ancora in corso | Attendi status: "SUCCESS" prima di accedere ai pulsanti |