Для AI-агентов: markdown этой страницы — /docs-content/ai/images.md индекс документации — /llms.txt

Сгенерировать изображение

POST /v1/images/generations

Создаёт одну картинку по текстовому описанию моделью BitrixGPT 5.6 Image и возвращает её в формате base64. Платформа изображения не хранит, поэтому сохраните картинку на своей стороне.

Картинка учитывается в AI-квоте портала: в рамках квоты тарифа деньги с баланса не списываются, сверх квоты каждая картинка оплачивается с баланса портала по цене из поля pricing.perCall модели в GET /v1/models. С ключом Cowork/Code — ключом со скоупом vibe:cowork — картинка расходует квоту сиденья подписки Cowork/Code, а не AI-квоту портала. Неудачный вызов не оплачивается. Формат запроса и ответа совместим с POST /v1/images/generations из OpenAI API.

Ответ приходит в сыром OpenAI-формате.

Обёртки {success, data}, которая используется в остальных эндпоинтах Вайбкод — /v1/deals, /v1/tasks и других, — здесь нет.

Так сделано для совместимости с OpenAI SDK. Если у вас единый клиент с проверкой if (!response.success), добавьте для AI Router исключение.

Поля запроса (body)

Поле Тип Обяз. Описание
Полеmodel Типstring Обяз.да ОписаниеID модели генерации изображений — bitrix/bitrixgpt-5.6-image. В ответе GET /v1/models такую модель отличает capabilities.image_generation
Полеprompt Типstring Обяз.да ОписаниеОписание картинки, от 1 до 4000 символов
Полеsize Типstring Обяз.нет ОписаниеШирина и высота в пикселях через латинскую x. Стороны задаются независимо: 1024x1024 — квадрат, 1024x576 — широкая картинка, 576x1024 — вертикальная. Каждая сторона — от 64 до 1024 пикселей. Без этого поля сервис генерации отдаёт картинку 1024×1024
Полеoutput_format Типstring Обяз.нет ОписаниеФормат картинки: png, jpeg или webp
Полеnegative_prompt Типstring Обяз.нет ОписаниеЧто не должно появиться на картинке, до 4000 символов
Полеseed Типinteger Обяз.нет ОписаниеЗерно генерации — целое число от 0. Одинаковые prompt, size и seed дают в точности ту же картинку, поэтому удачный кадр можно сгенерировать заново
Полеnum_inference_steps Типinteger Обяз.нет ОписаниеЧисло шагов генерации, от 1 до 8. По умолчанию 4
Полеresponse_format Типstring Обяз.нет ОписаниеПринимается только b64_json
Полеn Типinteger Обяз.нет ОписаниеЧисло картинок. Принимается только 1 — цена считается за вызов
Полеuser Типstring Обяз.нет ОписаниеИдентификатор конечного пользователя вашего приложения, до 200 символов. Передаётся модели как есть

Поле вне этого списка отклоняется с 400 invalid_request.

Примеры

curl — личный ключ

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/images/generations \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bitrix/bitrixgpt-5.6-image",
    "prompt": "Рыжая лиса сидит на камне у озера, акварель",
    "size": "512x512",
    "output_format": "jpeg"
  }'

curl — OAuth-приложение

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/images/generations \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bitrix/bitrixgpt-5.6-image",
    "prompt": "Рыжая лиса сидит на камне у озера, акварель",
    "size": "512x512",
    "output_format": "jpeg"
  }'

JavaScript — личный ключ

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/images/generations', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'bitrix/bitrixgpt-5.6-image',
    prompt: 'Рыжая лиса сидит на камне у озера, акварель',
    size: '512x512',
    output_format: 'jpeg',
  }),
})

const result = await res.json()
// Адрес вида data: подходит для атрибута src тега img
const dataUrl = `data:image/jpeg;base64,${result.data[0].b64_json}`
console.log('Картинка готова:', dataUrl.slice(0, 60))

JavaScript — OAuth-приложение

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/images/generations', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'bitrix/bitrixgpt-5.6-image',
    prompt: 'Рыжая лиса сидит на камне у озера, акварель',
    size: '512x512',
    output_format: 'jpeg',
  }),
})

const result = await res.json()
const dataUrl = `data:image/jpeg;base64,${result.data[0].b64_json}`
console.log('Картинка готова:', dataUrl.slice(0, 60))

Поля ответа

