Skip to main content
POST
/
v1beta
/
models
/
gemini-3.1-flash-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.1-flash-image-preview:generateContent \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "contents": [
    {
      "parts": [
        {
          "text": "A cute Shiba Inu sitting under cherry blossom trees, watercolor 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. 512 / 1K) to shrink the response.

Code Examples

Python

import requests
import base64

API_KEY = "sk-your-api-key"
PROMPT = "A cute Shiba Inu sitting under cherry blossom trees, watercolor style, HD details"

response = requests.post(
    "https://api.apiyi.com/v1beta/models/gemini-3.1-flash-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.1-flash-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.1-flash-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.aspectRatiostringNo14 ratios, default 1:1
generationConfig.imageConfig.imageSizestringNo512 / 1K / 2K / 4K, default 1K
generationConfig.thinkingConfig.thinkingLevelstringNominimal (fast) / High (deep reasoning), default minimal
generationConfig.thinkingConfig.includeThoughtsbooleanNoReturn thinking process text, default false
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, thinkingLevel) 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": {}}]
  • Image Search Grounding (Nano Banana 2 exclusive): Visual context from Google image search
These features require additional Google Search API fees and are not included in APIYI forwarding.

Authorizations

Authorization
string
header
required

API Key obtained from APIYI Console

Body

application/json
contents
object[]
required

Content array containing text prompts

generationConfig
object
required

Response

Successfully generated image

candidates
object[]

Generation results array

usageMetadata
object