Создаёт изображения по текстовому описанию и умеет менять загруженные картинки по вашим инструкциям. Цена - 6 рублей за изображение.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
4o Image - модель, которая особенно хорошо понимает сложные задания и аккуратно пишет текст на русском: открытки с каллиграфией, инфографика, рецепты, постеры с названиями и слоганами, стикеры с подписями. Она также редактирует загруженные изображения по инструкции и объединяет несколько картинок в одну сцену.
Через API доступны оба сценария:
prompt;filesUrl и описываете, что с ними сделать.Каждый вызов создаёт асинхронную операцию: вы получаете id, а результат забираете отдельным запросом статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Сценарии, которые поддерживает модель:
{
"tool": "4o-image",
"input": {
"...": "..."
}
}
tool - slug нейросети, здесь всегда "4o-image".input - параметры конкретного запуска.input, без дополнительного вложенного объекта input.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Что нарисовать или как изменить исходные изображения, от 3 до 5000 символов. Текст надписей пишите в кавычках «...» - модель воспроизводит его точно. |
filesUrl | string[] (url) | Нет | От 1 до 5 внешних URL изображений для редактирования или объединения. Без этого поля модель работает в режиме генерации. Только http/https, форматы .jpg, .jpeg, .png, .webp. |
size | enum | Нет | Формат кадра: 1:1 (по умолчанию), 3:2 (горизонтальный) или 2:3 (вертикальный). |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "4o-image",
"input": {
"prompt": "Открытка с 8 Марта: акварельные тюльпаны и мимоза, надпись каллиграфией «С 8 Марта!» и ниже «Любви, тепла и вдохновения», светлый фон, нежные цвета",
"size": "2: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: '4o-image',
input: {
prompt:
'Открытка с 8 Марта: акварельные тюльпаны и мимоза, надпись каллиграфией «С 8 Марта!» и ниже «Любви, тепла и вдохновения», светлый фон, нежные цвета',
size: '2:3',
},
}),
})
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': '4o-image',
'input': {
'prompt': 'Открытка с 8 Марта: акварельные тюльпаны и мимоза, надпись каллиграфией «С 8 Марта!» и ниже «Любви, тепла и вдохновения», светлый фон, нежные цвета',
'size': '2:3',
},
},
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": "4o-image",
"input": {
"prompt": "Сделай стикер-версию этого персонажа: контурный стиль, белая обводка, надпись «Ну и ладно!» снизу, однотонный фон",
"filesUrl": [
"https://cdn.example.com/source-image-1.jpg"
],
"size": "1:1"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: '4o-image',
input: {
prompt:
'Сделай стикер-версию этого персонажа: контурный стиль, белая обводка, надпись «Ну и ладно!» снизу, однотонный фон',
filesUrl: ['https://cdn.example.com/source-image-1.jpg'],
size: '1:1',
},
}),
})
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': '4o-image',
'input': {
'prompt': 'Сделай стикер-версию этого персонажа: контурный стиль, белая обводка, надпись «Ну и ладно!» снизу, однотонный фон',
'filesUrl': ['https://cdn.example.com/source-image-1.jpg'],
'size': '1:1',
},
},
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": "4o-image",
"input": {
"prompt": "Объедини два изображения: персонаж с первого стоит рядом с гигантским кроссовком со второго и смотрит на него с восхищением, единый 3D-стиль, студийный свет",
"filesUrl": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.jpg"
],
"size": "3:2"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: '4o-image',
input: {
prompt:
'Объедини два изображения: персонаж с первого стоит рядом с гигантским кроссовком со второго и смотрит на него с восхищением, единый 3D-стиль, студийный свет',
filesUrl: [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/source-image-2.jpg',
],
size: '3:2',
},
}),
})
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': '4o-image',
'input': {
'prompt': 'Объедини два изображения: персонаж с первого стоит рядом с гигантским кроссовком со второго и смотрит на него с восхищением, единый 3D-стиль, студийный свет',
'filesUrl': [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/source-image-2.jpg',
],
'size': '3:2',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "4o-image",
"cost": 6,
"balance_after": 495,
"created_at": "2026-09-17T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "4o-image",
"cost": 6,
"created_at": "2026-09-17T12:00:00Z",
"completed_at": "2026-09-17T12:01:15Z",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/4o-image/image-1.png"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "4o-image",
"cost": 6,
"created_at": "2026-09-17T12:00:00Z",
"completed_at": "2026-09-17T12:00:20Z",
"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/4o-image/image-1.png"
]
}
type всегда равен "image".urls содержит одну ссылку на PNG.filesUrl.cost ответа. Если операция завершилась с ошибкой, деньги возвращаются на баланс автоматически.POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и списывает деньги.queued проверяйте статус по id.filesUrl подходят только внешние http/https ссылки, без localhost и приватных адресов; форматы .jpg, .jpeg, .png, .webp. HEIC/HEIF и JFIF принимаются только при загрузке через форму сайта, по URL в API - нет.filesUrl можно передать не больше 5 ссылок.1:1, 3:2 и 2:3; для сторис и баннеров выбирайте ближайший и при необходимости обрезайте результат.