Skip to main content

Documentation Index

Fetch the complete documentation index at: https://concentrate.ai/docs/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The Concentrate AI API supports multi-modal inputs, allowing you to send images alongside text to vision-capable models. Images can be provided as base64 data URIs or public URLs, and the API normalizes the format across all providers automatically.

Supported Models

The following models support image inputs:
ProviderModels
OpenAIGPT-5.2, GPT-5.1, GPT-5, GPT-5 Mini, GPT-5 Nano, GPT-4.1, GPT-4o
AnthropicClaude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.5, Claude Sonnet 4, Claude Sonnet 3.7
Google VertexGemini 3 Pro, Gemini 3 Flash, Gemini 2.5 Pro, Gemini 2.5 Flash
MistralPixtral Large, Mistral Medium, Mistral Small, Magistral Medium
CohereCommand A Vision
AWS BedrockClaude models (via Bedrock), OpenAI models (via Bedrock)
AzureGPT-5, GPT-4o, Claude models (via Azure)
Z.AIGLM-4.6V, GLM-4.5V
Use the Get Model endpoint to check if a specific model supports image inputs by looking for the image_processing field in the provider configuration.

Sending Images

Images are sent as content blocks within the input array. Use the input_image content type alongside input_text blocks.

Image Input Format

{
  "type": "input_image",
  "image_url": "data:image/png;base64,iVBOR...",
  "detail": "auto"
}
Properties:
  • type (required): "input_image"
  • image_url (required): Base64 data URI or public HTTPS URL
  • detail (optional): "low", "high", or "auto" (default: "auto")
    • low: Faster processing, lower token cost, suitable for simple images
    • high: Full resolution analysis, higher token cost, better for detailed images
    • auto: Let the model decide based on the image

detail Parameter Support

The detail parameter controls image resolution for token estimation, but provider support varies depending on the underlying API format:
ProviderAccepts DetailNotes
OpenAIYesPassed through via the Responses API format
xAIYesPassed through via the Responses API format
CohereYesExplicitly mapped to the Cohere API
AzureDependsForwarded for OpenAI-format models; not applicable for Anthropic-format models
AnthropicN/AAnthropic’s API does not have a detail parameter
Google VertexN/AGemini’s API does not have a detail parameter
AWS BedrockN/ABedrock’s native image format does not have a detail parameter
MistralYesMistral’s Conversations API does not have a detail parameter
Z.AIN/AZ.AI does not have a detail parameter
For providers marked N/A, their native APIs have no equivalent concept — the provider determines image processing resolution automatically.

Examples

Base64 Image

curl https://api.concentrate.ai/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "gpt-5.2",
    "input": [
      {
        "role": "user",
        "content": [
          {
            "type": "input_text",
            "text": "What do you see in this image?"
          },
          {
            "type": "input_image",
            "image_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..."
          }
        ]
      }
    ]
  }'

URL Image

You can also pass a publicly accessible image URL:
{
  "model": "claude-sonnet-4-5",
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Describe this image in detail."
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/photo.jpg"
        }
      ]
    }
  ]
}
Image URLs must be publicly accessible. Private URLs and URLs requiring authentication may be blocked.

Multiple Images

Send multiple images in a single request:
{
  "model": "gemini-2.5-pro",
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Compare these two images and describe the differences."
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/image1.jpg"
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/image2.jpg"
        }
      ]
    }
  ]
}

With Streaming

Multi-modal requests work with streaming:
{
  "model": "gpt-5.2",
  "stream": true,
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Describe this image."
        },
        {
          "type": "input_image",
          "image_url": "data:image/jpeg;base64,/9j/4AAQ...",
          "detail": "high"
        }
      ]
    }
  ]
}

Supported Formats

FormatMIME TypeData URI Prefix
PNGimage/pngdata:image/png;base64,
JPEGimage/jpegdata:image/jpeg;base64,
GIFimage/gifdata:image/gif;base64,
WebPimage/webpdata:image/webp;base64,
Some providers only support a subset of these image types. You can check the specific model info for specific information on supported model types.

Limits

Image limits vary by provider and model. Exceeding these limits will return a 400 error.
ProviderMax Images Per RequestMax Total Size
OpenAI (GPT-5, GPT-4o)50050 MB
Anthropic (Claude)10032 MB
Google Vertex (Gemini 3)9007 MB
Google Vertex (Gemini 2.5)3,0007 MB
Cohere (Command A Vision)2020 MB
Mistral (Pixtral Large)810 MB
Image tokens are calculated based on per provider algorithms. Higher resolution images consume more tokens. For providers that support it, consider setting detail to “low” to reduce costs.

Error Handling

Common errors when using image inputs:
ErrorCause
Model does not support image inputsThe selected model does not have vision capabilities
Too many imagesRequest exceeds the model’s max_images_per_request limit
Image size exceeds limitTotal image data exceeds the model’s max_total size limit
Invalid image formatImage is not PNG, JPEG, GIF, or WebP
Invalid image URLURL is not a valid HTTP/HTTPS URL or data URI

Request Parameters

Complete parameter reference

Streaming

Use multi-modal with streaming

Create Response

Main endpoint documentation

List Models

Check model capabilities