Общая документация Public API · API-ключ можно создать в настройках аккаунта
Ideogram V4.5 рисует изображения по текстовому описанию и правит готовые картинки по заданию. Сильная сторона модели - аккуратный читаемый текст на изображении, поэтому её берут для постеров, баннеров, обложек, логотипов и карточек товаров.
Режим выбирается сам по запросу:
image_urls не передан или пустой. Модель рисует новое изображение по prompt.image_urls есть хотя бы одна ссылка. Первое изображение модель меняет по prompt, остальные (до 4) использует как образцы стиля, предмета или персонажа.Каждый запрос создаёт асинхронную операцию: сразу приходит id и статус queued, а готовое изображение нужно забрать отдельным запросом по этому id.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус операции.Режимы:
image_urls;image_urls;image_urls.{
"tool": "ideogram-v4-5",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "ideogram-v4-5".input - параметры запуска, все поля передаются прямо внутри этого объекта.aspect_ratio, resolution и prompt_expansion_mode - при создании, edit_precision и edit_aspect_ratio - при правке. Поля чужого режима можно не передавать, они ни на что не влияют.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Что нарисовать или что изменить на изображении. От 3 до 4000 символов. Нужную надпись пишите в кавычках. |
image_urls | string[] | Нет | Внешние http/https ссылки на изображения .jpg, .jpeg, .png, .webp, до 5 штук. Без ссылок - создание, с ссылками - правка: первая ссылка - изображение для правки, остальные - образцы. |
quality | enum | Нет | Качество и цена: low (5 ₽), medium (10 ₽), high (35 ₽). Если не передать - medium. |
aspect_ratio | enum | Нет | Только при создании. Соотношение сторон: 1:1, 4:3, 3:4, 3:2, 2:3, 16:9, 9:16. Если не передать - 1:1. |
resolution | enum | Нет | Только при создании. Размер изображения: 1k или 2k. На цену не влияет. Если не передать - 2k. |
prompt_expansion_mode | enum | Нет | Только при создании. on - модель дополнит описание деталями перед генерацией, off - будет следовать только вашему тексту. Если не передать - on. |
edit_precision | enum | Нет | Только при правке. regular - обычная правка по заданию, high - всё, что вы не просили менять, остаётся как на исходнике, пропорции берутся из исходного изображения. Если не передать - regular. |
edit_aspect_ratio | enum | Нет | Только при правке с edit_precision: "regular". auto - пропорции исходного изображения, или 1:1, , , , . Если не передать - . |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "ideogram-v4-5",
"input": {
"prompt": "Постер кофейни: чашка капучино на деревянном столе, утренний свет из окна, сверху крупная надпись \"ДОБРОЕ УТРО\"",
"quality": "medium",
"aspect_ratio": "3:4",
"resolution": "2k",
"prompt_expansion_mode": "on"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'ideogram-v4-5',
input: {
prompt: 'Постер кофейни: чашка капучино на деревянном столе, утренний свет из окна, сверху крупная надпись "ДОБРОЕ УТРО"',
quality: 'medium',
aspect_ratio: '3:4',
resolution: '2k',
prompt_expansion_mode: 'on',
},
}),
})
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': 'ideogram-v4-5',
'input': {
'prompt': 'Постер кофейни: чашка капучино на деревянном столе, утренний свет из окна, сверху крупная надпись "ДОБРОЕ УТРО"',
'quality': 'medium',
'aspect_ratio': '3:4',
'resolution': '2k',
'prompt_expansion_mode': 'on',
},
},
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": "ideogram-v4-5",
"input": {
"prompt": "Замени летний пейзаж за окном на зимний: снег на деревьях и крышах, мягкий холодный свет",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg"
],
"quality": "medium",
"edit_precision": "high"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'ideogram-v4-5',
input: {
prompt: 'Замени летний пейзаж за окном на зимний: снег на деревьях и крышах, мягкий холодный свет',
image_urls: ['https://cdn.example.com/source-image-1.jpg'],
quality: 'medium',
edit_precision: 'high',
},
}),
})
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': 'ideogram-v4-5',
'input': {
'prompt': 'Замени летний пейзаж за окном на зимний: снег на деревьях и крышах, мягкий холодный свет',
'image_urls': ['https://cdn.example.com/source-image-1.jpg'],
'quality': 'medium',
'edit_precision': 'high',
},
},
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": "ideogram-v4-5",
"input": {
"prompt": "Поставь на стол в кадре кружку со второго изображения, сохрани свет и ракурс исходной сцены",
"image_urls": [
"https://cdn.example.com/source-image-1.jpg",
"https://cdn.example.com/reference-image-2.png"
],
"quality": "high",
"edit_precision": "regular",
"edit_aspect_ratio": "16:9"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'ideogram-v4-5',
input: {
prompt: 'Поставь на стол в кадре кружку со второго изображения, сохрани свет и ракурс исходной сцены',
image_urls: [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/reference-image-2.png',
],
quality: 'high',
edit_precision: 'regular',
edit_aspect_ratio: '16:9',
},
}),
})
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': 'ideogram-v4-5',
'input': {
'prompt': 'Поставь на стол в кадре кружку со второго изображения, сохрани свет и ракурс исходной сцены',
'image_urls': [
'https://cdn.example.com/source-image-1.jpg',
'https://cdn.example.com/reference-image-2.png',
],
'quality': 'high',
'edit_precision': 'regular',
'edit_aspect_ratio': '16:9',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "ideogram-v4-5",
"cost": 10,
"balance_after": 490,
"created_at": "2026-10-02T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "ideogram-v4-5",
"cost": 10,
"created_at": "2026-10-02T12:00:00Z",
"completed_at": "2026-10-02T12:00:25Z",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/ideogram-v4-5/image-1.png"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "ideogram-v4-5",
"cost": 10,
"created_at": "2026-10-02T12:00:00Z",
"completed_at": "2026-10-02T12:00:12Z",
"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 status = await fetch(
'https://bratuha.ru/api/v1/operations/op_uuid-123',
{
headers: { Authorization: 'Bearer brth_ваш_ключ' },
},
)
const result = await status.json()
В обоих режимах приходит одно изображение:
{
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/ideogram-v4-5/image-1.png"
]
}
type - всегда "image".urls - массив с одной ссылкой на готовое изображение.Если операция завершилась с ошибкой, result будет null, а причина придёт в error_message.
Цена за одно изображение зависит только от quality и одинакова для создания и правки:
quality | Цена |
|---|---|
low | 5 ₽ |
medium | 10 ₽ |
high | 35 ₽ |
quality не передан, считается medium - 10 ₽.resolution, соотношение сторон, точность правки и число образцов на цену не влияют.low удобно для перебора идей и черновиков, high - для финального варианта со сложной сценой или мелким текстом.POST /api/v1/operations не идемпотентен: повторный запрос создаёт новую операцию и списывает деньги ещё раз.queued, затем проверяйте статус по id раз в 2-3 секунды.http/https ссылками на .jpg, .jpeg, .png или .webp, не больше 5 ссылок в image_urls.edit_precision: "high" пропорции всегда берутся из исходного изображения, edit_aspect_ratio в этом случае не учитывается.prompt в кавычках. Если модель «додумывает» лишнее при создании, передайте prompt_expansion_mode: "off".validation_error.4:33:416:99:16auto