Поле Тип Описание
Полеcreated Типnumber ОписаниеВремя создания, Unix-время в секундах
Полеdata Типarray ОписаниеСгенерированные картинки. Один вызов — одна картинка
Полеdata[].b64_json Типstring ОписаниеКартинка в base64
Полеoutput_format Типstring ОписаниеФормат картинки. Приходит, когда его сообщает сервис генерации
Полеsize Типstring ОписаниеШирина и высота картинки в пикселях, например 512x512. Поле приходит, когда размер сообщает сервис генерации

Пример ответа

Строка b64_json сокращена: в настоящем ответе это картинка целиком, для JPEG 512×512 — около 140 КБ.

JSON
{
  "created": 1789740000,
  "data": [
    { "b64_json": "/9j/4AAQSkZJRgABAQAAAQABAAD..." }
  ],
  "output_format": "jpeg",
  "size": "512x512"
}

Пример ответа при ошибке

400 invalid_request — сторона картинки больше 1024 пикселей:

JSON
{
  "error": {
    "message": "size: each side must be between 64 and 1024 pixels",
    "type": "invalid_request_error",
    "code": "invalid_request"
  }
}

Ошибки

HTTP Код Описание
HTTP400 Кодinvalid_request ОписаниеТело не прошло проверку: неизвестное поле, пустой prompt, сторона картинки вне диапазона 64–1024, n не равно 1, response_format не b64_json. Проверка идёт до квоты и генерации, списания нет
HTTP400 Кодai_provider_rejected ОписаниеСервис генерации отклонил запрос своим ответом 400 или 422. Исходный статус приходит в поле providerStatusCode. Повторять запрос без изменений бессмысленно
HTTP402 Кодinsufficient_balance ОписаниеКроме ключа Cowork/Code: предоплатный счёт портала ушёл за овердрафт. Проверяется до генерации
HTTP402 Кодai_quota_exhausted ОписаниеКроме ключа Cowork/Code: месячная AI-квота портала исчерпана, а оплатить картинку сверх квоты нельзя — см. «Известные особенности»
HTTP402 Кодaccount_frozen ОписаниеКроме ключа Cowork/Code: счёт портала заморожен за долг, а картинка выходит за AI-квоту — расход сверх квоты платит баланс. Картинка внутри квоты под заморозкой продолжает работать
HTTP402 КодACCOUNT_FROZEN ОписаниеСчёт портала заморожен за долг. На части порталов заморозка отклоняет любой вызов генерации, в том числе внутри квоты. Так отвечает любой ключ, включая ключ Cowork/Code. Ответ приходит в конверте {success, error}, код в верхнем регистре — состав отказа
HTTP402 Кодcompany_budget_exhausted ОписаниеКроме ключа Cowork/Code: исчерпан бюджет расхода компании, который задаёт администратор портала. Поле scope называет пробитый бюджет: USER — личный бюджет вызывающего, PORTAL — бюджет всего портала. Поле canRequest говорит, можно ли запросить увеличение. Отказ приходит только на картинках сверх квоты, которые списывают средства с баланса портала
HTTP402 Кодcowork_subscription_inactive ОписаниеТолько ключ Cowork/Code: генерация оплачивается сиденьем подписки Cowork/Code, а действующего сиденья у владельца ключа нет
HTTP402 Кодcowork_subscription_inactive ОписаниеТолько ключ Cowork/Code: подписка Cowork/Code приостановлена, потому что на балансе портала не хватило средств. Поле reason равно INSUFFICIENT_BALANCE, поле topupUrl — страница пополнения баланса
HTTP402 Кодcowork_model_not_allowed ОписаниеТолько ключ Cowork/Code: модель из поля model не входит в набор моделей Cowork/Code для этого портала
HTTP402 Кодcowork_quota_exhausted ОписаниеТолько ключ Cowork/Code: квота сиденья Cowork/Code за окно исчерпана. Поле window называет окно, resetAt — момент сброса квоты, nextTier — следующий уровень подписки. Время до сброса — в заголовке Retry-After
HTTP402 Кодai_credentials_not_configured ОписаниеНа платформе не настроен доступ к сервису генерации
HTTP403 Кодscope_missing ОписаниеAPI-ключу не хватает скоупа vibe:ai
HTTP404 Кодnot_found ОписаниеГенерация изображений недоступна вашему ключу или порталу
HTTP404 Кодai_model_not_found ОписаниеВ поле model не модель генерации изображений, доступная ключу. Доступные модели — в ответе GET /v1/models, у них есть capabilities.image_generation. Списания нет
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key
HTTP429 Кодai_image_congested ОписаниеСервис генерации занят другими запросами. Запрос не выполнялся, списания нет — повторите через число секунд из заголовка Retry-After
HTTP429 Кодai_congested ОписаниеПул AI-кластера перегружен. Запрос не выполнялся, списания нет — повторите по заголовку Retry-After. Ответ несёт заголовок X-AI-Admission: shed
HTTP429 Кодai_pacing_limited ОписаниеКроме ключа Cowork/Code: превышено суточное или недельное окно равномерного расходования квоты. Это не исчерпание квоты — повторите запрос по заголовку Retry-After. Подробнее — «Равномерное расходование»
HTTP429 Кодrate_limit_exceeded ОписаниеПревышен лимит запросов к AI-эндпоинтам либо сервис генерации ограничил частоту запросов. Во втором случае в ответе есть поле providerStatusCode. Время до повтора — в заголовке Retry-After
HTTP429 Кодai_provider_cooldown ОписаниеСервис генерации временно недоступен, и платформа держит паузу. Запрос не выполнялся, списания нет — повторите через число секунд из Retry-After
HTTP500 Кодai_credentials_invalid ОписаниеУчётные данные платформы для сервиса генерации неполны: в них нет ключа доступа. Повтор запроса не поможет
HTTP502 Кодai_provider_unavailable ОписаниеСервис генерации недоступен, ответил внутренней ошибкой или вернул ответ без картинки. Списания нет, повторите запрос
HTTP502 Кодai_provider_network ОписаниеПлатформа не смогла соединиться с сервисом генерации. Списания нет, повторите запрос
HTTP503 Кодai_provider_timeout ОписаниеКартинка не готова за 60 секунд. Списания нет — повторите через число секунд из Retry-After
HTTP503 Кодai_cluster_not_configured ОписаниеСервис генерации изображений не подключён к платформе

