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.
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 en image | Point de départ de tous les workflows |
GET /mj/task/\{id\}/fetch | Vérifier l’état de la tâche et récupérer les boutons | Après chaque soumission (interroger 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 | Soumettre des informations supplémentaires | Uniquement lorsque le statut est MODAL |
Diagramme complet du workflow
┌─────────────────────────────────────────────────────────────────────────────┐
│ 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 │
└──────────────────┘
Concept clé : boutons et customId
Chaque tâche réussie renvoie un tableau buttons. Chaque bouton possède un customId que vous utilisez pour déclencher l’action suivante.
Exemple de réponse de /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 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 | Agrandir 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 (masque) |
| Zoom Out 2x / 1.5x 🔍 | ❌ Non |
| Custom Zoom 🔍 | ✅ Oui (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ Non |
| Animate 🎞️ | ❌ Non |
| 🔄 Reroll | ❌ Non |
Remarque : Les libellés des boutons et les formats de customId peuvent varier selon la version de MJ spécifiée dans votre prompt (par ex., --v 6.1 vs --v 5.2). Lisez toujours les boutons depuis la réponse de l’API.
Le bouton Inpaint (Vary Region) n’apparaît qu’après Upscale.
Exemple complet : générer et agrandir
Étape 1 : soumettre une requête imagine
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"] }
}'
Réponse :
{ "code": 1, "result": "1768464763141701" }
Étape 2 : interroger le statut de la tâche
curl -X GET 'https://api.cometapi.com/mj/task/1768464763141701/fetch' \
-H "Authorization: Bearer $COMETAPI_KEY"
Réponse (une fois terminée) :
{
"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" },
...
]
}
Étape 3 : cliquer sur U1 pour agrandir
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"
}'
Réponse :
{ "code": 1, "result": "1768464800000000" }
Étape 4 : interroger la nouvelle tâche et obtenir le résultat
curl -X GET 'https://api.cometapi.com/mj/task/1768464800000000/fetch' \
-H "Authorization: Bearer $COMETAPI_KEY"
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 entré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”) |
Exemple : flux Inpaint
# 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,..."
}'
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 | Objectif |
|---|
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 de l’API et le workflow, voici les problèmes courants que vous pouvez rencontrer :
| Problème | Cause probable | Solution |
|---|
| Impossible de trouver le bouton Vary (Region) | Vous regardez une image en grille 4 | Effectuez d’abord un upscale (cliquez sur U1-U4), puis vérifiez les boutons |
Le statut de la tâche reste bloqué sur MODAL | L’opération nécessite une entrée supplémentaire | Appelez /mj/submit/modal avec les données requises |
customId ne fonctionne pas | Vous utilisez une valeur obsolète ou codée en dur | Récupérez toujours un customId à jour 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 |