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.
Forstå kjernekonseptet
MidJourney API simulerer Discord-knappeinteraksjoner. I motsetning til typiske REST API-er fungerer den som en tilstandsmaskin der hver operasjon returnerer nye knapper for neste steg.
De 4 kjerne-API-ene
| API | Formål | Når det brukes |
|---|
POST /mj/submit/imagine | Tekst-til-bilde-generering | Startpunkt for alle arbeidsflyter |
GET /mj/task/\{id\}/fetch | Sjekk oppgavestatus og hent knapper | Etter hver innsending (poll til den er ferdig) |
POST /mj/submit/action | Klikk på en knapp (upscale, vary, zoom osv.) | Når du vil utføre en handling på et bilde |
POST /mj/submit/modal | Send inn ekstra input | Bare når status er MODAL |
Komplett arbeidsflytdiagram
┌─────────────────────────────────────────────────────────────────────────────┐
│ 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 │
└──────────────────┘
Nøkkelkonsept: Knapper og customId
Hver vellykkede oppgave returnerer et buttons-array. Hver knapp har en customId som du bruker for å utløse neste handling.
Eksempel på respons fra /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 er ikke en fast verdi. Den endres for hver oppgave. Hent den alltid fra buttons-arrayet.
Knappereferanse etter steg
Etter IMAGINE (4-ruters bilde)
Disse knappene returneres når den innledende bildegenereringen er fullført:
| Button | customId Pattern | Action | Result |
|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | Oppskaler enkeltbilde | Høyoppløselig enkeltbilde |
| V1-V4 | MJ::JOB::variation::1::xxx | Generer variasjoner | Nytt 4-ruters bilde |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | Regenerer alle | Nytt 4-ruters bilde |
Etter UPSCALE (enkeltbilde)
Etter oppskalering får du tilgang til redigeringsverktøy:
| Label | Krever Modal? |
|---|
| Upscale (Subtle) / Upscale (2x) | ❌ Nei |
| Upscale (Creative) / Upscale (4x) | ❌ Nei |
| Vary (Subtle) 🪄 | ❌ Nei |
| Vary (Strong) 🪄 | ❌ Nei |
| Vary (Region) 🖌️ | ✅ Ja (maske) |
| Zoom Out 2x / 1.5x 🔍 | ❌ Nei |
| Custom Zoom 🔍 | ✅ Ja (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ Nei |
| Animate 🎞️ | ❌ Nei |
| 🔄 Reroll | ❌ Nei |
Merk: Knappelabeler og customId-formater kan variere avhengig av MJ-versjonen som er spesifisert i prompten din (f.eks. --v 6.1 vs --v 5.2). Les alltid knapper fra API-responsen.
Inpaint-knappen (Vary Region) vises kun etter Upscale.
Komplett eksempel: Generer og oppskaler
Steg 1: Send imagine-forespørsel
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"] }
}'
Respons:
{ "code": 1, "result": "1768464763141701" }
Steg 2: Poll oppgavestatus
curl -X GET 'https://api.cometapi.com/mj/task/1768464763141701/fetch' \
-H "Authorization: Bearer $COMETAPI_KEY"
Respons (når fullført):
{
"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" },
...
]
}
Steg 3: Klikk U1 for å oppskalere
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"
}'
Respons:
{ "code": 1, "result": "1768464800000000" }
Steg 4: Poll ny oppgave og hent resultat
curl -X GET 'https://api.cometapi.com/mj/task/1768464800000000/fetch' \
-H "Authorization: Bearer $COMETAPI_KEY"
Når kreves Modal?
Når du kaller /mj/submit/action og oppgavestatusen blir MODAL i stedet for SUCCESS, må du kalle /mj/submit/modal for å gi tilleggsinput.
Bekreftede Modal-operasjoner
| Operasjon | Knapp | Hva du sender |
|---|
| Inpaint | Vary (Region) | maskBase64 (PNG-maske) + prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt (f.eks. “your prompt —zoom 2”) |
Eksempel: Inpaint-flyt
# 1. Klikk Vary (Region)-knappen 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 og se status = "MODAL"
curl -X GET 'https://api.cometapi.com/mj/task/new_task_id/fetch'
# Respons: { "status": "MODAL" }
# 3. Send maske og 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,..."
}'
Valg av hastighetsmodus
Legg til hastighetsprefiks i stien:
| Modus | Stiprefiks | Eksempel |
|---|
| Fast | /mj-fast | /mj-fast/mj/submit/imagine |
| Turbo | /mj-turbo | /mj-turbo/mj/submit/imagine |
| Relax | (standard) | /mj/submit/imagine |
Andre inngangspunkter
Disse API-ene er uavhengige inngangspunkter som ikke følger imagine → action-flyten:
| API | Formål |
|---|
POST /mj/submit/blend | Bland 2-5 bilder til ett |
POST /mj/submit/describe | Generer prompt fra bilde |
POST /mj/submit/video | Konverter bilde til video |
POST /mj/submit/edits | Rediger bilde med maske |
Feilsøkingstips
Basert på API-designet og arbeidsflyten, her er vanlige problemer du kan støte på:
| Problem | Sannsynlig årsak | Løsning |
|---|
| Finner ikke Vary (Region)-knappen | Ser på 4-ruters bilde | Oppskaler først (klikk U1-U4), sjekk deretter knapper |
Oppgavestatus sitter fast på MODAL | Operasjonen krever tilleggsinput | Kall /mj/submit/modal med nødvendige data |
customId fungerer ikke | Bruker utdatert eller hardkodet verdi | Hent alltid fersk customId fra /mj/task/\{id\}/fetch-responsen |
Tomt buttons-array | Oppgaven er fortsatt under behandling | Vent på status: "SUCCESS" før du bruker knapper |