🎯 Зрозумійте основну концепцію
MidJourney API імітує взаємодії з кнопками Discord. На відміну від типових REST API, він працює як машина станів, де кожна операція повертає нові кнопки для наступного кроку.4 основні API
| API | Призначення | Коли використовувати |
|---|---|---|
POST /mj/submit/imagine | Генерація зображення з тексту | Початкова точка для всіх сценаріїв |
GET /mj/task/\{id\}/fetch | Перевірка статусу задачі та отримання кнопок | Після кожного submit (опитуйте до завершення) |
POST /mj/submit/action | Натискання кнопки (upscale, vary, zoom тощо) | Коли ви хочете виконати дію над зображенням |
POST /mj/submit/modal | Надсилання додаткового вводу | Лише коли status дорівнює MODAL |
📊 Повна схема workflow
🔑 Ключова концепція: кнопки та customId
Кожна успішно виконана задача повертає масивbuttons. Кожна кнопка має customId, який використовується для запуску наступної дії.
Приклад відповіді від /mj/task/\{id\}/fetch:
customId — це НЕ фіксоване значення. Воно змінюється для кожної задачі. Завжди отримуйте його з масиву buttons.
📋 Довідник кнопок за етапами
Після IMAGINE (зображення 4-grid)
Ці кнопки повертаються, коли завершено початкову генерацію зображення:| Button | customId Pattern | Action | Result |
|---|---|---|---|
| U1-U4 | MJ::JOB::upsample::1::xxx | Збільшити окреме зображення | Окреме зображення у високій роздільній здатності |
| V1-V4 | MJ::JOB::variation::1::xxx | Згенерувати варіації | Новий 4-grid |
| 🔄 | MJ::JOB::reroll::0::xxx::SOLO | Згенерувати все повторно | Новий 4-grid |
Після UPSCALE (окреме зображення)
Після upscaling ви отримуєте доступ до інструментів редагування:| Label | Needs Modal? |
|---|---|
| Upscale (Subtle) / Upscale (2x) | ❌ Ні |
| Upscale (Creative) / Upscale (4x) | ❌ Ні |
| Vary (Subtle) 🪄 | ❌ Ні |
| Vary (Strong) 🪄 | ❌ Ні |
| Vary (Region) 🖌️ | ✅ Так (маска) |
| Zoom Out 2x / 1.5x 🔍 | ❌ Ні |
| Custom Zoom 🔍 | ✅ Так (prompt) |
| ⬅️➡️⬆️⬇️ Pan | ❌ Ні |
| Animate 🎞️ | ❌ Ні |
| 🔄 Reroll | ❌ Ні |
Примітка: Назви кнопок і формати⚠️ Кнопка Inpaint (Vary Region) з’являється лише після Upscale!customIdможуть відрізнятися залежно від версії MJ, вказаної у вашому prompt (наприклад,--v 6.1проти--v 5.2). Завжди зчитуйте кнопки з відповіді API.
⚡ Повний приклад: Generate & Upscale
Крок 1: Надішліть Imagine-запит
Крок 2: Опитуйте статус завдання
Крок 3: Натисніть U1, щоб виконати Upscale
Крок 4: Опитуйте нове завдання й отримайте результат
⚠️ Коли потрібен Modal?
Коли ви викликаєте/mj/submit/action і статус завдання стає MODAL замість SUCCESS, потрібно викликати /mj/submit/modal, щоб надати додаткові вхідні дані.
Підтверджені операції Modal
| Operation | Button | What to Submit |
|---|---|---|
| Inpaint | Vary (Region) | maskBase64 (PNG-маска) + prompt |
| Custom Zoom | 🔍 Custom Zoom | prompt (наприклад, “your prompt —zoom 2”) |
🚀 Вибір режиму швидкості
Додайте префікс швидкості до шляху:| Режим | Префікс шляху | Приклад |
|---|---|---|
| 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 | Редагувати зображення за допомогою маски |
❓ Поради з усунення проблем
На основі дизайну API та робочого процесу, ось типові проблеми, з якими ви можете зіткнутися:| Проблема | Ймовірна причина | Рішення |
|---|---|---|
| Не вдається знайти кнопку Vary (Region) | Переглядаєте зображення у вигляді сітки 4 | Спочатку виконайте Upscale (натисніть U1-U4), потім перевірте кнопки |
Статус завдання завис на MODAL | Операція потребує додаткового введення | Викличте /mj/submit/modal з потрібними даними |
customId не працює | Використовується застаріле або жорстко закодоване значення | Завжди отримуйте актуальний customId з відповіді /mj/task/\{id\}/fetch |
Порожній масив buttons | Завдання все ще виконується | Дочекайтеся status: "SUCCESS" перед доступом до кнопок |