У Midjourney нет универсального публичного API, и это определяет реальную структуру «посредника» и «прокси»: они не просто меняют домен официального интерфейса, а добавляют слой оркестрации задач и биллинга поверх пула сторонних аккаунтов. Цепочка длиннее, чем у текстового API, и точек отказа больше.

Статья разбирает фактическую цепочку: статусы задач, хранение результатов, сверку биллинга, риски ключей и аккаунтов, условия провайдера, а также миграцию и приёмку.

Примечание: Midjourney — товарный знак Midjourney, Inc.; остальные названия принадлежат их правообладателям. Статья носит технический характер; автор не связан с Midjourney. Интерфейсы, статусы и биллинг посредников определяются документацией и договором провайдера; статья не является юридической консультацией.

1. Сначала различите четыре вида «посредников»

Тип Что делает Основные риски Для каких задач
Прокси на пуле аккаунтов Провайдер содержит аккаунты Midjourney и автоматически отправляет задачи Риск блокировки аккаунтов, очередь, условия сервиса Небольшие и средние команды, которым нужен API
Агрегирующий шлюз Единый вход к нескольким моделям изображений Сопоставление статусов, различия параметров, сбой промежуточного слоя Задачи с несколькими моделями
Перепродажа/пополнение Перепродажа подписки или квоты Стабильность upstream, баланс и возвраты Небольшие тесты, временные задачи
Собственная автоматизация Свои аккаунты и скрипты отправки Эксплуатация, блокировки, вся ответственность Техническая команда с контролем данных

Что вы покупаете — «техническую услугу» или «квоту модели» — определяет, кто отвечает при сбое. Исходя из этого спрашивайте про договор, счёт и условия обработки данных.

2. Какие звенья добавляются в асинхронную задачу через посредника

Типичная цепочка: ваш сервис отправляет запрос, посредник выполняет аутентификацию, ограничение частоты и списание; сохраняет запись и связывает номер бизнес-заказа с ID задачи upstream; пул аккаунтов ставит задачу в очередь и ждёт генерации; посредник опрашивает или принимает результат и сопоставляет статусы; наконец, сохраняет изображения или передаёт временную ссылку.

Каждый дополнительный переход — ещё одно место, где можно потерять состояние:

  • Посредник перезапустился или сменил экземпляр, и соответствие задач в памяти потерялось.
  • Upstream не ответил вовремя, но задача уже создана; посредник вернул ошибку, клиент повторил — получилось два изображения.
  • Отказ модерации сопоставлен с обычной ошибкой, и бизнес повторяет запрос бесконечно.
  • Ссылка на результат истекла: задача успешна, но изображение не скачивается.
  • У webhook нет ключа идемпотентности, и запись попадает в базу дважды.

Оценивая посредника, спрашивайте не только «поддерживает ли Midjourney», но и как сохраняются ID задач, как сопоставляются статусы и как компенсируются сбои.

3. Статусы задач и хранение результатов

Типичные статусы: в очереди, генерация, успех, ошибка, отказ модерации, тайм-аут или истечение. Названия не важны; важно сопоставление: бизнес должен различать «можно повторить» и «повторять бесполезно».

Отказ модерации, ошибку параметров и недостаток баланса не следует повторять автоматически; тайм-ауты и 5xx можно повторять с задержкой; успех с неудачным скачиванием требует отдельной компенсации. У каждой задачи должен быть ключ идемпотентности, чтобы избежать повторного списания и дублирования изображений.

О хранении результатов нужно выяснить четыре вещи: сколько хранятся записи задач; сохраняет ли посредник изображения и где; возвращается временная ссылка или постоянный адрес; можно ли после истечения найти задачу по бизнес-номеру. Ссылки на изображения обычно имеют срок действия, поэтому после успеха файл следует сразу скачать и сохранить.

4. Как проверять прозрачность биллинга

Споры по оплате задач с изображениями возникают чаще, потому что один запрос может включать генерацию, апскейл, варианты и повтор. До подписания уточните:

  • Единица оплаты — задача, успешное изображение или доля подписки.
  • Оплачиваются ли апскейл и варианты отдельно.
  • Как тарифицируются ошибки, тайм-ауты, отмена и отказ модерации.
  • Считаются ли повторные отправки и повторы, есть ли дедупликация по идемпотентности.
  • Есть ли минимальный платёж, порог предоплаты, правила возврата и тип счёта.
  • Содержит ли детализация ID задачи, тип действия, статус и сумму списания.

Не ориентируйтесь только на скидку с рекламной страницы. Прогоните 20–50 реальных задач за неделю и сверьте число успешных изображений, задач и счёт. При расхождении требуйте детализацию по ID задач, а не только итоговую сумму. Стоимость других моделей смотрите на странице тарифов; цены меняются вслед за upstream.

5. Ключи, аккаунты и риски upstream

Посредник означает, что промпты, референсные изображения и результаты проходят через третью сторону. Как минимум уточните:

  • Сохраняются ли промпты и изображения, как долго, используются ли для обучения или улучшения сервиса.
  • Можно ли ограничить ключ квотой, IP и сроком действия, как заблокировать его при утечке.
  • Upstream — один пул аккаунтов или несколько каналов, как переключаются при блокировке.
  • Разрешают ли условия автоматический доступ и перепродажу, где проходит граница ответственности.
  • Кто отвечает за апелляцию и возврат при споре о модерации контента.

