> ## Documentation Index
> Fetch the complete documentation index at: https://veniceai-mintlify-f533effe.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Vision

> Analyze images with Venice vision models using multimodal content in chat completions.

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={null}
  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={null}
  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={null}
  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={null}
{
  "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)
