Midjourney в API

Модель midjourney создаёт картинки по тексту, смешивает несколько картинок и описывает картинку. Параметры, флаги в запросе и результат.

Обновлено: 4 мин чтения

Создайте картинки

Модель midjourney запускается через POST /v1/images/generations или POST /v1/tasks. Задачу выбирает параметр task со значениями imagine (по умолчанию), blend и describe. Задачи imagine и blend возвращают набор картинок, а describe текст.

curl https://epicai.ru/v1/tasks \
  -H "Authorization: Bearer sk-epic-ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "midjourney",
    "prompt": "a small ceramic teapot on a wooden table, soft window light, product photo --no text",
    "parameters": {"version": "v 7", "aspect": "16:9", "draft": true}
  }'

В ответе приходит задача, а результат забирает запрос GET /v1/tasks/{id}, как в статье Задачи. Через /v1/images/generations запрос ждёт результата около 100 секунд и при нехватке времени отвечает 202 с задачей, подробности в статье Создание картинок в API. Параметры можно писать рядом с model или в объекте parameters.

"output": [
  {"type": "image", "url": "https://epicai.ru/storage/api/595ef35bd62fd815d180b829/1.png",
   "mime": "image/png", "bytes": 1423589, "width": 1456, "height": 816},
  {"type": "image", "url": "https://epicai.ru/storage/api/595ef35bd62fd815d180b829/2.png", …},
  {"type": "image", "url": "https://epicai.ru/storage/api/595ef35bd62fd815d180b829/3.png", …},
  {"type": "image", "url": "https://epicai.ru/storage/api/595ef35bd62fd815d180b829/4.png", …}
]

Каждая картинка лежит в отдельном файле PNG. Обычная задача даёт четыре картинки. Черновик на версиях v8.1 и v8.2 даёт 24 картинки по цене обычной задачи, а черновик v7 даёт четыре картинки за половину цены. Версии v6.1, v6 и Niji 6 параметр draft не учитывают. Цена назначена за задачу, и число картинок на неё не влияет. Ссылки открываются без ключа и живут 7 суток.

Описание prompt обязательно. Предельная длина лежит в поле prompt_max описания модели, и флаги -- входят в неё. Слишком длинный текст даёт 400 prompt_too_long. К описанию можно приложить до 5 картинок-образцов в поле images.

Настройте параметры

ПараметрЗначения
versionv 8.2 (по умолчанию), v 8.1, v 7, v 6.1, v 6, Niji 6. Пишется как в списке, с пробелом. Меняет цену
aspectСоотношение сторон от 9:21 до 21:9, по умолчанию 1:1
process_modeFast или Turbo. Меняет цену. Действует на v7, v6.1, v6 и Niji 6 без черновика, на v8 действует только Fast
drafttrue или false. Только v8.2, v8.1 и v7. Меняет цену
stylizeЦелое от 0 до 1000, по умолчанию 100
chaosЦелое от 0 до 100
weirdЦелое от 0 до 3000
rawtrue включает режим Raw
seedЦелое от 0 до 4294967295
excludeСлова через запятую, которых не должно быть на картинке. Уходят во флаг --no. Кроме Niji 6
defectstrue добавляет к --no список типичных дефектов. Кроме Niji 6
dimensionТолько для blend, см. ниже

Параметры из таблицы действуют только в imagine. Точные списки и условия лежат в parameters описания GET /v1/models/midjourney, а примеры цен в pricing.examples.

Пишите флаги в описании

Флаги Midjourney, записанные в prompt после --, остаются в запросе. Если флаг стоит в тексте, одноимённый параметр к нему не добавляется. Это относится к --v, --niji, --ar, --stylize, --chaos, --weird, --seed и --raw. Слова после --no объединяются со значением параметра exclude.

Флаги, которые меняют цену мимо параметров, из текста убираются без ошибки: --fast, --turbo, --relax, --draft, --repeat, --quality и --video, а также их короткие записи --r и --q. Скорость и черновик задавайте параметрами process_mode и draft. Цена считается по параметрам, поэтому версию тоже лучше передавать параметром, а не флагом --v. Если Midjourney отклонил значения флагов, придёт 400 invalid_prompt_flags.

Описание проходит проверку стоп-слов, и найденное слово даёт 400 invalid_input. Если запрос или картинку отклонил фильтр Midjourney, придёт ошибка content_filter. TOK в обоих случаях не списываются.

Смешайте картинки

Задача blend смешивает от 2 до 5 картинок из поля images. Описание не нужно и не используется. Параметр dimension задаёт форму результата. Значение portrait даёт соотношение 2:3, square 1:1, landscape 3:2. Результат состоит из четырёх картинок.

{
  "model": "midjourney",
  "parameters": {"task": "blend", "dimension": "landscape"},
  "images": ["https://example.com/first.jpg", "https://example.com/second.jpg"]
}

Картинку передают ссылкой http(s) или строкой data:image/png;base64,…. Форматы PNG, JPEG и WebP, размер до 10 МБ. Ссылку скачивает сам Midjourney, поэтому она должна открываться без входа. Иначе придёт ошибка input_unavailable. Для blend одной картинки мало, ответ 400 missing_required_parameter.

Опишите картинку

Задача describe принимает одну картинку в images и возвращает текстовые описания, из которых можно собрать запрос для imagine. Создавайте её через POST /v1/tasks, потому что результат — текст, а /v1/images/generations отдаёт только картинки.

curl https://epicai.ru/v1/tasks \
  -H "Authorization: Bearer sk-epic-ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "midjourney",
    "parameters": {"task": "describe"},
    "images": ["https://example.com/photo.jpg"]
  }'

В output готовой задачи два файла. Первый — .txt, в нём описания, разделённые пустой строкой. Второй — .json с массивом prompts.

{"prompts": ["A top-down photograph of a young black Labrador sitting on a rustic wooden deck. …"]}

Описания приходят на английском. Если Midjourney вернул их на другом языке, epicai переводит текст, а оригинал кладёт в поле original того же файла.

Продолжите с готовым результатом

Увеличение, вариации, пересоздание сетки, перерисовка, расширение кадра, замена фона и видео из картинки запускаются как задачи с полем source, которое указывает на готовую задачу и номер картинки в ней. Список операций, параметры и цены собраны в статье Операции над готовым результатом. Не работают только правка области картинки по маске (inpaint и edit) и загрузка закрашенной картинки.

Не нашли ответ?

Посмотрите частые вопросы или напишите в поддержку.

Войти или создать аккаунт

20 000 токенов в подарок новым пользователям. Без карты и без VPN.

или через сервис

Продолжая, вы получаете сервисные письма.

Для защиты от роботов используется Yandex SmartCaptcha. Условия обработки данных.