Get API key
GuidesVision and image pipelines
Guides

Vision and image pipelines

Some models read images and some make them. Here are the models live on llm.buzz for each, with the request shapes for sending an image in and for getting one back.

On this page

3 min read

A bee holding a magnifying lens over amber honeycomb cells.

Every number on this page comes from llm.buzz’s public catalog, read 27 October 2026, 05:52 UTC.

An image pipeline has two halves: a model that reads an image and answers in text, and a model that makes an image from a prompt. Right now 45 models on llm.buzz read images and 10 models make them.

Models that read images

ModelInput per 1MOutput per 1MContext
OpenAI: GPT-5 Nano$0.0450$0.3600400K
Google: Gemma 4 26B A4B$0.0700$0.3400256K
Anthropic: Claude Haiku 5.5$0.1000$0.50001M
OpenAI: GPT-6 Luna$0.1000$0.50001.1M
Surogate: Surogate 3.7 Flash$0.1000$0.75001M
Qwen: Qwen3.8 Flash$0.1125$0.35251M
Mistral: Mistral Small 3.2 24B$0.1297$0.3026128K
Xiaomi: MiMo-V2.6-Flash$0.1400$0.28001M
Google: Gemma 4 31B$0.1500$0.3000256K
DeepSeek: DeepSeek V4.1 Flash 1017$0.1500$0.45001M

And 35 more models on Models.

From the public models list, read 27 October 2026, 05:52 UTC.

Every provider of a model serves every capability the model declares. Before a provider serves a model that takes images, an automated check sends it a small image and asks about it, and a provider that fails stays out of routing.

Send an image

On Chat Completions, an image is an image_url content part beside the text. The URL is a data URL with the image in base64, or an https URL that the provider fetches.

reply = client.chat.completions.create(
    model="openai/gpt-5-nano",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "What does this receipt total?"},
            {"type": "image_url", "image_url": {"url": "data:image/png;base64,iVBORw0KGgo..."}},
        ],
    }],
)

A data URL keeps its own MIME type, and detail is passed on.

An agent that takes screenshots can return them where they belong: a role: "tool" message accepts image_url parts beside its text. A provider whose tool results are text only gets the image in a user message right after the tool messages.

Models that make images

From the public models list, read 27 October 2026, 05:52 UTC.

Image generation models answer POST https://api.llm.buzz/api/v1/images and /images/generations; a chat model that draws returns its images in a chat answer, below.

Get an image back

An image generation model answers OpenRouter’s Image API, POST https://api.llm.buzz/api/v1/images, and the OpenAI Images API, POST https://api.llm.buzz/api/v1/images/generations, which the OpenAI SDK calls. Neither is streamed, and every image comes back as base64 in b64_json.

curl https://api.llm.buzz/api/v1/images \
  -H "Authorization: Bearer $LLM_BUZZ_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "openai/gpt-image-2", "prompt": "A line drawing of a beehive"}'
FieldValues
prompt1 to 32,000 characters.
n1 to 10 images, 1 when omitted, and at most the model’s most images per request.
sizeOne of the model’s sizes, WIDTHxHEIGHT or auto, or a resolution tier such as 1K or 2K.
aspect_ratio, resolutionPick one of the model’s sizes by its ratio or its tier. With no size, aspect_ratio or resolution, the model’s first size applies.
quality, background, output_formatOne of the values the model takes; a model that takes none ignores the field. output_format is png, jpeg or webp.
output_compression, seedSent only to a model that takes them.

With your key, GET https://api.llm.buzz/api/v1/images/models lists each image model’s sizes and the values its fields take. A model priced per image bills each image it returns; a model priced per token bills the input and output tokens the provider reports. A refused call bills nothing, and so does one whose provider answers an error or never receives it. A timeout, or a client that gives up, is charged what the call reserved, since the provider may have made images nobody received: for a model priced per image, the n images asked for. So give a slow image a long client timeout. The provider object steers the request as on chat, and the Images docs cover every field, refusal and billing rule.

A model that does not make images through these routes answers 400 unsupported_capability on model, and its message names GET /api/v1/images/models.

Images in a chat

A Chat Completions model that makes images returns them in message.images[].image_url.url, and in delta.images while streaming. Each is a complete base64 image. To continue the conversation, send it back as an assistant image_url content part. Such a model serves Chat Completions only: Responses and Messages refuse it. A provider that cannot take an assistant image refuses a conversation that sends one back.

Docs