часть текстовых моделей принимает на вход не только текст, но и изображения: скриншот, фотографию документа, схему, график. модель описывает, что на картинке, читает текст с неё, сравнивает несколько изображений между собой.
эндпоинт тот же — /v1/chat/completions. меняется только устройство сообщения. это не генерация картинок: ответ всегда текстовый.
генерация изображений в api пока не открыта. эта страница — про картинку на входе текстовой модели.
как передать изображение
поле content вместо строки принимает список: сначала текст, затем изображение. изображение кодируется в base64 и подставляется как data-url — строка вида data:image/jpeg;base64,<данные>, где после запятой идёт содержимое файла.
curl "https://api.airakurs.ru/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <КЛЮЧ>" \
-d '{
"model": "anthropic/claude-sonnet-4.5",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Что изображено на картинке?"},
{"type": "image_url", "image_url": {
"url": "data:image/jpeg;base64,<ИЗОБРАЖЕНИЕ В BASE64>"
}}
]
}]
}'
ответ приходит обычным текстом, как и на любой другой запрос. тело запроса с картинкой вырастает примерно на треть от размера файла — base64 всегда длиннее исходных данных.
несколько изображений
в одно сообщение можно вложить несколько изображений — например, чтобы попросить сравнить их между собой. каждое оплачивается отдельно и занимает место в контексте, поэтому осмысленный предел обычно ниже технического.
изображения из предыдущих сообщений передаются заново вместе со всей историей — модель не хранит переписку.
ограничения
форматы и предельный размер задаёт конечный сервис, а не airakurs. почти везде принимают png, jpeg, webp и неанимированный gif. слишком большие файлы либо уменьшаются автоматически, либо отклоняются с ошибкой 400 — точные пороги у каждого свои.
изображения понимают не все модели: текстовой модели без такой поддержки картинка либо не поможет, либо приведёт к ошибке. какие модели принимают изображение, будет видно в карточках моделей; до их публикации сверяйтесь с кабинетом и с ответом GET /v1/models.
стоимость
изображение переводится в токены и оплачивается как входные данные. чем больше разрешение, тем больше токенов, поэтому картинку стоит уменьшать до того размера, на котором ещё различимо нужное. для мелкого текста в документе это, наоборот, повод не экономить.
что дальше
- генерация текста — устройство запроса и ответа.
- стоимость запроса — как картинка влияет на предварительную оценку.
частые вопросы
в каком виде передаётся файл?
изображение кодируется в base64 и подставляется как data-url в поле url. отдельной загрузки файла на сервер не требуется — картинка уходит вместе с телом запроса.
сколько изображений помещается в один запрос?
жёсткого предела в формате нет, но каждое изображение оплачивается и занимает контекст. практический предел определяется размером контекста модели и бюджетом на запрос.
почему запрос с картинкой стоит дороже текстового?
изображение переводится в токены и учитывается как входные данные. чем выше разрешение, тем больше токенов уходит на одну картинку.
может ли модель вернуть изображение в ответ?
на этом эндпоинте нет — ответ всегда текстовый. генерация картинок в api появится позже.