Без применённого серверного промпта POST /v1/messages изображения передаются блоком image. Самый надёжный способ — base64: файл уже находится в запросе и не зависит от доступности внешнего сайта.
{
"model": "claude-opus-5",
"max_tokens": 1024,
"messages": [{
"role": "user",
"content": [
{"type": "image", "source": {
"type": "base64", "media_type": "image/jpeg", "data": "<BASE64>"
}},
{"type": "text", "text": "Что на изображении?"}
]
}]
}{"type": "image", "source": {"type": "url", "url": "https://example.com/photo.jpg"}}- Форматы: JPEG, PNG, GIF, WebP.
- Лимиты Anthropic: до 10 MB base64-данных и до 8000×8000 px на изображение. Если изображений больше 20, безопасно заранее уменьшить каждую сторону до 2000 px.
- На один API-запрос допускается до 100 изображений при 200k context window и до 600 при 1M context window; размер запроса и токены могут остановить обработку раньше.
- Анимация GIF не воспроизводится — Claude анализирует только первый кадр.
- URL должен быть прямым публичным
https://без авторизации, cookies, login-страницы и anti-bot проверки. - Сервер должен стабильно отдавать корректный image MIME (
image/jpeg,image/png,image/gifилиimage/webp). - Guard не скачивает URL сам: адрес передаётся в запрос Claude Messages без серверного промпта для удалённой загрузки.
- Официальный
count_tokensAnthropic может отклонить URL-source, хотя Messages принимает тот же файл. Для/v1/messagesGuard в этом случае пропускает внутренний count-preflight и использует безопасный резерв полного контекста; если нужен предварительный точный count, отправьте изображение как base64. - Редиректы, CDN-защита, hotlink-защита и временные signed URL могут не сработать. Доступность произвольного внешнего хоста не гарантируется.
- Если URL отклоняется — скачайте файл сами и отправьте base64.
- В одном сообщении можно несколько изображений, пока весь запрос укладывается в лимит.
- Картинки считаются входными токенами (зависит от разрешения) — см. Биллинг.
Текущий каталог источника объявляет для GPT-6 Sol и GPT-6 Luna входные модальности text и image. Используйте изображение только в поддержанной форме выбранного API; наличие image metadata не создаёт файловый alias /v1/files.
| Семейство | Изображения на входе |
|---|---|
| Kimi | блоки image_url, input_image и image принимаются и уходят модели как есть; такое же поведение у видео-блоков |
| Composer | нет: 400 cursor_image_input_unavailable до списания |
| Grok 4.6 | да: инлайн base64, до 16 изображений на запрос, image/png, image/jpeg, image/webp, image/gif |
| Grok 4.7 | нет: 400 cursor_image_input_unavailable до списания |
{
"model": "cursor-grok-4.6-high",
"max_tokens": 512,
"messages": [{
"role": "user",
"content": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "iVBORw0…"}},
{"type": "text", "text": "Что на картинке?"}
]
}]
}Изображение подтверждено только для glm-5.3-flash. Передавайте PNG как base64/data URL в нативной форме выбранного API.
| API | Content block |
|---|---|
| Chat | image_url.image_url.url = data:image/png;base64,… |
| Messages | image.source = {type: base64, media_type: image/png, data: …} |
| Responses | input_image.image_url = data:image/png;base64,… |
Chat Completions:
{
"model": "glm-5.3-flash",
"max_tokens": 4096,
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Describe the image"},
{"type": "image_url", "image_url": {"url": "data:image/png;base64,<base64>"}}
]}]
}Messages:
{
"model": "glm-5.3-flash",
"max_tokens": 4096,
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Describe the image"},
{"type": "image", "source": {
"type": "base64", "media_type": "image/png", "data": "<base64>"
}}
]}]
}Responses:
{
"model": "glm-5.3-flash",
"max_output_tokens": 4096,
"store": false,
"input": [{"role": "user", "content": [
{"type": "input_text", "text": "Describe the image"},
{"type": "input_image", "image_url": "data:image/png;base64,<base64>"}
]}]
}Gemini принимает изображения встроенными данными base64 или ссылкой https: файл по ссылке скачивает сам Google. Передавайте изображение в нативной форме выбранного API.
| API | Блок изображения |
|---|---|
| Messages | image с source.type: "base64" или source.type: "url" и адресом https в url |
| Chat Completions | image_url с адресом вида data:image/png;base64,… или адресом https; detail только auto |
| Responses | input_image с image_url: data-адрес или адрес https |
Chat Completions:
{
"model": "gemini-4-argon",
"max_tokens": 4096,
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Describe the image"},
{"type": "image_url", "image_url": {"url": "data:image/png;base64,<base64>"}}
]}]
}Messages:
{
"model": "gemini-4-argon",
"max_tokens": 4096,
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Describe the image"},
{"type": "image", "source": {
"type": "base64", "media_type": "image/png", "data": "<base64>"
}}
]}]
}Responses:
{
"model": "gemini-4-argon",
"max_output_tokens": 4096,
"input": [{"role": "user", "content": [
{"type": "input_text", "text": "Describe the image"},
{"type": "input_image", "image_url": "data:image/png;base64,<base64>"}
]}]
}Ссылка вместо данных, Messages:
{
"type": "image",
"source": {"type": "url", "url": "https://example.com/picture.png"}
}Muse принимает изображения встроенными данными base64: в Chat Completions и Responses это data-адрес вида data:image/png;base64,….
| API | Блок изображения |
|---|---|
| Messages | image |
| Chat Completions | image_url |
| Responses | input_image |