← Blog

Free vision LLM API: send images to Nemotron Super VL and Llama 3.2 Vision

Two vision models InferAll serves at $0: Nemotron 3.5 Super VL and Llama 3.2 11B Vision. OpenAI and Anthropic image formats, measured results, and Python and curl examples.

InferAll Team

3 min read
visionmultimodalimage inputfree LLM APINemotronLlama 3.2 VisionOpenAI APIAnthropic API

InferAll serves two models that accept images, both at $0 input and $0 output:

Model id What it is
nvidia/nemotron-3.5-super-vl-120b-a12b NVIDIA's Nemotron 3.5 Super VL: 120B parameters in total, 12B active per token
meta/llama-3.2-11b-vision-instruct Meta's Llama 3.2 11B Vision Instruct

You can send the image the OpenAI way (an image_url part) or the Anthropic way (an image block). Both work on both models.

What we measured (2026-10-19, through InferAll)

We sent a 64x64 PNG whose left half is red and right half is blue, and asked for the two colours. Exact routing, so each answer came from the model named.

Model Endpoint Correct answers Time per answer
Super VL /v1/chat/completions 3 of 3 1.4s, 1.5s, 31.8s
Super VL /v1/messages 2 of 2 1.2s, 11.7s
Llama 3.2 Vision /v1/chat/completions 2 of 3 (one provider error) 0.9s, 5.2s
Llama 3.2 Vision /v1/messages 2 of 2 2.2s, 32.5s

Most answers took one to five seconds; a few took 12s to 32s while the shared NVIDIA capacity was busy. One request to Llama 3.2 Vision returned a provider error (HTTP 502). Use default routing (below) if you want InferAll to retry on another vision model when that happens.

This was a simple test. It shows that the image reaches the model and is read; it does not measure OCR, charts or fine detail.

Python (OpenAI SDK)

import base64
from openai import OpenAI

client = OpenAI(
    base_url="https://api.inferall.ai/v1",
    api_key="ifu_your_key_here",  # inferall.ai/keys
)

with open("photo.png", "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode()

response = client.chat.completions.create(
    model="nvidia/nemotron-3.5-super-vl-120b-a12b",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Describe this image in one sentence."},
            {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image_b64}"}},
        ],
    }],
    max_tokens=300,
)
print(response.model)  # the model that answered
print(response.choices[0].message.content)

Anthropic format (/v1/messages)

import base64
import anthropic

client = anthropic.Anthropic(
    base_url="https://api.inferall.ai",
    api_key="ifu_your_key_here",
)

with open("photo.png", "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode()

message = client.messages.create(
    model="meta/llama-3.2-11b-vision-instruct",
    max_tokens=300,
    messages=[{
        "role": "user",
        "content": [
            {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": image_b64}},
            {"type": "text", "text": "Describe this image in one sentence."},
        ],
    }],
)
print(message.content[0].text)

curl

IMG=$(base64 < photo.png | tr -d '\n')
curl https://api.inferall.ai/v1/chat/completions \
  -H "Authorization: Bearer $INFERALL_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"model\": \"nvidia/nemotron-3.5-super-vl-120b-a12b\", \"max_tokens\": 300,
       \"messages\": [{\"role\": \"user\", \"content\": [
         {\"type\": \"text\", \"text\": \"Describe this image in one sentence.\"},
         {\"type\": \"image_url\", \"image_url\": {\"url\": \"data:image/png;base64,$IMG\"}}]}]}"

If a vision model is busy

With default routing, a request that contains an image only moves to another model that can see images. It is never answered by a text-only model that would ignore the picture. The model field of the response, and the X-Inferall-Actual-Model header, say which model answered. To always get the model you named, send the header X-Inferall-Routing: exact.

Get a key

Sign up at inferall.ai/keys. New accounts get 25 free calls on open models, no card needed. Model pages: Super VL and Llama 3.2 Vision.

Try it with one key: create a free account and your first 25 calls on open models are free, no card needed.

Start building free