> ## Documentation Index
> Fetch the complete documentation index at: https://docs.venice.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Vision

> Analyze images with Venice vision-capable chat models using multimodal message content in the OpenAI-compatible chat completions API.

Vision models can analyze images alongside text prompts. Use them for image understanding, extraction, classification, visual question answering, and multimodal reasoning.

Venice supports OpenAI-compatible multimodal chat messages. Put text and image blocks in the same user message, then send the request to a vision-capable model.

## Basic Usage

<CodeGroup>
  ```python Python theme={"system"}
  import os
  from openai import OpenAI

  client = OpenAI(
      api_key=os.environ["VENICE_API_KEY"],
      base_url="https://api.venice.ai/api/v1",
  )

  response = client.chat.completions.create(
      model="qwen3-vl-235b-a22b",
      messages=[
          {
              "role": "user",
              "content": [
                  {"type": "text", "text": "Describe this image in three bullets."},
                  {
                      "type": "image_url",
                      "image_url": {
                          "url": "https://www.gstatic.com/webp/gallery/1.jpg"
                      },
                  },
              ],
          }
      ],
  )

  print(response.choices[0].message.content)
  ```

  ```javascript Node.js theme={"system"}
  import OpenAI from "openai";

  const client = new OpenAI({
    apiKey: process.env.VENICE_API_KEY,
    baseURL: "https://api.venice.ai/api/v1",
  });

  const response = await client.chat.completions.create({
    model: "qwen3-vl-235b-a22b",
    messages: [
      {
        role: "user",
        content: [
          { type: "text", text: "Describe this image in three bullets." },
          {
            type: "image_url",
            image_url: {
              url: "https://www.gstatic.com/webp/gallery/1.jpg",
            },
          },
        ],
      },
    ],
  });

  console.log(response.choices[0].message.content);
  ```

  ```bash cURL theme={"system"}
  curl https://api.venice.ai/api/v1/chat/completions \
    -H "Authorization: Bearer $VENICE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "qwen3-vl-235b-a22b",
      "messages": [
        {
          "role": "user",
          "content": [
            {"type": "text", "text": "Describe this image in three bullets."},
            {
              "type": "image_url",
              "image_url": {
                "url": "https://www.gstatic.com/webp/gallery/1.jpg"
              }
            }
          ]
        }
      ]
    }'
  ```
</CodeGroup>

## Use Base64 Images

You can also pass a base64 data URL when the image is local or private:

```json theme={"system"}
{
  "type": "image_url",
  "image_url": {
    "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
  }
}
```

## Choose a Vision Model

Use the [Text Models](/models/text) page or the [Models API](/api-reference/endpoint/models/list) to find models that support vision. Vision support is listed in model capabilities.

<Tip>
  For document-like inputs, use [File Inputs](/guides/features/file-inputs) when you want Venice to extract text from a file. Use vision when the visual layout or image content itself matters.
</Tip>

## Prompting Tips

* Tell the model what to focus on: objects, text, layout, safety, defects, or differences.
* Ask for structured output when your application needs fields you can parse.
* Keep image URLs accessible to the API, or use base64 data URLs for private images.
* Use a model with enough context if you combine images with long instructions.

## Related Resources

* [Chat Completions API](/api-reference/endpoint/chat/completions)
* [Text Models](/models/text)
* [File Inputs Guide](/guides/features/file-inputs)
* [Structured Responses Guide](/guides/features/structured-responses)
