🎯 Comprendre le concept de base
L’API MidJourney simule les interactions avec les boutons Discord. Contrairement aux API REST classiques, elle fonctionne comme une machine à états où chaque opération renvoie de nouveaux boutons pour l’étape suivante.Les 4 API principales
| API | Objectif | Quand l’utiliser |
|---|---|---|
POST /mj/submit/imagine | Génération de texte vers image | Point de départ de tous les workflows |
GET /mj/task/\{id\}/fetch | Vérifier le statut de la tâche et récupérer les boutons | Après chaque soumission (interrogez jusqu’à la fin) |
POST /mj/submit/action | Cliquer sur un bouton (upscale, vary, zoom, etc.) | Lorsque vous voulez agir sur une image |
POST /mj/submit/modal | Envoyer une entrée supplémentaire | Uniquement lorsque le statut est MODAL |
📊 Schéma complet du workflow
🔑 Concept clé : boutons et customId
Chaque tâche réussie renvoie un tableaubuttons. Chaque bouton possède un customId que vous utilisez pour déclencher l’action suivante.
Exemple de réponse de /mj/task/\{id\}/fetch :
customId n’est PAS une valeur fixe. Il change pour chaque tâche. Récupérez-le toujours depuis le tableau buttons.
📋 Référence des boutons par étape
Après IMAGINE (image en grille 4)
Ces boutons sont renvoyés lorsque votre génération d’image initiale est terminée :| Button | customId Pattern | Action | Result |
|---|---|---|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | Upscaler une image unique | Image unique en haute résolution |
| V1-V4 | MJ::JOB::variation::1::xxx | Générer des variations | Nouvelle grille de 4 |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | Régénérer l’ensemble | Nouvelle grille de 4 |
Après UPSCALE (image unique)
Après l’upscale, vous avez accès aux outils d’édition :| Label | Needs Modal? |
|---|---|
| Upscale (Subtle) / Upscale (2x) | ❌ Non |
| Upscale (Creative) / Upscale (4x) | ❌ Non |
| Vary (Subtle) 🪄 | ❌ Non |
| Vary (Strong) 🪄 | ❌ Non |
| Vary (Region) 🖌️ | ✅ Oui (mask) |
| Zoom Out 2x / 1.5x 🔍 | ❌ Non |
| Custom Zoom 🔍 | ✅ Oui (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ Non |
| Animate 🎞️ | ❌ Non |
| 🔄 Reroll | ❌ Non |
Note : Les libellés des boutons et les formats de⚠️ Le bouton Inpaint (Vary Region) n’apparaît qu’après Upscale !customIdpeuvent varier selon la version MJ spécifiée dans votre prompt (par ex.,--v 6.1vs--v 5.2). Lisez toujours les boutons depuis la réponse de l’API.
⚡ Exemple complet : générer et upscaler
Étape 1 : soumettre une requête Imagine
Étape 2 : interroger le statut de la tâche
Étape 3 : cliquer sur U1 pour upscaler
Étape 4 : interroger la nouvelle tâche et récupérer le résultat
⚠️ Quand Modal est-il requis ?
Lorsque vous appelez/mj/submit/action et que le statut de la tâche devient MODAL au lieu de SUCCESS, vous devez appeler /mj/submit/modal pour fournir des données supplémentaires.
Opérations Modal confirmées
| Operation | Button | What to Submit |
|---|---|---|
| Inpaint | Vary (Region) | maskBase64 (masque PNG) + prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt (par ex., “your prompt —zoom 2”) |
🚀 Sélection du mode de vitesse
Ajoutez un préfixe de vitesse au chemin :| Mode | Préfixe de chemin | Exemple |
|---|---|---|
| Rapide | /mj-fast | /mj-fast/mj/submit/imagine |
| Turbo | /mj-turbo | /mj-turbo/mj/submit/imagine |
| Relax | (par défaut) | /mj/submit/imagine |
🔗 Autres points d’entrée
Ces API sont des points d’entrée indépendants qui ne suivent pas le flux imagine → action :| API | Utilité |
|---|---|
POST /mj/submit/blend | Fusionner 2 à 5 images en une seule |
POST /mj/submit/describe | Générer un prompt à partir d’une image |
POST /mj/submit/video | Convertir une image en vidéo |
POST /mj/submit/edits | Modifier une image avec un masque |
❓ Conseils de dépannage
D’après la conception et le workflow de l’API, voici les problèmes courants que vous pouvez rencontrer :| Problème | Cause probable | Solution |
|---|---|---|
| Impossible de trouver le bouton Vary (Region) | Affichage de l’image en grille 4 | Effectuez d’abord un Upscale (cliquez sur U1-U4), puis vérifiez les boutons |
Statut de tâche bloqué à MODAL | L’opération nécessite une entrée supplémentaire | Appelez /mj/submit/modal avec les données requises |
customId ne fonctionne pas | Utilisation d’une valeur obsolète ou codée en dur | Récupérez toujours un customId récent depuis la réponse de /mj/task/\{id\}/fetch |
Tableau buttons vide | La tâche est toujours en cours | Attendez status: "SUCCESS" avant d’accéder aux boutons |