Генерирует изображения по текстовому описанию и может учитывать картинку-референс для похожего настроения, композиции или стиля. Цена - 10 ₽ за запуск, в нём четыре варианта.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Midjourney 8 - модель с узнаваемой художественной эстетикой: кинематографичные кадры, живописные портреты, иллюстрации, предметная съёмка. За один запрос она возвращает четыре варианта изображения. Помимо текста можно передать картинку-референс, которая задаёт настроение, палитру и композицию, и управлять характером результата параметрами стилизации, разнообразия и необычности.
Через API доступны оба сценария:
prompt;image_url, и модель ориентируется на его стиль и цвета.Каждый вызов создаёт асинхронную операцию: вы получаете id, а результат забираете отдельным запросом статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Сценарии, которые поддерживает модель:
{
"tool": "midjourney8",
"input": {
"...": "..."
}
}
tool - slug нейросети, здесь всегда "midjourney8".input - параметры конкретного запуска.input, без дополнительного вложенного объекта input.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Описание изображения, от 3 до 4000 символов: сюжет, стиль, свет, композиция. |
image_url | string (url) | Нет | Один внешний URL картинки-референса. Модель берёт из неё настроение, цвета и композицию, а сюжет - из prompt. Только http/https, форматы .jpg, .jpeg, .png, .webp. |
aspect_ratio | enum | Нет | Формат кадра: 1:1 (по умолчанию), 16:9, 9:16, 3:4, 4:3, 21:9. |
stylize | number | Нет | Стилизация, от 0 до 1000. По умолчанию 100. Меньше - ближе к буквальному описанию, больше - выразительнее художественный стиль. |
chaos | number | Нет | Разнообразие, от 0 до 100. По умолчанию 0. Чем выше, тем сильнее четыре варианта отличаются друг от друга. |
weird | number | Нет | Необычность, от 0 до 3000. По умолчанию 0. Добавляет нестандартную, экспериментальную эстетику. |
use_negative_prompt | boolean | Нет | Включает негативный промпт. Без true поле negative_prompt игнорируется. |
negative_prompt | string | Нет | Чего не должно быть на изображении, до 500 символов, например люди, текст, беспорядок. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "midjourney8",
"input": {
"prompt": "Одинокий самурай под дождём на ночной улице Киото, неон, отражения, кинематографичный кадр",
"aspect_ratio": "16:9",
"stylize": 250,
"chaos": 0,
"weird": 0
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'midjourney8',
input: {
prompt:
'Одинокий самурай под дождём на ночной улице Киото, неон, отражения, кинематографичный кадр',
aspect_ratio: '16:9',
stylize: 250,
chaos: 0,
weird: 0,
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'midjourney8',
'input': {
'prompt': 'Одинокий самурай под дождём на ночной улице Киото, неон, отражения, кинематографичный кадр',
'aspect_ratio': '16:9',
'stylize': 250,
'chaos': 0,
'weird': 0,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "midjourney8",
"input": {
"prompt": "Уличный портрет в том же настроении и цветах, что на референсе, но в летнем городе у моря",
"image_url": "https://cdn.example.com/source-image-1.jpg",
"aspect_ratio": "9:16",
"stylize": 150,
"use_negative_prompt": true,
"negative_prompt": "текст, водяные знаки, лишние люди"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'midjourney8',
input: {
prompt:
'Уличный портрет в том же настроении и цветах, что на референсе, но в летнем городе у моря',
image_url: 'https://cdn.example.com/source-image-1.jpg',
aspect_ratio: '9:16',
stylize: 150,
use_negative_prompt: true,
negative_prompt: 'текст, водяные знаки, лишние люди',
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'midjourney8',
'input': {
'prompt': 'Уличный портрет в том же настроении и цветах, что на референсе, но в летнем городе у моря',
'image_url': 'https://cdn.example.com/source-image-1.jpg',
'aspect_ratio': '9:16',
'stylize': 150,
'use_negative_prompt': True,
'negative_prompt': 'текст, водяные знаки, лишние люди',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "midjourney8",
"cost": 10,
"balance_after": 495,
"created_at": "2026-09-17T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "midjourney8",
"cost": 10,
"created_at": "2026-09-17T12:00:00Z",
"completed_at": "2026-09-17T12:01:20Z",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/midjourney8/image-1.png",
"https://storage.bratuha.ru/results/midjourney8/image-2.png",
"https://storage.bratuha.ru/results/midjourney8/image-3.png",
"https://storage.bratuha.ru/results/midjourney8/image-4.png"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "midjourney8",
"cost": 10,
"created_at": "2026-09-17T12:00:00Z",
"completed_at": "2026-09-17T12:00:40Z",
"result": null,
"error_message": "Произошла ошибка при обработке вашего запроса. Пожалуйста, попробуйте снова."
}
После создания операции сохраните id и проверяйте её статус запросом:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
const response = await fetch(
'https://bratuha.ru/api/v1/operations/op_uuid-123',
{
headers: {
Authorization: 'Bearer brth_ваш_ключ',
},
}
)
const data = await response.json()
Пока операция выполняется, status будет queued или processing. Опрашивайте статус раз в 5-10 секунд.
После успешного завершения result содержит четыре варианта изображения:
{
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/midjourney8/image-1.png",
"https://storage.bratuha.ru/results/midjourney8/image-2.png",
"https://storage.bratuha.ru/results/midjourney8/image-3.png",
"https://storage.bratuha.ru/results/midjourney8/image-4.png"
]
}
type всегда равен "image".urls содержит четыре ссылки на PNG - четыре варианта одного запроса.cost ответа. Если операция завершилась с ошибкой, деньги возвращаются на баланс автоматически.POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и списывает деньги.queued проверяйте статус по id.image_url подходят только внешние http/https ссылки, без localhost и приватных адресов; форматы .jpg, .jpeg, .png, .webp. HEIC/HEIF принимаются только при загрузке через форму сайта, по URL в API - нет.use_negative_prompt - выключатель: без true поле negative_prompt не отправляется модели.chaos даёт четыре похожих варианта (удобно для точной задачи), высокий - четыре разных трактовки (удобно для поиска идей). Высокие stylize и weird могут отходить от буквального описания.21:9 или 16:9, для сторис - 9:16.