Recommended endpoint
Minimal request
{
"model": "gemini-2.5-flash",
"contents": [
{
"role": "user",
"parts": [
{ "text": "Describe the UI structure in this screenshot." },
{
"inlineData": {
"mimeType": "image/png",
"data": "<base64>"
}
}
]
}
]
}
cURL example
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{ "text": "Describe the UI structure in this screenshot." },
{
"inlineData": {
"mimeType": "image/png",
"data": "<base64>"
}
}
]
}
]
}'
Python example
import requests
response = requests.post(
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent",
headers={
"x-goog-api-key": "<GEMINI_API_KEY>",
"Content-Type": "application/json",
},
json={
"contents": [
{
"role": "user",
"parts": [
{"text": "Describe the UI structure in this screenshot."},
{
"inlineData": {
"mimeType": "image/png",
"data": "<base64>",
}
},
],
}
],
},
)
print(response.json())
Node.js example
const response = await fetch(
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent",
{
method: "POST",
headers: {
"x-goog-api-key": process.env.GEMINI_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
contents: [
{
role: "user",
parts: [
{ text: "Describe the UI structure in this screenshot." },
{
inlineData: {
mimeType: "image/png",
data: "<base64>"
}
}
]
}
]
}),
}
);
console.log(await response.json());
Best practices
- Inline small assets and use Files API for larger reusable media
- Preserve the intended context order inside
parts - One request model can handle text, images, and files, which makes Gemini easy to extend