Production-ключ не должен попадать во фронтенд, публичный репозиторий или журналы. Для особо чувствительных материалов выбирайте провайдера с отказом от сохранения данных и возможностью подписать соглашение; если это не подтверждено, сначала маскируйте данные.

6. Условия провайдера и границы ответственности

Посредник может продавать «техническую услугу» или «квоту модели», и ответственность различается. Технический провайдер отвечает за доступность, потерю задач и время реакции; перепродавец квоты часто может обещать лишь «передачу по возможности», и при изменении upstream исправить ситуацию трудно.

В договоре стоит зафиксировать: уровень сервиса и уведомления о сбоях, компенсацию за неудачные задачи, предварительное уведомление об изменении правил upstream, обязанности по обработке и удалению данных, выгрузку данных и судьбу баланса при прекращении сотрудничества. Не соглашайтесь на долгосрочную работу только с перепиской и без стороны договора.

7. Шаги миграции с прямого подключения или собственного решения

  1. Опишите текущие вызовы: модели, параметры, параллельность, среднее время генерации и типы ошибок.
  2. Уточните пути, аутентификацию и различия полей у посредника, составьте таблицу соответствия.
  3. Прогоните в тестовой среде четыре пути: отправка, запрос статуса, отмена и скачивание.
  4. Проведите теневой запуск на одной партии промптов: старая цепочка и посредник работают параллельно, сравнение без переключения.
  5. Сравните долю успеха, время в очереди, задержку P95, доступность изображений и стоимость одного пригодного результата.
  6. Переключайте 5–20% трафика, сохраняя переключатель отката на старую цепочку.
  7. Наблюдайте три-семь дней и проверьте сходимость счетов, детализации задач и бизнес-номеров.
  8. После полного перехода оставьте двухканальную страховку и упрощайте архитектуру только после стабилизации.

Во время миграции не удаляйте старый аккаунт и ключи и не записывайте задачи двух систем под один бизнес-номер, иначе сверка станет невозможной.

8. Как проверить посредника

# Отправьте минимальную задачу и запишите task_id и время; пути и поля уточняйте в документации
curl -sS -X POST "$RELAY_BASE_URL/v1/images/generations" \
  -H "Authorization: Bearer $RELAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"кот зевает у окна, естественный свет","async":true}'

# Опрашивайте статус и фиксируйте полный переход
curl -sS "$RELAY_BASE_URL/v1/tasks/$TASK_ID" \
  -H "Authorization: Bearer $RELAY_API_KEY"

При тестировании создавайте исключения: отмените задачу сразу после отправки, передайте неверный параметр, отправьте несколько задач одновременно, прервите скачивание. Проверьте, согласуются ли статусы, сообщения об ошибках и счёт. Затем откройте ссылку результата через 24 часа и проверьте запись задачи через семь дней. Только после этих трёх проверок стоит переходить к постепенному запуску.

9. Мониторинг и откат после миграции

  • Считайте задачи по статусам, отдельно отслеживайте долю ошибок, отказов модерации, тайм-аутов и отмен.
  • Фиксируйте время в очереди и время генерации отдельно, чтобы понять, где узкое место — в пуле аккаунтов или upstream.
  • Следите за долей успешных скачиваний; неудачные задачи отправляйте в очередь компенсации.
  • Учитывайте 401, 404, 429, 5xx, различая ключ, параметры, лимиты и сбой upstream.
  • Считайте стоимость «на одну успешно созданную задачу», а не только цену одного вызова.
  • Задайте порог отката: например, если доля успеха два часа подряд заметно ниже базовой, вернуться на старую цепочку.

Частые вопросы

Чем посредник отличается от прямой подписки Midjourney?

Прямая подписка — официальный продукт для ручной работы; посредник — API-обёртка для автоматизации. Параметры, параллельность и видимость задач могут различаться, а посредник дополнительно несёт риски пула аккаунтов и условий сервиса.

Сохраняет ли посредник мои промпты и изображения?

У разных сервисов по-разному. Уточните, сохраняются ли данные, как долго, где, кто имеет доступ, используются ли они для обучения и как работает удаление. Для клиентских материалов выбирайте провайдера с понятными условиями.

Что делать, если задача потерялась на стороне посредника?

Сначала найдите локальную запись по бизнес-номеру, затем проверьте журналы посредника и задачу upstream. Если восстановить нельзя, остаётся повторная отправка; поэтому до миграции выясните, сохраняет ли посредник соответствие задач.

Почему счёт не совпадает с числом изображений?

Частые причины — повторные отправки, повторы после ошибок, отдельная оплата апскейла и вариантов, разные правила отказа модерации, минимальный платёж или истёкший баланс. Требуйте детализацию по ID задач и сверяйте построчно.

Нужно ли менять код при миграции?

Если посредник совместим с текущим интерфейсом, обычно достаточно изменить Base URL, ключ и несколько полей. Если отличаются сопоставление статусов или формат callback, придётся менять опрос и запись в базу. Теневой запуск заранее выявит большинство различий.

Что дальше

Создайте тестовый ключ в ZSQH AI Gateway, проверьте минимальной задачей четыре звена — отправку, опрос, скачивание и сверку, — затем переходите к постепенной миграции. Доступные модели и расходы смотрите на странице тарифов; цены могут меняться.

Читайте также: