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

# Multimodal input

> Pass images into a chat (image understanding)

Mix text and `image_url` inside a message's `content` to let the model understand an image (image input, not image generation).

<CodeGroup>
  ```bash curl theme={null}
  curl https://tokendog.io/v1/chat/completions \
    -H "Authorization: Bearer $TOKENDOG_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model":"gpt-5",
      "messages":[{"role":"user","content":[
        {"type":"text","text":"Describe this image."},
        {"type":"image_url","image_url":{"url":"https://example.com/cat.png"}}
      ]}]
    }'
  ```

  ```python Python theme={null}
  from openai import OpenAI
  client = OpenAI(base_url="https://tokendog.io/v1", api_key="YOUR_TOKENDOG_API_KEY")
  resp = client.chat.completions.create(model="gpt-5", messages=[{"role":"user","content":[
    {"type":"text","text":"Describe this image."},
    {"type":"image_url","image_url":{"url":"https://example.com/cat.png"}},
  ]}])
  print(resp.choices[0].message.content)
  ```

  ```javascript Node theme={null}
  import OpenAI from "openai";
  const client = new OpenAI({ baseURL:"https://tokendog.io/v1", apiKey:"YOUR_TOKENDOG_API_KEY" });
  const resp = await client.chat.completions.create({ model:"gpt-5", messages:[{role:"user",content:[
    {type:"text",text:"Describe this image."},
    {type:"image_url",image_url:{url:"https://example.com/cat.png"}},
  ]}]});
  console.log(resp.choices[0].message.content);
  ```
</CodeGroup>

<Tip>Vision-capable models (e.g. `gpt-5`, `gemini-2.5-flash`, `claude-sonnet-4-6`) accept image input.</Tip>
