Отправка задачи и опрос
Все эндпоинты отправки — асинхронные задачи: после отправки возвращаетсяtask_id, затем периодически запрашивайте статус через GET /v1/midjourney/{task_id}, пока он не станет SUCCESS / FAILURE.
- Ритм опроса: рекомендуется раз в 3–5 с; более высокая частота бессмысленна и тратит квоту.
- Не блокируйте синхронно ожидание завершения задачи внутри web-запроса — после отправки сразу возвращайте
task_id, а фронтенд пусть опрашивает асинхронно.
Проектирование промптов
Хороший промпт:- Субъект в начале: сначала субъект, затем описание сцены, в конце модификаторы.
- Явные структурированные параметры: использовать
--ar/--v/--s(или соответствующие поля body) контролируемее, чем полагаться на значения по умолчанию. - Избегайте двусмысленных слов:
photorealisticточнее, чемrealistic.
niji: true + version: "7", платформа нормализует это в --niji 7, тарификация идёт по midjourney@imagine-niji7.
Лучшие практики генерации по образцу
| Источник | Рекомендуемый подход | Примечание |
|---|---|---|
| Загрузка пользователем | Сначала сохраните в свой OSS / CDN, при отправке передавайте этот URL | Не передавайте base64 напрямую (трата трафика) |
| Публичный URL | Передавайте напрямую | Учитывайте SSRF (должен быть доступен из интернета) и лимит 12 MiB |
| Сторонние / иные артефакты | Сначала перенесите в свой OSS | Сторонние URL могут истечь |
- Сожмите до < 5 MiB: лимит платформы — 12 MiB, но небольшие изображения передаются / обрабатываются быстрее.
- Подойдут форматы PNG / JPG / WebP, рекомендуется качественный JPG.
- Разрешения 1024–2048 px достаточно, выше — расточительно.
- Вес образца
iw(0–3, по умолчанию 1): >1 — ближе к оригиналу, <1 — свободнее.
Обработка ошибок и стратегия повторов
| code | Значение | Стратегия повтора |
|---|---|---|
1 / 200 | Успех | ✅ |
4 VALIDATION_ERROR | Ошибка параметров | ❌ Не повторять, исправьте параметры |
3 NOT_FOUND | Нет доступного инстанса / task_id не существует | Если инстанс недоступен — можно повторить позже; если task_id не существует — не повторять |
9 FAILURE | Отказ сервиса / внутренняя ошибка | ⏳ Можно повторить, экспоненциальная задержка (1s, 4s, 16s) |
21 MODAL | Не финальное состояние | ✅ Продолжайте вызовом /modal |
24 BANNED_PROMPT | Запрещённое слово | ❌ Не повторять, измените prompt; возврат средств уже выполнен автоматически |
429 | Ограничение частоты | ⏳ Экспоненциальная задержка + jitter |
5xx / сетевая ошибка | Сервер / сеть | ⏳ Экспоненциальная задержка, при сетевой ошибке можно сразу повторить 1 раз |
Процесс вторичных операций
⚠️ После перехода inpaint в MODAL необходимо вызвать /modal в течение 30 минут, иначе задача в фоне будет автоматически отменена (CANCEL) с возвратом средств.
Контроль тарификации video
- Один сегмент:
batch_size: 1→ списывается 1 ×midjourney@video - Пакет из 4 сегментов:
batch_size: 4→ списывается 4 ×midjourney@video - Один HD-сегмент:
video_type: "vid_1.1_i2v_720"+batch_size: 1→ списывается 1 ×midjourney@video-720p
batch_size=1; 4 — только для пакетного сравнения вариантов, не включайте 4 по умолчанию (стоимость вырастет в N раз).
Конкурентность и пропускная способность
- У платформы есть лимит на число отправок в минуту; при превышении возвращается
429, нужен повтор с задержкой. - Реальная конкурентность генерации определяется ёмкостью системы; при превышении задачи становятся в очередь; долгое нахождение задачи в
SUBMITTEDобычно означает очередь. - При опросе обязательно используйте
sleep, не зацикливайтесь без sleep.
Рекомендации по мониторингу
| Метрика | Ориентировочный порог | Значение |
|---|---|---|
| Доля SUCCESS (за последний 1 ч) | > 95% | Низкое значение указывает на проблемы сервиса / сети |
| Среднее время завершения | < 90s | Высокое значение указывает на очередь |
| Число задач, застрявших в MODAL | близко к 0 | Большое значение означает, что клиент не вызывает /modal |
Доля code=24 | < 5% | Высокое значение означает, что prompt часто срабатывает на запрещённые слова |
Чек-лист устранения неполадок
| Симптом | Направление диагностики |
|---|---|
Задача долго в SUBMITTED | Очередь в системе, проверьте позже |
Задача долго в NOT_START | Платформа позже автоматически выполнит таймаут с возвратом средств, ручного вмешательства не требуется |
Задача MODAL более 30 минут | Клиент не вызвал /modal, задача автоматически отменена (CANCEL) с возвратом средств |
Поле prompt пустое | Текстовый результат задачи describe находится в поле description |
В image_urls не хватает изображения | Часть изображений отклонена модерацией контента, смотрите fail_reason |
| Тарификация выше ожидаемой | Смотрите поле quota; для video не забывайте × batch_size |