Генерирует изображения по текстовому описанию - от реалистичных фото до постеров и картинок с читаемыми надписями. Цена - 12 ₽ за изображение (может меняться от выбора скорости: Быстро - дешевле, Качество - дороже).
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Ideogram V3 рисует картинки по текстовому заданию и особенно хорошо справляется с надписями в кадре: афиши, обложки, упаковка, вывески, открытки, баннеры с заголовком. Подходит и для обычных иллюстраций и реалистичных фото.
Модель умеет подстраиваться под стиль: если передать до 4 картинок-референсов, она возьмёт с них цвета, настроение и манеру, а сюжет нарисует по заданию. За один запуск можно получить до 4 вариантов, а скорость генерации выбирается из трёх режимов - от быстрого и дешёвого до самого качественного.
Каждый вызов создаёт асинхронную операцию. Сохраните id из ответа и проверяйте по нему статус отдельным запросом.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус queued.Сценарии:
image_urls с 1-4 картинками, чей стиль нужно повторить.num_images до 4 и список того, чего в кадре быть не должно.{
"tool": "ideogram-v3",
"input": {
"prompt": "...",
"rendering_speed": "BALANCED",
"aspect_ratio": "1:1",
"num_images": 1,
"expand_prompt": true
}
}
tool - slug нейросети, всегда "ideogram-v3".input - параметры запуска. Все поля передаются прямо внутри этого объекта, без дополнительной вложенности.image_urls, use_negative_prompt и negative_prompt добавляются по сценарию.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Описание картинки, от 3 до 4000 символов. Можно по-русски. Текст для надписи берите в кавычки: крупная надпись «ДАЧА ФЕСТ». |
rendering_speed | enum | Да | Скорость и качество генерации: TURBO - быстро и дешевле всего, BALANCED - баланс скорости и качества, QUALITY - максимум деталей, дороже. Влияет на цену. Если не передать, будет BALANCED. |
aspect_ratio | enum | Да | Пропорции результата: 1:1 - квадрат, 3:4 - вертикальный портрет, 9:16 - сторис и вертикальные экраны, 4:3 - горизонтальное фото, 16:9 - обложки и презентации. Если не передать, будет 1:1. |
num_images | number | Да | Сколько вариантов создать за один запуск. Целое число от 1 до 4. Цена растёт пропорционально. Если не передать, будет 1. |
expand_prompt | boolean | Да | Улучшать промпт: модель сама дополняет ваше задание деталями. true - подходит для коротких заданий, false - модель рисует ближе к тексту, как вы его написали. Если не передать, будет true. |
image_urls | string[] (url) | Нет | Референсы стиля, от 1 до 4 ссылок. Модель берёт с них цвета, свет и манеру, но не переносит сами предметы. Форматы: .jpg, .jpeg, .png, .webp. Нужны публичные http/https ссылки без авторизации, в сумме до 10 МБ. |
use_negative_prompt | boolean | Нет | Включает негативный промпт. Только при true модель учитывает negative_prompt. Если не передать, будет false. |
negative_prompt | string | Нет | Чего не должно быть на картинке, до 500 символов: «размытый текст, лишние буквы, водяные знаки». Работает только вместе с , без него поле игнорируется. |
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "ideogram-v3",
"input": {
"prompt": "Фото на кухне: на светлом деревянном столе у окна картонная коробка чая, рядом чашка. На коробке крупно написано «Иван-чай». Спокойные зелёные и кремовые цвета, мягкий дневной свет",
"rendering_speed": "BALANCED",
"aspect_ratio": "1:1",
"num_images": 1,
"expand_prompt": true
}
}'
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-v3',
input: {
prompt:
'Фото на кухне: на светлом деревянном столе у окна картонная коробка чая, рядом чашка. На коробке крупно написано «Иван-чай». Спокойные зелёные и кремовые цвета, мягкий дневной свет',
rendering_speed: 'BALANCED',
aspect_ratio: '1:1',
num_images: 1,
expand_prompt: true,
},
}),
})
const data = await response.json()
console.log(data.id, data.status)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'ideogram-v3',
'input': {
'prompt': 'Фото на кухне: на светлом деревянном столе у окна картонная коробка чая, рядом чашка. На коробке крупно написано «Иван-чай». Спокойные зелёные и кремовые цвета, мягкий дневной свет',
'rendering_speed': 'BALANCED',
'aspect_ratio': '1:1',
'num_images': 1,
'expand_prompt': True,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Афиша в стиле двух летних фотографий. Режим TURBO, один вариант - 6 ₽. expand_prompt: false, чтобы модель не дописывала к заданию своё.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "ideogram-v3",
"input": {
"prompt": "Летний постер дачного фестиваля: гриль, дым, деревянный забор, крупная надпись «ДАЧА ФЕСТ» и ниже «12 июля»",
"image_urls": [
"https://cdn.example.com/style-summer-1.jpg",
"https://cdn.example.com/style-summer-2.webp"
],
"rendering_speed": "TURBO",
"aspect_ratio": "3:4",
"num_images": 1,
"expand_prompt": false
}
}'
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-v3',
input: {
prompt:
'Летний постер дачного фестиваля: гриль, дым, деревянный забор, крупная надпись «ДАЧА ФЕСТ» и ниже «12 июля»',
image_urls: [
'https://cdn.example.com/style-summer-1.jpg',
'https://cdn.example.com/style-summer-2.webp',
],
rendering_speed: 'TURBO',
aspect_ratio: '3:4',
num_images: 1,
expand_prompt: false,
},
}),
})
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-v3',
'input': {
'prompt': 'Летний постер дачного фестиваля: гриль, дым, деревянный забор, крупная надпись «ДАЧА ФЕСТ» и ниже «12 июля»',
'image_urls': [
'https://cdn.example.com/style-summer-1.jpg',
'https://cdn.example.com/style-summer-2.webp',
],
'rendering_speed': 'TURBO',
'aspect_ratio': '3:4',
'num_images': 1,
'expand_prompt': False,
},
},
timeout=30,
)
print(response.json())
Четыре варианта обложки в режиме QUALITY - 72 ₽. Негативный промпт убирает типичные огрехи с текстом.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "ideogram-v3",
"input": {
"prompt": "Обложка подкаста о путешествиях: рюкзак и старая карта на деревянном столе, сверху крупная надпись «В дороге», тёплые цвета",
"rendering_speed": "QUALITY",
"aspect_ratio": "16:9",
"num_images": 4,
"expand_prompt": true,
"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: 'ideogram-v3',
input: {
prompt:
'Обложка подкаста о путешествиях: рюкзак и старая карта на деревянном столе, сверху крупная надпись «В дороге», тёплые цвета',
rendering_speed: 'QUALITY',
aspect_ratio: '16:9',
num_images: 4,
expand_prompt: true,
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': 'ideogram-v3',
'input': {
'prompt': 'Обложка подкаста о путешествиях: рюкзак и старая карта на деревянном столе, сверху крупная надпись «В дороге», тёплые цвета',
'rendering_speed': 'QUALITY',
'aspect_ratio': '16:9',
'num_images': 4,
'expand_prompt': True,
'use_negative_prompt': True,
'negative_prompt': 'размытый текст, лишние буквы, водяные знаки',
},
},
timeout=30,
)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "ideogram-v3",
"cost": 6,
"balance_after": 494,
"created_at": "2026-09-30T21:32:08.559809+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "ideogram-v3",
"cost": 6,
"created_at": "2026-09-30T21:32:08.559809+00:00",
"completed_at": "2026-09-30T21:32:33.685506+00:00",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/ideogram-v3/image-1.png"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "ideogram-v3",
"cost": 6,
"created_at": "2026-09-30T21:32:08.559809+00:00",
"completed_at": "2026-09-30T21:32:15.204391+00:00",
"result": null,
"error_message": "Ваш запрос не прошел модерацию."
}
Сохраните id из ответа на создание и запрашивайте статус операции по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
async function waitForResult(id: string) {
while (true) {
const response = await fetch(`https://bratuha.ru/api/v1/operations/${id}`, {
headers: { Authorization: 'Bearer brth_ваш_ключ' },
})
const operation = await response.json()
if (operation.status === 'completed' || operation.status === 'failed') {
return operation
}
await new Promise((resolve) => setTimeout(resolve, 5000))
}
}
Статус меняется с queued на processing, а затем на completed или failed. Обычно картинки готовы за 25-40 секунд. Опрашивать одну операцию можно не чаще раза в секунду, разумный интервал - 3-5 секунд.
{
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/ideogram-v3/image-1.png",
"https://storage.bratuha.ru/results/ideogram-v3/image-2.png"
]
}
type - всегда "image".urls - массив ссылок на PNG. Ссылок столько, сколько вы указали в num_images: при num_images: 1 - одна, при num_images: 4 - четыре.Размер картинки задаётся пропорциями aspect_ratio: например, при 3:4 получается 864×1152 пикселей.
Цена считается за каждую картинку и зависит от режима rendering_speed: TURBO - 6 ₽, BALANCED - 12 ₽, QUALITY - 18 ₽ за изображение. Итог - цена режима, умноженная на num_images.
num_images | TURBO | BALANCED | QUALITY |
|---|---|---|---|
| 1 | 6 ₽ | 12 ₽ | 18 ₽ |
| 2 | 12 ₽ | 24 ₽ | 36 ₽ |
| 3 | 18 ₽ | 36 ₽ | 54 ₽ |
| 4 | 24 ₽ | 48 ₽ | 72 ₽ |
Пропорции, референсы стиля, улучшение промпта и негативный промпт на цену не влияют. Стоимость списывается при создании операции и приходит в поле cost ответа.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую оплаченную операцию. Если ответ потерялся, не повторяйте запрос вслепую.queued, результат забирается по id.http/https, которые открываются без авторизации. Форматы - JPG, JPEG, PNG или WebP, не больше 4 ссылок и до 10 МБ в сумме.num_images - только целое число от 1 до 4. Дробное значение или число больше 4 вернёт 400 validation_error.prompt.negative_prompt без use_negative_prompt: true молча игнорируется - ошибки не будет, но и эффекта тоже.expand_prompt: так результат ближе к вашему тексту. Для коротких заданий из пары слов улучшение, наоборот, полезно.use_negative_prompt: true