Skip to main content

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