Image modelsAdvanced usersUpdated
POST/v1/images/generations

API console

POST/v1/images/generations
View keys

Requests use the API key you enter and follow standard API billing.

Gemini 3.1 Flash Image Preview

Request ID gemini-3.1-flash-image-preview

Protocols

Authentication

Requests require an API key from API key management. For JSON requests, set Content-Type: application/json.

  • Authorization: Bearer YOUR_API_KEY
  • Gemini · x-goog-api-key: YOUR_API_KEY

Request parameters

POST /v1/images/generations

FieldTypeRequiredDescription
modelstringRequiredUse this model ID gemini-3.1-flash-image-preview.
promptstringRequiredDescribe the image to generate.
aspect_ratiostringOptionalOutput aspect ratio. For example, 1:1 or 16:9. When omitted, the value is derived from size. Default 1:1.
image_sizestringOptionalOutput resolution tier. Accepted values 1K, 2K, 4K. When omitted, the value is derived from size. Default 1K.
nintegerOptionalNumber of images per request. Use 1 for a single result. Default 1.
image_urlsstring[]OptionalReference images as a JSON array. Each item is a public HTTPS image URL or a Base64 image data URL. Also accepts image_input. Maximum reference images 4.
?asyncstringOptionalURL query parameter. Set 1, true, or yes to receive 202 and a task_id. Omit it to wait for the result.

POST /v1/images/edits

FieldTypeRequiredDescription
modelstringRequiredUse this model ID gemini-3.1-flash-image-preview.
promptstringRequiredDescribe the changes to make to the reference image.
aspect_ratiostringOptionalOutput aspect ratio. For example, 1:1 or 16:9. When omitted, the value is derived from size. Default 1:1. For edits, set this in the JSON request body.
image_sizestringOptionalOutput resolution tier. Accepted values 1K, 2K, 4K. When omitted, the value is derived from size. For edits, set this in the JSON request body. Default 1K.
nintegerOptionalNumber of images per request. Use 1 for a single result. Default 1.
image_urlsstring[]ConditionalReference images as a JSON array. Each item is a public HTTPS image URL or a Base64 image data URL. Also accepts image_input. Maximum reference images 4. Provide at least one reference when sending JSON edits.
image[]file[]ConditionalWith multipart/form-data edits, upload at least one image and repeat the field for more. A single file can also use image. Maximum reference images 4.
?asyncstringOptionalURL query parameter. Set 1, true, or yes to receive 202 and a task_id. Omit it to wait for the result.

POST /v1beta/models/gemini-3.1-flash-image-preview:generateContent

FieldTypeRequiredDescription
model (path)stringRequiredUse gemini-3.1-flash-image-preview as the model ID in the URL path.
contentsobject[]RequiredConversation contents in order. Each item holds its input parts in parts.
contents[].rolestringOptionalMessage role. Use user for user input and model for model messages in history.
contents[].partsobject[]RequiredArray of parts within a content item. Text parts use text.
contents[].parts[].inlineDataobjectConditionalInline media object. Provide mimeType and Base64-encoded data. Accepted media types depend on the model and endpoint.
systemInstructionobjectOptionalSystem instruction object. Put instruction text in parts[].text.
generationConfig.maxOutputTokensintegerOptionalCaps output tokens. The accepted limit depends on the model and endpoint.
generationConfig.responseModalitiesstring[]OptionalOutput modalities. Use ["IMAGE"] to request an image.

Request examples

Set your API key in the local ICODEEASY_API_KEY environment variable and choose an endpoint that accepts direct HTTP calls. For endpoints that require a specific client, follow that client’s setup guide.

Replace example media URLs and asset IDs with your own valid assets.

Images Generations

bash
curl -sS 'https://api.icodeeasy.cc/v1/images/generations' \
  -H "Authorization: Bearer $ICODEEASY_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{
  "model": "gemini-3.1-flash-image-preview",
  "prompt": "A watercolor illustration of a paper lantern by a lake.",
  "aspect_ratio": "16:9",
  "image_size": "1K"
}'

Images Edits

bash
curl -sS 'https://api.icodeeasy.cc/v1/images/edits' \
  -H "Authorization: Bearer $ICODEEASY_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{
  "model": "gemini-3.1-flash-image-preview",
  "prompt": "Change the background to a pale blue wall. Preserve the subject.",
  "image_urls": [
    "https://example.com/reference.png"
  ],
  "aspect_ratio": "16:9",
  "image_size": "1K"
}'

Gemini generateContent

bash
curl -sS 'https://api.icodeeasy.cc/v1beta/models/gemini-3.1-flash-image-preview:generateContent' \
  -H "x-goog-api-key: $ICODEEASY_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "A watercolor illustration of a paper lantern by a lake."
        }
      ]
    }
  ],
  "generationConfig": {
    "responseModalities": [
      "IMAGE"
    ]
  }
}'

Gemini generateContent · JSON

Check image task

bash
curl -sS 'https://api.icodeeasy.cc/v1/images/tasks/YOUR_TASK_ID' \
  -H "Authorization: Bearer $ICODEEASY_API_KEY"

Responses and tasks

/v1/images/generations · /v1/images/edits

HTTP 200 · Synchronous success

With ?sync=1, read the generated image URLs from data[].url. created is a Unix timestamp in seconds, and id is the task ID.

json
{
  "id": "d142c93a-de26-40c9-be62-0de840d10960",
  "created": 1781599773,
  "data": [
    {
      "url": "https://example.com/generated-image.png"
    }
  ]
}

HTTP 202 · Asynchronous submission

json
{
  "task_id": "d142c93a-de26-40c9-be62-0de840d10960",
  "status": "pending"
}

With ?async=1, use the same API key to poll GET /v1/images/tasks/{task_id}. status is pending, completed, or failed. On completion, read the image URL from result_url.

HTTP 200 · Completed task lookup

json
{
  "task_id": "d142c93a-de26-40c9-be62-0de840d10960",
  "status": "completed",
  "model": "gemini-3.1-flash-image-preview",
  "result_url": "https://example.com/generated-image.png"
}

Common errors

When the lookup returns failed, read error. If error_detail is present, check retryable before submitting again.

Response examples and errors

Gemini generateContent · JSON

Read images from parts with inlineData in candidates[].content.parts[]. Decode data from Base64 and use mimeType to identify the image format.

json
{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "inlineData": {
              "mimeType": "image/png",
              "data": "BASE64_IMAGE_DATA"
            }
          }
        ]
      }
    }
  ]
}

Full integration guide · See the full API guide for request fields, task states, and response formats.

Capabilities and limits

  • text_to_image · Supported
  • image_to_image · Supported
  • image_editing · Supported
  • native_generation · Supported
  • reference_images · Conditional — Requires valid reference images in a supported request format
  • Limits Reference images: up to 4 · Resolutions: 1k, 2k, 4k

Compatibility aliases and retired redirects

  • gemini-3.1-flash-image → gemini-3.1-flash-image-preview (Alias)

Model Capability Catalog · View pricing