Полный список общих ошибок API — Ошибки.

Известные особенности

Модель ищется по возможности, а не по имени. Модель генерации изображений приходит в общем списке GET /v1/models вместе с чат-моделями и отличается от них полем capabilities.image_generation. Если такой модели в списке нет, генерация изображений вашему ключу или порталу недоступна, и эндпоинт ответит 404. Вшивать идентификатор модели в код не нужно.

Только текстовое описание. Картинку на вход эндпоинт не принимает — поля для изображения-образца в теле запроса нет. Что должно быть на картинке, задаёт prompt, чего на ней быть не должно — negative_prompt.

В рамках квоты — без списаний, сверх квоты — по цене за картинку. С ключом без скоупа vibe:cowork каждая успешная картинка расходует месячную AI-квоту портала. Если расход укладывается в квоту тарифа, деньги с баланса не списываются. Сверх квоты картинка оплачивается с баланса портала по цене из pricing.perCall. Когда квота исчерпана, а оплата сверх неё невозможна, эндпоинт отвечает 402 ai_quota_exhausted. Поле reason различает три случая: breaker — сработал часовой предохранитель расходов сверх квоты, wallet_empty — на балансе портала нет средств, wallet_off — расход сверх квоты для портала недоступен. Поле resetAt — момент, когда запросы снова начнут проходить, для wallet_off оно может отсутствовать. Когда у портала нет оплаченного доступа к AI-моделям, ответ с reason: "wallet_off" дополнительно несёт details.learnMoreUrl — страницу с описанием подписки или тарифа Битрикс24, в которые входит AI, а поле message называет нужный продукт. При других причинах wallet_off поля details.learnMoreUrl нет. Ключ Cowork/Code этим путём не идёт: картинка расходует квоту сиденья, а когда она исчерпана, ответ — 402 cowork_quota_exhausted. Списания с баланса портала по pricing.perCall и отказа ai_quota_exhausted на этом пути нет.

Одновременных запросов ограниченное число. Сервис генерации обрабатывает ограниченное число запросов одновременно, остальные ждут своей очереди. Когда очередь заполнена, запрос сразу получает 429 ai_image_congested и в генерацию не попадает. Картинка, которая не готова за 60 секунд, заканчивается ответом 503 ai_provider_timeout. Чем больше num_inference_steps и размер картинки, тем дольше ждёт и ваш запрос, и очередь за ним.

Картинки не хранятся. Изображение приходит только в ответе, в поле data[].b64_json: ссылок на файлы платформа не выдаёт, повторно скачать картинку с платформы нельзя. Сохраните её сразу после ответа.

Смотрите также