Integration guides · 2026-10-17

Free Nemotron 3.5 Super VL API: image and video input

Free image and video understanding with nvidia/nemotron-3.5-super-vl-free: an OpenAI SDK example, a 1,000,000-token context, reasoning off and HTTP 429.

Diagram: an image and a question go to https://llmtr.com/v1; the box shows the id nvidia/nemotron-3.5-super-vl-free with a free tag below it, and a text answer comes out on the right.

Short answer: the model id is nvidia/nemotron-3.5-super-vl-free

LLMTR (llmtr.com) is a gateway that gives access to language models from different providers through one OpenAI-compatible API. If you are looking for a free model that understands images and video, you can call NVIDIA's Nemotron 3.5 Super VL there with the model id nvidia/nemotron-3.5-super-vl-free on the /v1/chat/completions endpoint at https://llmtr.com/v1. The price is $0.00 per 1M input tokens and $0.00 per 1M output tokens, no credit is deducted, and use is limited by a daily quota.

NVIDIA released the model on 15 October 2026 and describes it as a mixture-of-experts (MoE) model with 120 billion parameters in total, 12 billion of them active per token. Its technical blog says the model combines reasoning, instruction following and tool use with text, image, document and video understanding, and NVIDIA publishes the weights openly. On LLMTR this row has a 1,000,000-token context window, and the model answers in text only.

How do you use a free vision and video model API?

Create an account at llmtr.com, create a key under Dashboard > API Keys and store it in the LLMTR_API_KEY environment variable. Once the OpenAI client's base_url is https://llmtr.com/v1 and the model is nvidia/nemotron-3.5-super-vl-free, the request has the same shape as on OpenAI: the message content is a list of parts, with text in a text part, an image in an image_url part and a video in a video_url part.

Send media as base64 data URLs: read the file and encode it with a data:image/png;base64, or data:video/mp4;base64, prefix. The example below asks the same question first about an image, then about a short video. reasoning: false, sent through extra_body, switches reasoning off, since a short description does not need it. The answer arrives in content, the reason the response ended in finish_reason, and the token counts in usage.

reasoning is sent through extra_body because it is not one of the OpenAI SDK's own parameters; the SDK adds that dictionary to the request body as it is. If you are moving existing OpenAI code, only three values change: base_url, api_key and the model string. The SDK sends the key in the Authorization: Bearer header; with curl or another HTTP client you add the same header yourself.

An OpenAI Python SDK example that sends an image and then a video to nvidia/nemotron-3.5-super-vl-free and prints the Retry-After header on a 429 response.

import base64
import os

from openai import OpenAI, RateLimitError

client = OpenAI(base_url="https://llmtr.com/v1", api_key=os.environ["LLMTR_API_KEY"])


def data_url(path, mime):
    # Encode a local file as a base64 data URL.
    with open(path, "rb") as f:
        return f"data:{mime};base64," + base64.b64encode(f.read()).decode()


media_parts = [
    {"type": "image_url", "image_url": {"url": data_url("photo.png", "image/png")}},
    {"type": "video_url", "video_url": {"url": data_url("clip.mp4", "video/mp4")}},
]

for part in media_parts:
    try:
        response = client.chat.completions.create(
            model="nvidia/nemotron-3.5-super-vl-free",
            messages=[{
                "role": "user",
                "content": [{"type": "text", "text": "Describe what you see in two sentences."}, part],
            }],
            max_tokens=1024,
            # Reasoning is on by default; switch it off for a short description.
            extra_body={"reasoning": False},
        )
        choice = response.choices[0]
        print(choice.message.content)
        print(choice.finish_reason, response.usage)
    except RateLimitError as err:
        print("Limit reached, Retry-After:", err.response.headers.get("retry-after"))

What to watch with image and video input

Text and media parts can share one message, so write the question as a text part next to the media. The model card says the model reads short videos: rather than sending a whole long recording, cut out the part you care about and send that. There is no audio input on this row; a request with an input_audio part returns HTTP 400 unsupported_input. The model does not generate images or video and answers in text only.

The 1,000,000-token window leaves room for long documents and long conversation histories in the same request as the media; the prompt plus max_tokens should stay within that figure. The LLMTR model card also lists JSON object mode and JSON Schema output. If you are extracting fields such as the date, the total and the seller's name from a receipt or invoice image, give a schema with json_schema in response_format, parse the returned text as JSON and check in your own code that the fields you expect are there. For work that needs no schema, json_object is enough.

