Skip to content
Open CastalyConsole

Image

gemini-3.1-flash-image API

Call gemini-3.1-flash-image through Modelflare with the exact model ID shown on this page.

Use the exact model ID gemini-3.1-flash-image. The model field must match this page exactly.

Cut flowers turning into blown glass on the steel shelves of a florist cold room.

Sample outputgemini-3.1-flash-imagePOST /v1beta/models/gemini-3.1-flash-image:generateContent

Parameters: size=2Kratio=16:9

Prompt: The cold room of a flower shop, steel shelves and buckets of cut stems. A figure in an acid-green vinyl coat has just pulled one bucket toward the door. Along that whole shelf the flowers have begun turning to blown glass, petal by petal, the transformation running outward from the bucket like frost: stems still green at the base, heads already clear and ringing, throwing hard coloured caustics across the steel. One hard pink light through the open cooler door, cold blue shade behind. Wide low camera, macro-sharp on the glass edges, real weight, film grain, no text.

Request that produced this sample
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "The cold room of a flower shop, steel shelves and buckets of cut stems. A figure in an acid-green vinyl coat has just pulled one bucket toward the door. Along that whole shelf the flowers have begun turning to blown glass, petal by petal, the transformation running outward from the bucket like frost: stems still green at the base, heads already clear and ringing, throwing hard coloured caustics across the steel. One hard pink light through the open cooler door, cold blue shade behind. Wide low camera, macro-sharp on the glass edges, real weight, film grain, no text."
}
]
}
],
"generationConfig": {
"responseModalities": [
"IMAGE"
],
"imageConfig": {
"aspectRatio": "16:9",
"imageSize": "2K"
}
}
}

Use a Modelflare API key with https://modelflare.dev. The gateway entry point is POST /v1/models/{model}:generateContent.

HTTP
Authorization: Bearer YOUR_MODELFLARE_API_KEY
Terminal windowbash
curl "https://modelflare.dev/v1/models/gemini-3.1-flash-image:generateContent" \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"role": "user", "parts": [{"text": "A white cat runs through a neon-lit street in the rain"}]}],
"generationConfig": {"responseModalities": ["TEXT", "IMAGE"], "imageConfig": {"aspectRatio": "16:9", "imageSize": "1K"}}
}'

Gemini image models use native contents and generationConfig; edits send the text instruction and inline_data in the same parts[].

Gemini image models use native Gemini generateContent. Put text and reference images in the same contents[].parts[]; images use inline_data. Do not send these models to /v1/images/generations, /v1/images/edits, or OpenAI /v1/responses. The imageSize enum is model-specific and shown below.

Field Required Notes
contents[].parts[].text Yes Text prompt or edit instruction
contents[].parts[].inline_data No Base64 image data and MIME type
contents[].parts[].inline_data.mime_type No image/jpeg / image/png / image/webp
contents[].parts[].inline_data.data No Base64-encoded reference image content
generationConfig.responseModalities Yes ["IMAGE"] or ["TEXT", "IMAGE"]
generationConfig.imageConfig.aspectRatio No 1:1 / 4:3 / 3:4 / 16:9 / 9:16
generationConfig.imageConfig.imageSize No 512 / 1K / 2K / 4K

Flash Image supports 512, 1K, 2K, and 4K with 1:1, 4:3, 3:4, 16:9, and 9:16. The official documentation does not publish a reference-image count cap, so the gateway adds no local cap.

Put the edit instruction and the reference image in the same contents[].parts[]. inline_data.data is the Base64 image content; do not send Gemini image models to the OpenAI Images or Responses endpoints.

Terminal windowbash
curl "https://modelflare.dev/v1/models/gemini-3.1-flash-image:generateContent" \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"role": "user", "parts": [
{"text": "Keep the subject and lighting, but replace the background with a misty pine forest."},
{"inline_data": {"mime_type": "image/jpeg", "data": "BASE64_IMAGE_DATA"}}
]}],
"generationConfig": {"responseModalities": ["TEXT", "IMAGE"], "imageConfig": {"aspectRatio": "1:1", "imageSize": "1K"}}
}'

Read candidates[].content.parts[]; do not assume every part is an image because the response may contain text and image parts together.

Field Notes
candidates[].content.parts[].inline_data Generated image MIME type and Base64 data
candidates[].content.parts[].text Text caption returned when TEXT was requested
candidates[].finishReason Completion or safety reason
usageMetadata Input/output token usage when returned by the service

Modelflare preserves the native Gemini response shape for gemini-3.1-flash-image and persists usable image parts.

Field errors, size/ratio limits, and safety refusals from the native Gemini request remain Gemini-compatible error responses. The gateway does not rewrite them as OpenAI Images responses.

This page covers Modelflare model generation and editing calls. Search or map enrichment, voice management, and element-library management are resource APIs outside this public model-call surface and are not required request fields.

This model uses token-based billing. See the model pricing page for the current customer price, reference list price, and complete specification.

Media contract · v1

Contract ID: media.gemini-3-1-flash-image.v1Adapter: image.gemini.native.v1@v1Fingerprint: fb4adc579d570a2f8d4371edde0dc6bfa1042a004eb39641c63bd98fa4c7c8cc

Official source: Google

Contract parameters

Intent fieldControlOptions
sizeselect512 / 1K / 2K / 4K
ratioselect1:1 / 4:3 / 3:4 / 16:9 / 9:16

Supported capability

  • allowed_values · size · 512, 1K, 2K, 4K
  • allowed_values · ratio · 1:1, 4:3, 3:4, 16:9, 9:16

Structured request example

text

Intent

{
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "1:1",
  "size": "512"
}

Provider request

{
  "contents": [
    {
      "parts": [
        {
          "text": "A red paper kite over a quiet harbour at dusk."
        }
      ],
      "role": "user"
    }
  ],
  "generationConfig": {
    "imageConfig": {
      "aspectRatio": "1:1",
      "imageSize": "512"
    },
    "responseModalities": [
      "TEXT",
      "IMAGE"
    ]
  },
  "systemInstruction": {
    "parts": [
      {
        "text": "Generate an image for the user's request. If details are missing, choose reasonable defaults and still return an image. Do not ask clarifying questions."
      }
    ]
  }
}

reference

Intent

{
  "prompt": "A red paper kite over a quiet harbour at dusk.",
  "ratio": "1:1",
  "size": "512"
}

Provider request

{
  "contents": [
    {
      "parts": [
        {
          "text": "A red paper kite over a quiet harbour at dusk."
        },
        {
          "inline_data": {
            "data": "AAAA",
            "mime_type": "image/png"
          }
        }
      ],
      "role": "user"
    }
  ],
  "generationConfig": {
    "imageConfig": {
      "aspectRatio": "1:1",
      "imageSize": "512"
    },
    "responseModalities": [
      "TEXT",
      "IMAGE"
    ]
  },
  "systemInstruction": {
    "parts": [
      {
        "text": "Generate an image for the user's request. If details are missing, choose reasonable defaults and still return an image. Do not ask clarifying questions."
      }
    ]
  }
}