Общая документация Public API · API-ключ можно создать в настройках аккаунта
GPT Image 2 подходит для создания изображений по подробному текстовому заданию и для редактирования готовых картинок: можно поменять фон, стиль или детали сцены, добавить текст или собрать новое изображение по нескольким референсам. Через API доступны два сценария:
image_urls с одной или несколькими ссылками.Каждый запуск создаёт асинхронную операцию. Сразу после запроса API возвращает id, а готовое изображение нужно получить отдельной проверкой статуса.
POST /api/v1/operationshttps://bratuha.ru/api/v1/operationsAuthorization: Bearer brth_...Сценарий выбирается автоматически:
image_urls не передан, изображение создаётся только по тексту;image_urls передан, модель редактирует эти изображения или использует их как референсы.{
"tool": "gpt-image-2",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "gpt-image-2".input - параметры запуска. Все поля передаются напрямую внутри этого объекта, без дополнительного вложенного объекта input.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Текстовое задание. Опишите, что должно получиться: объект, стиль, фон, свет, текст на изображении или нужную правку. До 20 000 символов. |
image_urls | string[] (url) | Нет | Массив ссылок на изображения для редактирования или референсов. До 16 изображений с расширениями jpg, jpeg, png, webp. Если поле не передано или массив пустой, изображение создаётся только по тексту. |
quality | enum | Да | Качество: low, medium, high. Чем выше качество, тем детальнее результат, дольше генерация и выше цена. |
size | enum | Да | Соотношение сторон: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, 2:1, 1:2, 21:9, 9:21. Значение auto подбирает пропорции по заданию и референсам. |
resolution | enum | Да | Разрешение результата: 1k, 2k, 4k. При quality = "low" значение 4k доступно только для size = 16:9, 9:16, 2:1, 1:2, 21:9, 9:21. |
mode | enum | Нет | Режим запуска: normal - стабильный режим, cheap - менее стабильный, зато medium и high стоят дешевле. Если поле не передано, используется normal. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "gpt-image-2",
"input": {
"prompt": "Рыжий кот сидит на подоконнике и смотрит на закат, акварельная иллюстрация",
"quality": "low",
"size": "16:9",
"resolution": "1k"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'gpt-image-2',
input: {
prompt:
'Рыжий кот сидит на подоконнике и смотрит на закат, акварельная иллюстрация',
quality: 'low',
size: '16:9',
resolution: '1k',
},
}),
})
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': 'gpt-image-2',
'input': {
'prompt': 'Рыжий кот сидит на подоконнике и смотрит на закат, акварельная иллюстрация',
'quality': 'low',
'size': '16:9',
'resolution': '1k',
},
},
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": "gpt-image-2",
"input": {
"prompt": "Помести товар с первого изображения на фон со второго, сохрани форму и цвет товара, мягкий дневной свет",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/source-image-2.png"
],
"quality": "medium",
"size": "auto",
"resolution": "2k"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'gpt-image-2',
input: {
prompt:
'Помести товар с первого изображения на фон со второго, сохрани форму и цвет товара, мягкий дневной свет',
image_urls: [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/source-image-2.png',
],
quality: 'medium',
size: 'auto',
resolution: '2k',
},
}),
})
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': 'gpt-image-2',
'input': {
'prompt': 'Помести товар с первого изображения на фон со второго, сохрани форму и цвет товара, мягкий дневной свет',
'image_urls': [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/source-image-2.png',
],
'quality': 'medium',
'size': 'auto',
'resolution': '2k',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "9f4d2f65-4b2c-4df8-bf2a-9c6e8b86b352",
"status": "queued",
"tool": "gpt-image-2",
"cost": 2,
"balance_after": 498,
"created_at": "2026-09-15T12:00:00Z"
}
{
"id": "9f4d2f65-4b2c-4df8-bf2a-9c6e8b86b352",
"status": "completed",
"tool": "gpt-image-2",
"cost": 2,
"created_at": "2026-09-15T12:00:00Z",
"completed_at": "2026-09-15T12:00:35Z",
"result": {
"type": "image",
"urls": [
"https://af778c3b-be3c-4447-a63c-25ebabf0a68f.selstorage.ru/user_files/result-image-1.png"
]
},
"error_message": null
}
{
"id": "9f4d2f65-4b2c-4df8-bf2a-9c6e8b86b352",
"status": "failed",
"tool": "gpt-image-2",
"cost": 2,
"created_at": "2026-09-15T12:00:00Z",
"completed_at": "2026-09-15T12:00:35Z",
"result": null,
"error_message": "Не удалось выполнить операцию"
}
Если запрос не прошёл проверку, операция не создаётся и деньги не списываются:
{
"error": {
"code": "invalid_api_key",
"message": "Некорректный API-ключ",
"request_id": "0b6f1d7e-3a52-4c1e-9d0a-5f2f7c8e41b3"
}
}
Основные коды: unauthorized - нет заголовка Authorization, invalid_api_key - ключ неверный или отключён, validation_error - ошибка в параметрах, insufficient_funds - не хватает средств на балансе.
После создания операции сохраните id из ответа и проверяйте статус этим запросом:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/9f4d2f65-4b2c-4df8-bf2a-9c6e8b86b352
const operationId = '9f4d2f65-4b2c-4df8-bf2a-9c6e8b86b352'
const response = await fetch(
`https://bratuha.ru/api/v1/operations/${operationId}`,
{
headers: {
Authorization: 'Bearer brth_ваш_ключ',
},
},
)
const operation = await response.json()
console.log(operation.status, operation.result)
Статус проходит путь queued -> processing -> completed или failed. Проверяйте одну операцию не чаще раза в секунду, иначе API вернёт 429 с кодом rate_limit_exceeded.
Для quality = medium и high в ответе проверки статуса поле tool может содержать gpt-image-2-ws. Это та же нейросеть, ориентируйтесь на id операции.
После успешного завершения в поле result возвращается объект изображения:
{
"type": "image",
"urls": [
"https://af778c3b-be3c-4447-a63c-25ebabf0a68f.selstorage.ru/user_files/result-image-1.png"
]
}
type - тип результата, для этой нейросети это "image".urls - массив ссылок на готовые изображения. Даже если изображение одно, оно приходит в массиве.Цена зависит от режима mode, качества quality и разрешения resolution.
Режим normal:
| Качество | 1k | 2k | 4k |
|---|---|---|---|
low | 2 ₽ | 3 ₽ | 4 ₽ |
medium | 10 ₽ | 18 ₽ | 26 ₽ |
high | 30 ₽ | 60 ₽ | 90 ₽ |
Режим cheap:
| Качество | 1k | 2k | 4k |
|---|---|---|---|
low | 2 ₽ | 3 ₽ | 4 ₽ |
medium | 4 ₽ | 4 ₽ | 4 ₽ |
high | 4 ₽ | 4 ₽ | 4 ₽ |
Цена не зависит от:
size;Итоговая стоимость приходит в поле cost сразу после создания операции. Если на балансе недостаточно средств, операция не будет создана, а API вернёт ошибку insufficient_funds.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и повторно списывает стоимость при успешном создании.id.http/https URL, доступные серверу без авторизации.localhost, приватные IP-адреса и внутренние адреса.image_urls можно передать до 16 изображений. В примере выше показаны две ссылки, но в реальном запросе можно отправить и одну.heic и heif по ссылке не принимаются: перед отправкой сконвертируйте их в jpg или png.