📋 系统概览 Обзор системы
🖼️ Imagine
POST提交文生图任务,输入提示词生成四宫格图片
Отправка задачи генерации изображения, ввод подсказки для создания сетки 4 изображений
🔍 Fetch
GET查询任务状态和结果,轮询直到任务完成
Запрос статуса и результата задачи, опрос до завершения
⚡ Action
POST执行后续操作:放大(U)、变体(V)、重绘等
Выполнение последующих операций: увеличение(U), вариант(V), перерисовка и др.
🎭 Modal
POST局部重绘确认,提交蒙版和新提示词
Подтверждение частичной перерисовки, отправка маски и новой подсказки
🔄 完整调用流程图 Полная блок-схема вызовов
1️⃣ 提交 ImagineОтправить Imagine
POST /mj/submit/imagine
输入: prompt, botType Ввод: prompt, botType获取任务IDПолучить ID задачи
返回: taskIdОтвет: taskId
例Пример: 17680837837206472️⃣ 轮询 FetchОпрос Fetch
GET /mj/task/{id}/fetch
等待 status=SUCCESSЖдать status=SUCCESS🖼️ 四宫格图片生成Сетка 4 изображений
imageUrl + imageUrls[4]
获取 buttons 列表Получить список buttons3️⃣ 放大图片 ActionУвеличить Action
customId: MJ::JOB::upsample::1::
选择 U1-U4 放大单张Выбрать U1-U4 для увеличения轮询新任务Опрос новой задачи
GET /mj/task/{newId}/fetch
等待放大完成Ждать завершения увеличения🎯 高清单图HD изображение
新增更多操作按钮Новые кнопки операций
包含 Vary (Region) 等Включая Vary (Region) и др.🔍 Upscale
进一步放大Доп. увеличение
🪄 Vary
微调/强变Вариации
🖌️ Region
局部重绘Частич. перерисовка
🔄 Zoom
缩放扩展Масштаб
🖌️ 局部重绘特殊流程 🖌️ Специальный процесс частичной перерисовки
4️⃣ 触发 Vary (Region)Запустить Vary (Region)
Action 提交 Inpaint customIdAction отправить Inpaint customId
MJ::Inpaint::1::uuid::SOLO⚠️ 等待确认状态Ожидание подтверждения
code: 21
"Waiting for window confirm"5️⃣ Modal 确认Подтверждение Modal
POST /mj/submit/modal
提交: taskId + maskBase64 + promptОтправить: taskId + maskBase64 + prompt轮询最终结果Опрос финального результата
GET /mj/task/{finalId}/fetch
等待重绘完成Ждать завершения перерисовки✅ 局部重绘完成Перерисовка завершена
获取重绘后的图片Получить перерисованное изображение
📚 API 详细文档 Подробная документация API
🖼️ Imagine - 文生图Текст в изображение
POST请求头 HeadersЗаголовки Headers
| 参数Параметр | 类型Тип | 必填Обязат. | 说明Описание |
|---|---|---|---|
mj-api-secret |
string | 是Да | 302.AI 后台的 API KeyAPI Key из панели 302.AI |
请求体 BodyТело запроса Body
| 参数Параметр | 类型Тип | 必填Обязат. | 说明Описание |
|---|---|---|---|
prompt |
string | 是Да | 提示词Подсказка |
botType |
string | 否Нет | MID_JOURNEY (默认) 或 NIJI_JOURNEYMID_JOURNEY (по умолч.) или NIJI_JOURNEY |
base64Array |
array | 否Нет | 垫图 base64 数组Массив base64 опорных изображений |
notifyHook |
string | 否Нет | 回调地址URL обратного вызова |
state |
string | 否Нет | 自定义参数Пользовательский параметр |
请求示例Пример запроса
{
"base64Array": [],
"botType": "MID_JOURNEY",
"notifyHook": "",
"prompt": "Cat",
"state": ""
}
响应示例Пример ответа
{
"code": 1,
"description": "提交成功Успешно отправлено",
"result": "1768083783720647",
"properties": {}
}
响应状态码Коды ответа
🔍 Fetch - 获取任务Получить задачу
GET路径参数Параметры пути
| 参数Параметр | 类型Тип | 必填Обязат. | 说明Описание |
|---|---|---|---|
id |
string | 是Да | 任务 IDID задачи |
任务状态枚举Перечисление статусов
响应示例(成功)Пример ответа (успех)
{
"action": "IMAGINE",
"status": "SUCCESS",
"progress": "100%",
"id": "1768083783720647",
"prompt": "Cat",
"imageUrl": "https://file.302.ai/.../xxx.png",
"imageUrls": [
{"url": "https://file.302.ai/.../1.jpg"},
{"url": "https://file.302.ai/.../2.jpg"},
{"url": "https://file.302.ai/.../3.jpg"},
{"url": "https://file.302.ai/.../4.jpg"}
],
"buttons": [
{"customId": "MJ::JOB::upsample::1::", "label": "U1"},
{"customId": "MJ::JOB::upsample::2::", "label": "U2"},
...
]
}
⚡ Action - 修改操作Операция изменения
POST请求体 BodyТело запроса Body
| 参数Параметр | 类型Тип | 必填Обязат. | 说明Описание |
|---|---|---|---|
customId |
string | 是Да | 动作标识(从 buttons 获取)Идентификатор действия (из buttons) |
taskId |
string | 是Да | 原任务 IDID исходной задачи |
常用 customId 格式Часто используемые форматы customId
| 操作Операция | customId | 说明Описание |
|---|---|---|
| U1-U4 | MJ::JOB::upsample::1:: |
放大第 N 张图Увеличить изобр. N |
| V1-V4 | MJ::JOB::variation::1:: |
第 N 张变体Вариант изобр. N |
| 🖌️ Inpaint | MJ::Inpaint::1::uuid::SOLO |
局部重绘Частичная перерисовка |
code: 21 和 "Waiting for window confirm",此时需要调用 Modal 接口进行确认。
⚠️ Особый случай:Когда customId — это частичная перерисовка (Inpaint), ответ вернет code: 21 и "Waiting for window confirm". Необходимо вызвать интерфейс Modal для подтверждения.
🎭 Modal - 局部重绘确认Подтверждение перерисовки
POST请求体 BodyТело запроса Body
| 参数Параметр | 类型Тип | 必填Обязат. | 说明Описание |
|---|---|---|---|
taskId |
string | 是Да | Action 返回的新任务 IDНовый ID задачи от Action |
maskBase64 |
string | 否Нет | 蒙版图片的 base64 编码Base64 кодировка маски |
prompt |
string | 否Нет | 新的提示词Новая подсказка |
请求示例Пример запроса
{
"taskId": "1768084861949138",
"maskBase64": "data:image/png;base64,iVBORw0KGgo...",
"prompt": "a cute dog instead of cat"
}
💡 实战经验总结 Практический опыт
📋 完整局部重绘流程示例📋 Полный пример процесса частичной перерисовки
提交 Imagine 生成四宫格Отправить Imagine для создания сетки 4 изображений
POST /mj/submit/imagine
{ "prompt": "Cat", "botType": "MID_JOURNEY" }
→ 返回Ответ taskId: "1768083783720647"
轮询 Fetch 等待完成Опрос Fetch до завершения
GET /mj/task/1768083783720647/fetch → 等待Ждать status: "SUCCESS" → 获取 buttons 列表Получить список buttons
放大图片(必须先放大才能局部重绘)Увеличить изображение (необходимо перед перерисовкой)
POST /mj/submit/action
{ "customId": "MJ::JOB::upsample::1::", "taskId": "1768083783720647" }
→ 返回新Ответ новый taskId: "1768084203818772"
触发局部重绘Запустить частичную перерисовку
POST /mj/submit/action
{ "customId": "MJ::Inpaint::1::uuid::SOLO", "taskId": "1768084203818772" }
→ 返回Ответ code: 21, "Waiting for window confirm"
→ 返回新Новый taskId: "1768084861949138"
Modal 确认(提交蒙版和新提示词)Подтверждение Modal (отправка маски и новой подсказки)
POST /mj/submit/modal
{
"taskId": "1768084861949138",
"maskBase64": "base64...",
"prompt": "a golden retriever dog"
}
→ 返回新Новый taskId: "1768084924743471"
最终轮询获取重绘结果Финальный опрос для получения результата
GET /mj/task/1768084924743471/fetch → status: "SUCCESS" → imageUrl: 重绘后的图片地址URL перерисованного изображения
关键点 1: 任务 ID 链条Ключевой момент 1: Цепочка ID задач
每次操作都会产生新的 taskId,必须使用最新的 taskId 进行后续操作。
Каждая операция генерирует новый taskId, необходимо использовать последний taskId для следующих операций.
Imagine → taskId1 → Upscale → taskId2 → Inpaint → taskId3 → Modal → taskId4
关键点 2: 轮询策略Ключевой момент 2: Стратегия опроса
建议轮询间隔 2-5 秒,避免频繁请求。当 status 为 SUCCESS 或 FAILURE 时停止轮询。
Рекомендуемый интервал опроса 2-5 секунд. Остановить опрос когда status равен SUCCESS или FAILURE.
关键点 3: 蒙版图片格式Ключевой момент 3: Формат маски
maskBase64 应该是黑白蒙版图片:
maskBase64 должен быть черно-белой маской:
- 白色区域:需要重绘的部分Белые области: части для перерисовки
- 黑色区域:保持不变的部分Черные области: неизменяемые части
关键点 4: code 21 特殊处理Ключевой момент 4: Специальная обработка code 21
当 Action 返回 code: 21 时,表示需要额外确认,需调用 Modal 接口。
Когда Action возвращает code: 21, требуется дополнительное подтверждение через интерфейс Modal.