Passer au contenu principal

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

APIObjectifQuand l’utiliser
POST /mj/submit/imagineGénération de texte en imagePoint de départ de tous les workflows
GET /mj/task/\{id\}/fetchVérifier l’état de la tâche et récupérer les boutonsAprès chaque soumission (interroger jusqu’à la fin)
POST /mj/submit/actionCliquer sur un bouton (upscale, vary, zoom, etc.)Lorsque vous voulez agir sur une image
POST /mj/submit/modalSoumettre des informations supplémentairesUniquement 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 :
ButtoncustomId PatternActionResult
U1-U4MJ::JOB::upsample::1::xxxAgrandir une image uniqueImage unique en haute résolution
V1-V4MJ::JOB::variation::1::xxxGénérer des variationsNouvelle grille de 4
🔄MJ::JOB::reroll::0::xxx::SOLORégénérer l’ensembleNouvelle grille de 4

Après UPSCALE (image unique)

Après l’upscale, vous avez accès aux outils d’édition :
LabelNeeds 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

OperationButtonWhat to Submit
InpaintVary (Region)maskBase64 (masque PNG) + prompt
Custom Zoom🔍 Custom Zoomprompt (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 :
ModePréfixe de cheminExemple
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 :
APIObjectif
POST /mj/submit/blendFusionner 2 à 5 images en une seule
POST /mj/submit/describeGénérer un prompt à partir d’une image
POST /mj/submit/videoConvertir une image en vidéo
POST /mj/submit/editsModifier 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èmeCause probableSolution
Impossible de trouver le bouton Vary (Region)Vous regardez une image en grille 4Effectuez d’abord un upscale (cliquez sur U1-U4), puis vérifiez les boutons
Le statut de la tâche reste bloqué sur MODALL’opération nécessite une entrée supplémentaireAppelez /mj/submit/modal avec les données requises
customId ne fonctionne pasVous utilisez une valeur obsolète ou codée en durRécupérez toujours un customId à jour depuis la réponse de /mj/task/\{id\}/fetch
Tableau buttons videLa tâche est toujours en coursAttendez status: "SUCCESS" avant d’accéder aux boutons