Midjourney в API
Модель midjourney создаёт картинки по тексту, смешивает несколько картинок и описывает картинку. Параметры, флаги в запросе и результат.
Создайте картинки
Модель 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.
Настройте параметры
| Параметр | Значения |
|---|---|
version | v 8.2 (по умолчанию), v 8.1, v 7, v 6.1, v 6, Niji 6. Пишется как в списке, с пробелом. Меняет цену |
aspect | Соотношение сторон от 9:21 до 21:9, по умолчанию 1:1 |
process_mode | Fast или Turbo. Меняет цену. Действует на v7, v6.1, v6 и Niji 6 без черновика, на v8 действует только Fast |
draft | true или false. Только v8.2, v8.1 и v7. Меняет цену |
stylize | Целое от 0 до 1000, по умолчанию 100 |
chaos | Целое от 0 до 100 |
weird | Целое от 0 до 3000 |
raw | true включает режим Raw |
seed | Целое от 0 до 4294967295 |
exclude | Слова через запятую, которых не должно быть на картинке. Уходят во флаг --no. Кроме Niji 6 |
defects | true добавляет к --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) и загрузка закрашенной картинки.
Не нашли ответ?
Посмотрите частые вопросы или напишите в поддержку.