Skip to main content
POST
/
v1beta
/
models
/
gemini-3-pro-image-preview:generateContent
Text-to-Image: Generate an image from a text prompt
curl --request POST \
  --url https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "contents": [
    {
      "parts": [
        {
          "text": "A cute cat sitting in a garden, oil painting style, HD details"
        }
      ]
    }
  ],
  "generationConfig": {
    "responseModalities": [
      "IMAGE"
    ],
    "imageConfig": {
      "aspectRatio": "16:9",
      "imageSize": "2K"
    }
  }
}
'
{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "inlineData": {
              "mimeType": "image/png",
              "data": "<string>"
            }
          }
        ]
      },
      "finishReason": "STOP"
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 10,
    "candidatesTokenCount": 258
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt

Use this file to discover all available pages before exploring further.

The interactive Playground on the right supports dropdown selection for parameters (aspect ratio, resolution, response type, etc.). Enter your API Key in the Authorization field (format: Bearer sk-xxx) to send test requests with one click.
Scope: This page is for text-to-image generation. Just enter a prompt — no image upload required. For editing an existing image, use the Image Editing endpoint.
🖥️ Browser Playground limitation (important)This endpoint returns a base64-encoded image (inlineData.data, typically several MB) in the response. Due to browser rendering limits, the Playground on the right may show 请求时发生错误: unable to complete request after the response arrives — the request actually succeeded; the browser just can’t render such a long base64 string.Recommended workflow (beginner-friendly):
  • Copy the Python / Node.js / cURL sample below and run it locally. The code automatically base64.b64decodes the response and writes the image to a file.
  • If you must use the in-browser Playground, set imageSize to the smallest tier (e.g. 1K) to shrink the response.

Code Examples

Python

import requests
import base64

API_KEY = "sk-your-api-key"
PROMPT = "A cute cat sitting in a garden, oil painting style, HD details"

response = requests.post(
    "https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent",
    headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
    json={
        "contents": [{"parts": [{"text": PROMPT}]}],
        "generationConfig": {
            "responseModalities": ["IMAGE"],
            "imageConfig": {"aspectRatio": "16:9", "imageSize": "2K"}
        }
    },
    timeout=300
).json()

img_data = response["candidates"][0]["content"]["parts"][0]["inlineData"]["data"]
with open("output.png", 'wb') as f:
    f.write(base64.b64decode(img_data))
print("Image saved to output.png")

cURL

curl -X POST "https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "Futuristic city night view, neon lights, cyberpunk style"}]}],
    "generationConfig": {
      "responseModalities": ["IMAGE"],
      "imageConfig": {"aspectRatio": "16:9", "imageSize": "2K"}
    }
  }'

Node.js

import fs from "fs";

const API_KEY = "sk-your-api-key";

const response = await fetch(
  "https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent",
  {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${API_KEY}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      contents: [{ parts: [{ text: "Futuristic city night view, neon lights, cyberpunk style" }] }],
      generationConfig: {
        responseModalities: ["IMAGE"],
        imageConfig: { aspectRatio: "16:9", imageSize: "2K" }
      }
    })
  }
);

const data = await response.json();
const imgBase64 = data.candidates[0].content.parts[0].inlineData.data;
fs.writeFileSync("output.png", Buffer.from(imgBase64, "base64"));

Parameter Quick Reference

ParameterTypeRequiredDescription
contents[].parts[].textstringYesText prompt
generationConfig.responseModalitiesarrayYes["IMAGE"] or ["TEXT","IMAGE"]
generationConfig.imageConfig.aspectRatiostringNo10 ratios, default 1:1
generationConfig.imageConfig.imageSizestringNo1K / 2K / 4K, default 1K
See the field descriptions in the Playground on the right for detailed parameter docs, allowed values, and defaults. All enum-type fields (like aspectRatio, imageSize) support dropdown selection — no manual typing needed.
Unsupported FeaturesThe following Google official features are not supported via APIYI and require separate billing:
  • Grounding with Google Search: Real-time search info via tools: [{"google_search": {}}]
  • thinkingConfig (Thinking mode): Only supported on Nano Banana 2, not on Nano Banana Pro
For search grounding features, please contact support for separate billing options.

Authorizations

Authorization
string
header
required

API Key from APIYI Console

Body

application/json
contents
object[]
required

Content array containing the text prompt

generationConfig
object
required

Response

Image generated successfully

candidates
object[]

Generated results array

usageMetadata
object