Skip to main content

OpenAI chat format (Chat Completions + Gemini image)

Standard OpenAI Chat Completions, with chat-style prompts driving Gemini image generation.

Basics

  • Endpoint: POST /v1/chat/completions
  • Auth: Bearer Token
  • Content-Type: application/json

Request body

FieldTypeRequiredDescription
modelstringYese.g. gemini-3-pro-image-preview.
messagesarrayYesChat messages.
└─ rolestringYesuser, assistant, system.
└─ contentstringYesPrompt, e.g. “draw a cat”.
streambooleanYesStreaming; use false for image generation.
extra_bodyobjectNoVendor extensions.
└─ googleobjectNoGoogle-specific block.
└─ └─ image_configobjectNoImage settings.
└─ └─ └─ aspect_ratiostringNoe.g. 16:9, 1:1.
└─ └─ └─ image_sizestringNoe.g. 2K, 4K.

Response

200 OK
FieldTypeDescription
idstringRequest id.
objectstringchat.completion.
choicesarrayResults.
└─ messageobjectrole + content (image often as Markdown + base64).
└─ finish_reasonstringe.g. stop.
usageobjectToken usage.

Request example

{
  "model": "gemini-3-pro-image-preview",
  "stream": false,
  "messages": [
    {
      "role": "user",
      "content": "draw a cat"
    }
  ],
  "extra_body": {
    "google": {
      "image_config": {
        "aspect_ratio": "16:9",
        "image_size": "2K"
      }
    }
  }
}

Response example

{
  "id": "chatcmpl-20251211...",
  "model": "gemini-3-pro-image-preview",
  "object": "chat.completion",
  "created": 1765440499,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "![image](data:image/jpeg;base64,/9j/4AAQSk...)"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 4,
    "completion_tokens": 1359,
    "total_tokens": 1363
  }
}

Tips

  1. Extracting images: content often embeds ![image](data:image/jpeg;base64,...)—parse the data URI for display.
  2. extra_body: Standard OpenAI SDK extension slot for vendor options without breaking the protocol.
  3. Mock: For local tests, http://127.0.0.1:4523/mock/7707339.