ReferenceUpdated 2026-05-01

Image LLM API

Attach images to OpenAI-compatible chat completions. PNG, JPEG, WEBP, and GIF up to 15 MB. Free tier supported.

An image LLM API lets you send pictures alongside text in the same chat-completions request.

abliteration.ai accepts images on /v1/chat/completions, /v1/messages, /v1/responses, and the /policy/* siblings — pick the endpoint that matches your existing SDK.

Definition

Image LLM API

An image LLM API accepts image bytes (HTTPS URL or base64 data URL) inside a chat-completions request and returns natural-language or structured answers grounded in the image.

Why it matters
  • Describe, summarize, or caption pictures without writing model-specific glue.
  • Extract structured data from screenshots, scans, and product photos.
  • Send images from a browser, mobile app, or backend with one HTTP call.
  • Reuse OpenAI/Anthropic SDKs you already have — only the base URL changes.
How it works
  1. 01Pick an endpoint: /v1/chat/completions for OpenAI shape, /v1/messages for Anthropic shape, /v1/responses for the new OpenAI Responses shape.
  2. 02Set message.content to an array mixing text parts and image_url parts (or input_image for /v1/responses).
  3. 03Use a public HTTPS URL or an inline data:image/png;base64,... URL up to 15 MB raw.
  4. 04Authenticate with a JWT or API key (anonymous X-Free-Tier callers can attach images for the free request).
  5. 05Stream the response with stream: true if you want progressive output.
Send an image with curl
curl https://api.abliteration.ai/v1/chat/completions \
  -H "Authorization: Bearer $ABLIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "abliterated-model",
    "messages": [
      {
        "role": "user",
        "content": [
          { "type": "text", "text": "What is in this image?" },
          { "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } }
        ]
      }
    ]
  }'
FAQ

Frequently asked questions.

Which endpoints accept images?

All four chat-style endpoints — /v1/chat/completions, /v1/messages, /v1/responses, and the /policy/* siblings. Use whichever shape matches your SDK.

What image formats and sizes are supported?

PNG, JPEG, WEBP, and GIF up to 15 MB raw per image. The 35 MB total request body cap means you can comfortably send 1–2 large images plus prompt text.

Public URL or base64 — which should I use?

Either works. Public HTTPS URLs are smaller on the wire; base64 data URLs avoid a server-side fetch and skip the SSRF guard. Use base64 for ZDR-aligned flows where the image never lives on a public host.

Do you support multiple images in one request?

Yes. Add multiple image_url parts to message.content. Latency and token cost scale with the number of images — keep it small (≤4) for predictable performance.

Are private/internal IPs blocked?

Yes. The SSRF guard rejects RFC1918, link-local, loopback, and IPv4-mapped IPv6 addresses with HTTP 400 and code unsafe_image_url. Cloud metadata endpoints (169.254.169.254) are blocked by the same check.

Are images moderated?

Yes — every image is sent through OpenAI's omni-moderation API server-side, one image per call (the API caps at one). Rejected images return HTTP 400 with code moderation_blocked and the offending category.

Can anonymous users attach images?

Yes. Anonymous callers send X-Free-Tier: true and get one free request that may include images. Video is the only attachment type gated to authenticated callers.

How is this different from /vision-llm-api?

Same product, different framing. /vision-llm-api focuses on model capability (vision-capable models). /image-llm-api focuses on the developer task (attaching images to a request). Both link to the same /docs/vision guide.