Для AI-агентов: markdown этой страницы — /docs-content/ai/chat/vision.md индекс документации — /llms.txt
Анализ изображений
Модели с поддержкой изображений принимают графику через массив content с элементом type: "image_url". Адрес изображения — либо data:-URI с данными в base64, либо ссылка https. В каталоге GET /v1/models такие модели имеют флаг capabilities.vision: true.
Бесплатно изображения обрабатывают bitrix/bitrixgpt-5.5 и bitrix/bitrixgpt-5.5-thinking. Через свой ключ провайдера (BYOK) доступны модели Anthropic Claude: anthropic/claude-opus-4-6, anthropic/claude-sonnet-4-6, anthropic/claude-haiku-4-5-20251001. Для них платформа сама приводит элемент image_url к формату Anthropic — на стороне клиента менять ничего не нужно.
Пример запроса
curl -X POST https://vibecode.bitrix24.tech/v1/chat/completions \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bitrix/bitrixgpt-5.5",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Опиши, что на изображении"},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."}}
]
}
],
"max_tokens": 500
}'
Ограничения
| Параметр | Значение |
|---|---|
| ПараметрMIME-типы | Значениеimage/png, image/jpeg, image/gif, image/webp |
| ПараметрМаксимум на изображение, декодированный размер | Значение20 MiB для любой модели |
ПараметрМаксимум image_url.url в запросе |
Значение30 MiB, с запасом на кодирование base64 это 22 MiB полезных данных |
ПараметрФормат url |
Значениеdata:<mime>[;параметр=значение]*;base64,<данные> или https://<host>/<path>. Параметры между типом и ;base64 (например data:image/jpeg;name=photo.jpg;base64,…) допускаются и отбрасываются |
ПараметрСсылки http:// |
Значениене принимаются, только https или data: |
ПараметрМаксимум элементов content на сообщение |
Значение64 |
| ПараметрМаксимум тела запроса | ЗначениеМодели bitrix/*: предел задаёт кластер моделей, для тела с изображениями он ниже, чем для текста. Изображения data: в теле больше предела платформа уменьшает сама — см. «Известные особенности». Действующий предел называет сообщение ответа 413. Модели через свой ключ провайдера — 30 MiB |
MiB — мебибайт, двоичная единица по стандарту IEC 80000-13: 1 MiB = 2²⁰ = 1 048 576 байт ≈ 1,05 МБ. Лимиты проверяются как N × 1024 × 1024, поэтому и в сообщении об ошибке размер указан в MiB — например, decoded size 21.3 MiB exceeds limit 20 MiB.
Проверка содержимого
Перед отправкой модели содержимое каждого элемента image_url, переданного как data:-URI, проверяется по фактическим байтам, а не по заявленному MIME-типу. Если содержимое не является изображением — например HTML-страница или ответ с ошибкой, закодированные в base64 и объявленные как image/png, — элемент не отбрасывается, а заменяется на своей позиции текстовой заглушкой [image unavailable: <причина>]. Остальные изображения обрабатываются как обычно, запрос завершается успешно.
Проверка по содержимому применяется только к data:-URI. Кандидат по ссылке https:// платформа передаёт модели как есть, без загрузки и проверки байтов, — такие ссылки валидируйте на своей стороне.
Позиции элементов сохраняются: длина массива content не меняется, поэтому нумерация кандидатов на вашей стороне остаётся верной.
Факт замены виден в ответе:
- заголовок
X-Image-Parts-Rejectedнесёт число заменённых элементов — это единый сигнал для всех режимов ответа; для потоковых ответов он приходит вместе с началом потока; - в обычном (не потоковом) ответе поле
warningsдополнительно содержит запись с кодомIMAGE_CONTENT_REJECTEDи деталями замен. В потоковом ответе поляwarningsнет — ориентируйтесь на заголовок.
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| HTTP400 | Кодinvalid_image_payload |
ОписаниеСтруктурная ошибка запроса: отсутствует поле url, строка не является ни URL, ни data-URI, бесформенный data-URI (без ;base64,), неподдерживаемая схема или http:// в production. Сообщение содержит номер элемента content и конкретную причину |
| HTTP413 | Кодai_payload_too_large |
ОписаниеТело запроса с изображениями к модели bitrix/* больше предела кластера моделей и после уменьшения изображений. Запрос к модели не отправляется, списания нет. Сообщение называет размер запроса и действующий предел |
| HTTP413 | Кодai_payload_too_large |
ОписаниеЗапрос отклонил по размеру тела сам кластер моделей или провайдер модели на вашем ключе. В теле ответа есть поле providerStatusCode: 413 |
| HTTP429 | Кодai_image_resize_busy |
ОписаниеПлатформа уже уменьшает много изображений одновременно. Повторите запрос через время из заголовка Retry-After или уменьшите изображения перед отправкой |
Ошибки содержимого (не изображение, повреждённый base64, неподдерживаемый MIME-тип, превышение 20 MiB) больше не завершают запрос ошибкой — такой элемент заменяется заглушкой (см. «Проверка содержимого»).
Полный список общих ошибок API — Ошибки.
Известные особенности
Массив content нужен только для изображений. Для текстовых запросов передавайте content строкой. Массив с единственным элементом text тоже работает, но избыточен.
Большие изображения для bitrix/* платформа уменьшает сама. Если в теле запроса есть изображения и оно больше предела, платформа уменьшает изображения data:, начиная с самого большого, до 1536 пикселей по длинной стороне и сохраняет в JPEG с качеством 80. Если этого не хватило — до 1024 пикселей с качеством 70. Изображение с прозрачными пикселями уменьшается с сохранением прозрачности в PNG, и только если так оно не уложилось в предел — сохраняется в JPEG на белом фоне. От GIF остаётся первый кадр, изображения по ссылке https не меняются. Тело, которое не уложилось в предел и после этого, получает 413. При stream: true отказы ai_payload_too_large и ai_image_resize_busy приходят кадром ошибки внутри ответа 200, а пауза — полем retryAfter в кадре, а не заголовком. Изображение больше 20 MiB после декодирования не уменьшается, а заменяется заглушкой, как описано в «Проверке содержимого».
Чтобы управлять качеством, уменьшайте изображения сами. Фотография 12 Мп в JPEG занимает 4–5 МБ. Уменьшенная до 1500 пикселей по длинной стороне и сохранённая в JPEG или WebP с качеством 80–85, она занимает 0,2–1 МБ и уходит модели без изменений.
Размер изображения проверяется после декодирования. Ограничение в 20 MiB относится к самому изображению, а не к строке base64. Строка длиннее примерно на треть, поэтому тело запроса для моделей через свой ключ провайдера ограничено 30 MiB.