Model Capabilities
Image Understanding
When sending images, it is advised to not store request/response history on the server. Otherwise the request may fail. See Disable storing previous request/response on server.
Some models allow images in the input. The model will consider the image context when generating the response.
Constructing the message body - difference from text-only prompt
The request message to image understanding is similar to a text-only prompt. The main difference is that instead of text input:
JSON
[
{
"role": "user",
"content": "What is in this image?"
}
]
We send in content as a list of objects:
JSON
[
{
"role": "user",
"content": [
{
"type": "input_image",
"image_url": "data:image/jpeg;base64,<base64_image_string>"
},
{
"type": "input_text",
"text": "What is in this image?"
}
]
}
]
The image_url value can also be a public URL on the Internet instead of a base64 data URL.
Image understanding example
import { xai } from '@ai-sdk/xai';
import { generateText } from 'ai';
const { text, response } = await generateText({
model: xai.responses('grok-4.7'),
messages: [
{
role: 'user',
content: [
{
type: 'image',
image: new URL('https://science.nasa.gov/wp-content/uploads/2023/09/web-first-images-release.png'),
},
{
type: 'text',
text: "What's in this image?",
},
],
},
]
});
console.log(text);
// The response ID can be used to continue the conversation
console.log(response.id);
Image input general limits
- Maximum image size:
20MiB - Maximum number of images: No limit
- Supported image file types:
jpg/jpegorpng. - Any image/text input order is accepted (e.g. text prompt can precede image prompt)
Last updated: May 30, 2026