Для 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 |
| Максимум тела запроса на эндпоинт | 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 | Код | Описание |
|---|---|---|
| 400 | invalid_image_payload |
Структурная ошибка запроса: отсутствует поле url, строка не является ни URL, ни data-URI, бесформенный data-URI (без ;base64,), неподдерживаемая схема или http:// в production. Сообщение содержит номер элемента content и конкретную причину |
Ошибки содержимого (не изображение, повреждённый base64, неподдерживаемый MIME-тип, превышение 20 MiB) больше не завершают запрос ошибкой — такой элемент заменяется заглушкой (см. «Проверка содержимого»).
Полный список общих ошибок API — Ошибки.
Известные особенности
Массив content нужен только для изображений. Для текстовых запросов передавайте content строкой. Массив с единственным элементом text тоже работает, но избыточен.
Размер проверяется после декодирования. Ограничение в 20 MiB относится к самому изображению, а не к строке base64. Строка длиннее примерно на треть, поэтому тело запроса ограничено 30 MiB.