Перейти до основного вмісту

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.

Розуміння основної концепції

MidJourney API імітує взаємодію з кнопками Discord. На відміну від типових REST API, він працює як машина станів, де кожна операція повертає нові кнопки для наступного кроку.

4 основні API

APIПризначенняКоли використовувати
POST /mj/submit/imagineГенерація зображення з текстуПочаткова точка для всіх workflow
GET /mj/task/\{id\}/fetchПеревірка статусу task і отримання кнопокПісля кожного submit (опитуйте, доки не завершиться)
POST /mj/submit/actionНатискання кнопки (upscale, vary, zoom тощо)Коли потрібно виконати дію над зображенням
POST /mj/submit/modalНадсилання додаткового вводуЛише коли статус MODAL

Повна схема 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       │
           └──────────────────┘

Ключова концепція: Buttons і customId

Кожен успішно завершений task повертає масив buttons. Кожна кнопка має customId, який використовується для запуску наступної дії. Приклад відповіді від /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 не є фіксованим значенням. Він змінюється для кожного task. Завжди отримуйте його з масиву buttons.

Довідник по кнопках за етапами

Після IMAGINE (зображення 4-grid)

Ці кнопки повертаються, коли початкова генерація зображення завершена:
ButtoncustomId PatternActionResult
U1-U4MJ::JOB::upsample::1::xxxЗбільшити окреме зображенняОдне зображення у високій роздільній здатності
V1-V4MJ::JOB::variation::1::xxxЗгенерувати варіаціїНовий 4-grid
🔄MJ::JOB::reroll::0::xxx::SOLOЗгенерувати все повторноНовий 4-grid

Після UPSCALE (одне зображення)

Після збільшення ви отримуєте доступ до інструментів редагування:
LabelNeeds Modal?
Upscale (Subtle) / Upscale (2x)❌ Ні
Upscale (Creative) / Upscale (4x)❌ Ні
Vary (Subtle) 🪄❌ Ні
Vary (Strong) 🪄❌ Ні
Vary (Region) 🖌️✅ Так (mask)
Zoom Out 2x / 1.5x 🔍❌ Ні
Custom Zoom 🔍✅ Так (prompt)
⬅️➡️⬆️⬇️ Pan❌ Ні
Animate 🎞️❌ Ні
🔄 Reroll❌ Ні
Примітка: Підписи кнопок і формати customId можуть відрізнятися залежно від версії MJ, вказаної у вашому prompt (наприклад, --v 6.1 або --v 5.2). Завжди зчитуйте кнопки з відповіді API.
Кнопка Inpaint (Vary Region) з’являється лише після Upscale.

Повний приклад: Згенерувати та збільшити

Крок 1: Надішліть 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"] }
  }'
Відповідь:
{ "code": 1, "result": "1768464763141701" }

Крок 2: Опитуйте статус завдання

curl -X GET 'https://api.cometapi.com/mj/task/1768464763141701/fetch' \
  -H "Authorization: Bearer $COMETAPI_KEY"
Відповідь (коли завершено):
{
  "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" },
    ...
  ]
}

Крок 3: Натисніть U1 для збільшення

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"
  }'
Відповідь:
{ "code": 1, "result": "1768464800000000" }

Крок 4: Опитуйте нове завдання та отримайте результат

curl -X GET 'https://api.cometapi.com/mj/task/1768464800000000/fetch' \
  -H "Authorization: Bearer $COMETAPI_KEY"

Коли потрібен Modal?

Коли ви викликаєте /mj/submit/action і статус завдання стає MODAL замість SUCCESS, ви повинні викликати /mj/submit/modal, щоб надати додаткові вхідні дані.

Підтверджені операції Modal

OperationButtonWhat to Submit
InpaintVary (Region)maskBase64 (PNG mask) + prompt
Custom Zoom🔍 Custom Zoomprompt (наприклад, “your prompt —zoom 2”)
Приклад: потік 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,..."
  }'

Вибір режиму швидкості

Додайте префікс швидкості до шляху:
РежимПрефікс шляхуПриклад
Fast/mj-fast/mj-fast/mj/submit/imagine
Turbo/mj-turbo/mj-turbo/mj/submit/imagine
Relax(за замовчуванням)/mj/submit/imagine

Інші точки входу

Ці API — незалежні точки входу, які не дотримуються потоку imagine → action:
APIПризначення
POST /mj/submit/blendЗмішати 2–5 зображень в одне
POST /mj/submit/describeЗгенерувати prompt із зображення
POST /mj/submit/videoПеретворити зображення на відео
POST /mj/submit/editsРедагувати зображення за допомогою mask

Поради з усунення проблем

На основі дизайну API та робочого процесу, ось поширені проблеми, з якими ви можете зіткнутися:
ПроблемаЙмовірна причинаРішення
Не вдається знайти кнопку Vary (Region)Переглядаєте зображення 4-gridСпочатку виконайте upscale (натисніть U1-U4), потім перевірте кнопки
Статус завдання завис на MODALОперація потребує додаткового вводуВикличте /mj/submit/modal з потрібними даними
customId не працюєВикористовується застаріле або жорстко закодоване значенняЗавжди отримуйте свіжий customId із відповіді /mj/task/\{id\}/fetch
Порожній масив buttonsЗавдання все ще виконуєтьсяДочекайтеся status: "SUCCESS" перед доступом до кнопок