Midjourney V8.2 API: отправка задачи и получение изображений
Отправьте задачу Midjourney V8.2, сохраните ID и опрашивайте её в Python. Узнайте о параметрах версий, операциях и текущих ценах.
Читать в MarkdownДля интеграции Midjourney V8.2 API нужны явная версия, корректный запрос изображения и способ получить завершённую задачу. В SeedRouter вы отправляете запрос на /v1/images/generations, сохраняете полученный ID задачи и опрашиваете /v1/tasks/{id}. Успешная отправка подтверждает приём задачи; изображения приходят в завершённом результате.
Это руководство следует контракту запросов SeedRouter. Платная проверка 18 октября 2026 года завершила запрос V8.2 в быстром режиме и доставила четыре изображения 1024 × 1024. Портрет ниже — один из этих результатов. На странице модели находятся Playground и текущие цены, а справочник API отделяет поддерживаемые входные данные от сочетаний, которые ещё нужно проверить. [1]

Начните с явного запроса Midjourney V8.2 API
Используйте полный ID модели: midjourney-v8.2. SeedRouter требует явно указанную модель: не сокращайте её до midjourney и не определяйте по настройке аккаунта в другом интерфейсе. Записывайте модель вместе с отправленным запросом. [1]
Подготовьте серверный ключ API и короткий промпт с результатом, который можно оценить. Начните без референсов и операций с родительским изображением, чтобы первый запрос проверял базовый путь. Запрос ниже создал показанный набор портретов. В нём выбран быстрый режим и включена дополнительная проверка содержимого:
{
"model": "midjourney-v8.2",
"prompt": "Cinematic portrait of a young woman with freckles and wind-swept auburn hair, wearing a cream cable-knit sweater, laughing on a coastal cliff at golden hour, warm rim light, shallow depth of field, 85mm film photograph",
"speed": "fast",
"nsfw_check": true
}Минимальному запросу нужны только model и prompt; при отсутствии скорости используется быстрый режим. Добавляя size, укажите соотношение сторон вроде "16:9", а не размер в пикселях WIDTHxHEIGHT. Универсальная настройка клиента изображений, отправляющая 1024x1024, quality: "high" или произвольное n, не соответствует контракту этой модели. Адаптируйте тело по таблице полей Midjourney, а не переносите настройки другой модели без изменений.
Отправьте один раз, затем опрашивайте сохранённый ID задачи
Доступный для скачивания пример Python использует стандартную библиотеку, хранит ключ в переменной окружения и записывает ID принятой задачи в локальный файл. В нём разделены команды отправки и опроса. Благодаря этому можно возобновить чтение, не создавая новую генерацию.
export SEEDROUTER_API_KEY='your-server-side-key'
python3 midjourney-v8-2.py submit request.json --state mj-task.json
python3 midjourney-v8-2.py poll --state mj-task.jsonСохраните JSON-запрос выше как request.json. Замените пример ключа своим секретом в локальном окружении; не помещайте его в браузерную сборку и не добавляйте в репозиторий. Для проверки локального развёртывания задайте в примере SEEDROUTER_BASE_URL, соответствующий базовому URL /v1 этого развёртывания.
Пример отказывается перезаписывать существующий файл состояния при отправке. Он также не повторяет POST автоматически после сбоя соединения. Если ответ потерян, приложение может не знать, была ли задача принята. Перед решением об отправке ещё раз проверьте историю задач.
Опрос устроен иначе: он читает уже существующую задачу. Пример останавливается при завершении или ошибке и сообщает о достижении предела ожидания, если обработка продолжается. Предел ожидания — наблюдение клиента, а не доказательство необходимости повторной генерации.
Учитывайте структуру результата операции
Завершённая операция с изображением возвращает URL в output.data. Обходите этот массив, не предполагая, что в нём всегда четыре элемента. Генерация, выбор одного изображения, описание изображения и этап ввода для редактирования могут возвращать разные типы данных.
| Поле результата | Что должно делать приложение |
|---|---|
status | Различать обработку, завершение и ошибку задачи |
output.data[].url | Показывать или сохранять каждое полученное изображение |
output.grid | Помечать полученную сетку как сетку: один файл может содержать несколько вариантов изображения |
output.text | Показывать возвращённый текст, не предполагая четыре подсказки или английский язык |
output.seed | Сохранять при наличии, не требуя его в каждом результате |
output.awaiting_input | Продолжать документированный процесс ввода для редактирования |
Считайте задачу с ошибкой неудачной в приложении, даже если HTTP-запрос её чтения выполнен успешно. Успех HTTP означает, что запрос статуса обслужен, а не что нужное изображение сгенерировано.
Если output.grid равно true, один URL содержит сетку. Не придумывайте из этого файла четыре отдельных URL. Последующий выбор использует позицию изображения в сетке, начиная с 1; число URL не равно числу доступных вариантов.
Пример печатает завершённый результат как JSON. Ваше приложение может добавить хранение, миниатюры и элементы выбора для полученных изображений. Сохраняйте ID задачи вместе с ними, чтобы последующая операция ссылалась на правильную родительскую задачу.
Преобразуйте нативные параметры, не скрывая конфликты
Интеграция принимает структурированные поля и поддерживаемые нативные флаги промпта. Приоритет: структурированные поля, затем extra, затем флаги внутри prompt. Явные значения ноль и false сохраняются.
Например, промпт с --stylize 700 в сочетании с "stylize": 0 использует явный ноль. Это удобно, если интерфейс отправляет отдельное значение настройки, но может удивить приложение, собирающее промпты и JSON в разных местах. Лучше иметь один источник для каждой настройки.
Для запросов SeedRouter V8.2 quality принимает 0.25, 0.5, 1 или 2 в совместимых сочетаниях. Качество и hd — независимые входные параметры: настройка качества не выбирает HD. Проверьте текущие ограничения сочетаний, прежде чем добавлять оба или другие настройки референсов: документированный ввод не доказывает его эффект в каждой версии. Raw отделён от обоих; это различие описано в руководстве по Raw. [1]
Неизвестные поля JSON эта интеграция отбрасывает, а неизвестные нативные флаги отклоняет. Принятый запрос не доказывает, что постороннее дополнительное поле JSON изменило результат. Проверяйте документированные имена полей и сохраняйте точное отправленное тело в записи теста.
Привязывайте операции с родительским изображением к его задаче
Для последующей операции используйте свой parent_task_id SeedRouter. Зависимая операция остаётся привязана к исходному контексту выполнения. Если тот недоступен, операция завершается ошибкой, а не создаёт другую родительскую задачу в другом месте. Родительская задача должна принадлежать тому же аккаунту, использовать ту же модель и оставаться доступной для нужной операции. Публичные индексы изображений начинаются с 1.
Выбор изображения и творческое увеличение — разные операции. Результат select не следует называть повышением разрешения. Аналогично вариация, ремикс и официальный Edit Model V8.2 — разные возможности с разными требованиями.
Текущая интеграция не предоставляет новый Edit Model как проверенную операцию API. Не подменяйте её старым запросом inpaint, предполагая одинаковое поведение. Руководство по редактированию описывает доступные альтернативы и проверенную последовательность редактирования с маской V6.1, а справочник API фиксирует ограничения реализованных операций.
Оценивайте задачи, а не считайте миниатюры
По контракту цен этой интеграции одна завершённая генерация — одна задача. Выбор существующего изображения из сетки не создаёт ещё одну оплачиваемую генерацию. Вход на этап ввода для редактирования не добавляет вторую плату за генерацию; оплачивается финальная операция modal. Генерация четырёх изображений не равна автоматически четырём отдельно оплачиваемым задачам. Проверка чернового режима V8.2 от 18 октября вернула 24 изображения за одну задачу; число полученных изображений — ненадёжная формула цены.
Используйте текущую цену выбранной версии, операции, скорости и режима. Операции с родительским изображением могут наследовать настройки, поэтому цену следует получать по фактическому запросу, а не угаданным значениям по умолчанию. Страница модели читает настроенные цены, а не закрепляет постоянную долларовую сумму в этом руководстве.
При приёмочном тесте записывайте запрос, ID задачи, итоговый статус, число результатов и фактическое списание с аккаунта. Успешная компиляция или имитационный HTTP-тест не доказывают эти факты выполнения. Неудачные запросы в SeedRouter не оплачиваются.
Частые вопросы
Можно использовать тот же ключ API во frontend JavaScript?
Храните его на сервере. Пусть браузер обращается к аутентифицированному эндпоинту приложения, который отправляет запрос с серверным ключом.
ID задачи означает, что изображение готово?
Нет. Читайте задачу до статуса завершения или ошибки, затем обрабатывайте соответствующий результат. Сохраните ID до начала этого цикла опроса.
Нужно ли запускать новую генерацию при тайм-ауте?
Не автоматически. Сохраните известный ID и изучите существующую задачу. Тайм-аут соединения или ожидания клиента не доказывает, что исходная отправка была отклонена.
Можно изменить версию для операции с родительским изображением?
Эта интеграция требует ту же модель, что у родительской задачи. Для оценки другой версии начните отдельную генерацию.
Начните интеграцию Midjourney V8.2 API с одного явного запроса и сохранённого ID задачи. Проверьте полученный результат и списание, прежде чем добавлять референсы или цепочку операций.
Источники
Контракт и доказательства выполнения проверены 18 октября 2026 года. Показанные изображения — результаты платных проверок интеграции, а не общий бенчмарк модели.
