Создаёт изображения по текстовому описанию и меняет загруженные картинки по заданию, можно опереться на 1–9 референсов. Цена — 1 ₽ за изображение.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Muse Image рисует изображения по текстовому заданию и меняет готовые картинки по инструкции, опираясь на 1-9 референсов. Каждый запуск стоит 1 ₽, поэтому через API её удобно использовать для массовых и черновых задач:
Режим определяется составом запроса: без image_urls - генерация по тексту, со ссылками - работа по референсам. Каждый вызов создаёт асинхронную операцию: в ответ сразу приходят id и стартовый статус, а ссылку на готовую картинку вы забираете запросом проверки статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id, стартовый статус и стоимость.Сценарии:
prompt и при желании aspect_ratio;prompt и одна ссылка в image_urls;prompt и 2-9 ссылок в image_urls.Базовая форма запроса:
{
"tool": "muse-image",
"input": {
"...": "..."
}
}
tool - slug нейросети, для этой модели всегда "muse-image".input - параметры запуска. Поля передаются прямо внутри input, без дополнительной вложенности.image_urls добавляйте только когда есть референсы.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Описание картинки или инструкция, что изменить. От 3 до 5000 символов. Задание нужно и при работе по референсам. С несколькими изображениями прямо напишите, что взять с каждого: «чашка с первого изображения, стол со второго». |
image_urls | string[] (url) | Нет | Референсы, до 9 ссылок. Только внешние http/https URL. Расширения: .jpg, .jpeg, .png, .webp. Все файлы вместе - не больше 11 МБ. Без этого поля запускается генерация по тексту. |
aspect_ratio | enum | Нет | Соотношение сторон: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. auto - по тексту получится квадрат 1:1, с референсами модель повторит их композицию. Если не передать, используется auto. |
Размер картинки в пикселях модель выбирает сама, разрешение и формат файла не настраиваются: результат всегда одно изображение WebP.
Нужна только текстовая подсказка и, если важно, пропорции.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "muse-image",
"input": {
"prompt": "Красная керамическая чашка на белом столе, мягкий студийный свет, предметная съёмка, без надписей",
"aspect_ratio": "4:3"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'muse-image',
input: {
prompt:
'Красная керамическая чашка на белом столе, мягкий студийный свет, предметная съёмка, без надписей',
aspect_ratio: '4:3',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
"https://bratuha.ru/api/v1/operations",
headers={
"Authorization": "Bearer brth_ваш_ключ",
"Content-Type": "application/json",
},
json={
"tool": "muse-image",
"input": {
"prompt": "Красная керамическая чашка на белом столе, мягкий студийный свет, предметная съёмка, без надписей",
"aspect_ratio": "4:3",
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Передайте одну ссылку в image_urls и опишите, что изменить и что оставить как есть. Без aspect_ratio модель сохранит пропорции исходника.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "muse-image",
"input": {
"prompt": "Оставь чашку с фото как есть и поставь её на деревянный стол в кафе, тёплый дневной свет из окна",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg"
]
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'muse-image',
input: {
prompt:
'Оставь чашку с фото как есть и поставь её на деревянный стол в кафе, тёплый дневной свет из окна',
image_urls: ['https://cdn.example.com/source-image-1.jpg'],
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
"https://bratuha.ru/api/v1/operations",
headers={
"Authorization": "Bearer brth_ваш_ключ",
"Content-Type": "application/json",
},
json={
"tool": "muse-image",
"input": {
"prompt": "Оставь чашку с фото как есть и поставь её на деревянный стол в кафе, тёплый дневной свет из окна",
"image_urls": ["https://cdn.example.com/source-image-1.jpg"],
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Передайте от 2 до 9 ссылок. Главный исходник ставьте первым и в prompt объясните, что взять с каждой картинки.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "muse-image",
"input": {
"prompt": "Рюкзак с первого изображения лежит на скамейке в парке со второго изображения, осенний вечер, рекламный кадр",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.png"
],
"aspect_ratio": "9:16"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'muse-image',
input: {
prompt:
'Рюкзак с первого изображения лежит на скамейке в парке со второго изображения, осенний вечер, рекламный кадр',
image_urls: [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/source-image-2.png',
],
aspect_ratio: '9:16',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
"https://bratuha.ru/api/v1/operations",
headers={
"Authorization": "Bearer brth_ваш_ключ",
"Content-Type": "application/json",
},
json={
"tool": "muse-image",
"input": {
"prompt": "Рюкзак с первого изображения лежит на скамейке в парке со второго изображения, осенний вечер, рекламный кадр",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.png",
],
"aspect_ratio": "9:16",
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "3f6a2d18-9c4b-4e71-a5d0-8b2e7c1f4a96",
"status": "queued",
"tool": "muse-image",
"cost": 1,
"balance_after": 499,
"created_at": "2026-11-02T08:00:00.000Z"
}
{
"id": "3f6a2d18-9c4b-4e71-a5d0-8b2e7c1f4a96",
"status": "completed",
"tool": "muse-image",
"cost": 1,
"created_at": "2026-11-02T08:00:00.000Z",
"completed_at": "2026-11-02T08:00:30.000Z",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/muse-image/image-1.webp"
]
},
"error_message": null
}
{
"id": "3f6a2d18-9c4b-4e71-a5d0-8b2e7c1f4a96",
"status": "failed",
"tool": "muse-image",
"cost": 1,
"created_at": "2026-11-02T08:00:00.000Z",
"completed_at": "2026-11-02T08:00:15.000Z",
"result": null,
"error_message": "Не удалось выполнить операцию"
}
Статус проверяется по id, который пришёл в ответ на создание операции. Сохраните его - без id результат конкретного запуска не получить. Опрашивать удобно раз в 3-5 секунд, пока статус не станет completed или failed.
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/3f6a2d18-9c4b-4e71-a5d0-8b2e7c1f4a96
const operationId = '3f6a2d18-9c4b-4e71-a5d0-8b2e7c1f4a96'
const response = await fetch(
`https://bratuha.ru/api/v1/operations/${operationId}`,
{
headers: {
Authorization: 'Bearer brth_ваш_ключ',
},
},
)
const operation = await response.json()
console.log(operation)
После успешного выполнения в result приходит объект изображения:
{
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/muse-image/image-1.webp"
]
}
urls - массив ссылок. Один запуск создаёт одно изображение в формате WebP, поэтому ссылка в массиве одна.
Примеры:
aspect_ratio = 16:9 - 1 ₽;image_urls - 1 ₽;image_urls - 1 ₽.Idempotency-Key: повтор одного запроса в течение 24 часов вернёт исходную операцию без повторного списания. Повтор без этого заголовка создаёт новую операцию.max_price в теле запроса, чтобы сервер отклонил запуск дороже согласованной суммы до списания.POST нет, используйте GET /api/v1/operations/{id}.image_urls нужны внешние http/https URL, доступные из интернета без входа в аккаунт. Локальные пути, localhost, blob: и data: не подходят.image_urls, все вместе - до 11 МБ. Подходят .jpg, .jpeg, .png и .webp.seed и выбора разрешения нет: чтобы изменить часть картинки, словами опишите, что именно поменять и что оставить.