nvidia/nemotron-3.5-super-vl-free on LLMTR, as of 17 October 2026
PropertyValue
Model idnvidia/nemotron-3.5-super-vl-free
Endpoint/v1/chat/completions (https://llmtr.com/v1)
Price$0.00/1M tokens input, $0.00/1M tokens output
Context window1,000,000 tokens
Inputtext, image (image_url), short video (video_url); base64 data URL
Audio inputnone; input_audio returns HTTP 400 unsupported_input
Reasoningon by default; off with reasoning: false or :fast
reasoning_effortnot supported; HTTP 400 invalid_request
Usage limitdaily usage quota; HTTP 429 with a Retry-After header at the limit

Reasoning: on by default, off per request

Even if you send no parameter, the model reasons step by step before it answers. The reasoning trace comes back separately from the answer in message.reasoning_content, and those tokens are counted in completion_tokens. Because the row is free, they cost you nothing, but max_tokens covers both the reasoning and the answer. Keep the budget at a few thousand tokens while reasoning is on; a response whose finish_reason is length is incomplete.

There are two ways to switch reasoning off: add reasoning: false to the request body, or put the :fast suffix at the end of the model id (nvidia/nemotron-3.5-super-vl-free:fast). The :think suffix keeps it on. reasoning_effort is not supported on this row, and a request that sends it returns HTTP 400 invalid_request; if your library adds the field on its own, turn it off. You do not need to show the reasoning trace to your users: take the answer from content, and read reasoning_content only when you are looking into why a response did not come out as expected.

Usage limit, HTTP 429 and the data notice

The row is offered free with a daily usage quota. HTTP 429 means one of the free usage limits has been reached; that limit can be daily or per minute, and the response carries a Retry-After header. Your client should wait for the time in that header and then send the request again; the except block in the example prints the header. If you process many images in a batch, space the requests out instead of sending them all at once, and put a request that got a 429 at the back of the queue.

The model card's data notice is explicit: the text, images and videos you send may be logged by the provider and may be used to improve the model. Do not send sensitive, personal or customer data to this row. Choose your images and videos with that in mind, and make sure no names, email addresses or account details remain in screenshots.

If you used Nemotron Nano 12B V2 VL

The free nvidia/nemotron-nano-12b-v2-vl row closed on 24 August 2026. Requests for that id return HTTP 410 model_retired, and the error message names nvidia/nemotron-3.5-super-vl-free as the successor. The migration changes the model string; image_url parts stay the same.

The new row is free as well; it accepts video as well as images, and its context window is 1,000,000 tokens instead of 128K. It is a larger model and reasons by default; if you expect the same short answers as before, send reasoning: false or add :fast to the model id. Where you leave reasoning on, set max_tokens higher than before.

Send images and video to the free Nemotron 3.5 Super VL

Create an API key, encode the media as a base64 data URL and send a request to https://llmtr.com/v1 with nvidia/nemotron-3.5-super-vl-free.

  1. API key. Create an account at llmtr.com, create a key under Dashboard > API Keys and store it in the LLMTR_API_KEY environment variable.
  2. Encode the media. Turn the image into a data URL with a data:image/png;base64, prefix and the video with data:video/mp4;base64, then put it in an image_url or video_url part.
  3. Send the request. In the OpenAI SDK, set base_url to https://llmtr.com/v1, use nvidia/nemotron-3.5-super-vl-free as the model and send your question in the same message as the media part.

Frequently asked questions

Is Nemotron 3.5 Super VL really free?

On the nvidia/nemotron-3.5-super-vl-free row the price is $0.00 per 1M input and output tokens, and no credit is deducted. Use is limited by a daily quota; at the limit the API returns HTTP 429 with a Retry-After header.

How do I send a video to this model?

Encode the video as a base64 data URL, add it to the message content list as a part whose type is video_url, and write your question in the same message as a text part. The model card says the model reads short videos; audio input is not supported.

How do I turn off reasoning in Nemotron 3.5 Super VL?

Add reasoning: false to the request body or use the model id nvidia/nemotron-3.5-super-vl-free:fast. reasoning_effort is not supported on this row and returns HTTP 400.

Related posts