跳到內容

Nano Banana(Gemini 圖像模型)

目前在售的 Gemini 圖像模型:gemini-3.1-flash-image-preview、gemini-3-pro-image-preview 和 gemini-3.1-flash-lite-image。它們是由 Gemini 渠道提供的圖像生成模型,有兩條呼叫路徑(每個模型的實際清單請在模型中查看 supported_endpoint_types):

路徑端點你送出的請求體
OpenAI 圖像格式POST /v1/images/generationsOpenAI 圖像 JSON,格式見 OpenAI 圖像格式
Gemini 原生POST /v1beta/models/{model}:generateContentGemini 的 contents + generationConfig

客戶端已經使用 Gemini 協議(Google GenAI SDK)、需要完整控制 responseModalities 和 imageConfig 時,走原生路徑;客戶端只支援 OpenAI 圖像介面時,走 /v1/images/generations。

請求格式、認證和錯誤回應體與 OpenAI 圖像格式 相同。RouteAPI 會把你的圖像請求轉換成 Gemini 的 generateContent 呼叫。

欄位類型必填說明
modelstring是Gemini 圖像模型 ID,例如 gemini-3.1-flash-image-preview
promptstring是作為 user 輪次裡的單一文字 part 送出
sizestring否映射為 generationConfig.imageConfig.aspectRatio(見下表)
ninteger否大於 1 時送出為 generationConfig.candidateCount;為 1 或省略時不送出
quality、response_format、style、user、watermark—否該路徑不做轉換,Gemini 適配器會忽略這些欄位

responseModalities 由 RouteAPI 自己填入 ["TEXT", "IMAGE"],透過這個端點時不需要傳。安全設定取自平台級的 Gemini 設定。

只有以下精確的 size 值會映射為長寬比:

sizeaspectRatio
256x256、512x512、1024x10241:1
1536x10243:2
1024x15362:3
1024x17929:16
1792x102416:9

已經包含 : 的值會作為長寬比原樣傳遞。其他值(例如 2K 或 auto)完全不送出 imageConfig,由上游預設值決定。該路徑不接受像素尺寸——長寬比是唯一的尺寸控制項。

Terminal window
curl https://api.routeapi.ai/v1/images/generations \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "A nano banana wearing sunglasses, studio product shot",
"size": "1536x1024"
}'

回應會被轉換成 OpenAI 圖像物件;只有內嵌圖像 part 會保留,模型回傳的任何文字都會被丟棄。

{
"created": 1740000000,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."
}
]
}

該路徑不會產生 URL——一律讀取 data[].b64_json。回應裡沒有圖像 part 時請求以 500 失敗;被 Gemini 攔截時以 400 失敗,攔截原因會記錄在該請求上。

POST /v1beta/models/{model}:generateContent
POST /v1beta/models/{model}:streamGenerateContent?alt=sse

範例:

Terminal window
curl https://api.routeapi.ai/v1beta/models/gemini-3-pro-image-preview:generateContent \
-H "x-goog-api-key: $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{ "role": "user", "parts": [{ "text": "Draw a cat astronaut on the moon" }] }
],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": { "aspectRatio": "16:9", "imageSize": "2K" }
}
}'
欄位類型必填說明
contentsarray是Gemini 對話內容,至少一項。角色為 user 和 model
generationConfig.responseModalitiesarray of string實際必填必須包含 IMAGE,否則模型只回傳文字
generationConfig.imageConfigobject否圖像選項,原樣傳給 Gemini。aspectRatio 例如 1:1、3:2、16:9;imageSize 例如 1K、2K、4K。可接受的值取決於模型
generationConfig.candidateCountinteger否候選數量;並非所有圖像模型都支援
safetySettingsarray否Gemini 安全設定,原樣轉發
systemInstructionobject否系統指令;也接受 snake_case 的 system_instruction

generationConfig 的欄位同時接受 camelCase 和 snake_case 兩種寫法(例如 responseModalities / response_modalities、imageConfig / image_config),兩者都存在時以 snake_case 為準。imageConfig 及其內容不做校驗,原樣傳遞,因此不支援的 imageSize 由 Gemini 報錯,而不是 RouteAPI。

要編輯或引用圖像,在文字旁加一個內嵌圖像 part:

{
"contents": [
{
"role": "user",
"parts": [
{ "text": "Repaint this photo as a watercolor illustration" },
{
"inlineData": {
"mimeType": "image/png",
"data": "iVBORw0KGgoAAAANSUhEUgAA..."
}
}
]
}
],
"generationConfig": { "responseModalities": ["TEXT", "IMAGE"] }
}

inlineData 攜帶 Base64 圖像位元組,會原樣轉發給 Gemini。已經上傳到 Google 的檔案也可以用原生 fileData.fileUri part,它同樣屬於轉發範圍。如果客戶端使用的是 OpenAI 對話格式,image_url 內容 part 會在伺服器端下載並轉換成內嵌 part 後再送給 Gemini。

串流由查詢參數 ?alt=sse 決定,而不是由 action 名決定:帶上它後上游 action 變為 streamGenerateContent,回應是 Gemini 的 server-sent events 串流。每個分塊都是標準的 candidates[].content.parts 結構。希望圖像增量到達時使用;否則 :generateContent 會一次回傳完整回應體。

原生路徑原樣回傳 Gemini 的回應結構:

{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{ "text": "Here is the image." },
{
"inlineData": {
"mimeType": "image/png",
"data": "iVBORw0KGgoAAAANSUhEUgAA..."
}
}
]
},
"finishReason": "STOP"
}
],
"usageMetadata": {
"promptTokenCount": 12,
"candidatesTokenCount": 1120,
"totalTokenCount": 1132
}
}

圖像從 parts[].inlineData 讀取,通常會伴隨文字 part。Gemini 攔截請求時,promptFeedback.blockReason 會有值,candidates 為空。

Gemini 圖像模型按 token 計費:生成的圖像計為輸出 token,按輸出價格收費;prompt 和參考圖計為輸入 token。目前費率見模型定價與模型詳情頁。

  • OpenAI 圖像格式 — 共用的 /v1/images 請求格式與編輯行為。
  • Seedream — 火山引擎 Seedream 的尺寸與編輯語義。
  • 模型 — 查找圖像模型並確認 image-generation 支援。
  • 模型定價 — 按 token 與按張計費。