作者注:详解 Nano Banana 2 图片生成 API 报错 not supported model for image generation 的根本原因,以及如何从 OpenAI 格式切换到 Google 原生 generateContent 格式正确调用
使用 Nano Banana 2 生成图片时遇到 not supported model for image generation 报错?这是目前开发者最常遇到的 Gemini 图片 API 调用问题之一。本文将介绍报错的根本原因和正确的调用方式,帮助你快速修复 Nano Banana 2 图片 API 报错。
核心价值: 读完本文,你将理解 Gemini 图片模型和 Imagen 模型的 API 调用差异,掌握 generateContent 端点的正确用法,3 步解决报错问题。

Nano Banana 2 图片 API 报错核心原因
| 要点 | 说明 | 解决方案 |
|---|---|---|
| 报错信息 | not supported model for image generation, only imagen models are supported | 切换到 generateContent 端点 |
| 根本原因 | OpenAI 格式端点只支持 Imagen 模型,不支持 Gemini 图片模型 | 使用 Google 原生 API 格式 |
| 正确端点 | /v1beta/models/{MODEL}:generateContent |
替换 /v1/images/generations |
| 必需参数 | responseModalities: ["TEXT", "IMAGE"] |
在 generationConfig 中设置 |
Nano Banana 2 图片 API 报错详解
当你使用 OpenAI 兼容格式的 /v1/images/generations 端点调用 Nano Banana 2(gemini-3.1-flash-image-preview)或 Nano Banana Pro(gemini-3-pro-image-preview)时,系统会返回以下错误:
not supported model for image generation, only imagen models are supported
(request id: 20260315043447253411115cvUiXJMF)
new_api_error convert_request_failed, 500
这个报错的核心原因在于:Gemini 图片模型和 Imagen 模型是两种完全不同架构的模型。
- Imagen 模型(如
imagen-3.0-generate-001)是专用图片生成模型,使用/v1/images/generations或:predict端点 - Gemini 图片模型(Nano Banana 系列)是多模态语言模型,能同时输出文字和图片,必须使用
:generateContent端点
简单来说,你用了"文生图专用通道"去调用一个"多模态对话模型",格式不匹配所以报错了。

Nano Banana 2 图片 API 正确调用格式
错误调用 vs 正确调用对比
| 对比项 | ❌ 错误方式(OpenAI 格式) | ✅ 正确方式(generateContent 格式) |
|---|---|---|
| API 端点 | /v1/images/generations |
/v1beta/models/{MODEL}:generateContent |
| 请求结构 | prompt + size + n 参数 |
contents + generationConfig 结构 |
| 响应格式 | 图片 URL | 内联 Base64 图片数据 |
| 支持模型 | DALL-E、Imagen 系列 | Gemini 图片模型(Nano Banana 系列) |
| 输出内容 | 仅图片 | 文字 + 图片(多模态输出) |
Nano Banana 2 图片 API 错误请求示例
以下是会导致报错的错误调用方式:
# ❌ 错误:使用 OpenAI 格式调用 Nano Banana 2
curl -X POST https://api.apiyi.com/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.1-flash-image-preview",
"prompt": "一只可爱的橘猫在阳光下打盹",
"size": "1024x1024",
"n": 1
}'
# 返回: not supported model for image generation
Nano Banana 2 图片 API 正确请求示例
以下是正确的 generateContent 格式调用方式:
# ✅ 正确:使用 Google 原生 generateContent 格式
curl -X POST https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [
{"text": "一只可爱的橘猫在阳光下打盹"}
]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"]
}
}'
🎯 技术提示: 通过 API易 apiyi.com 平台调用 Nano Banana 2,无需单独配置 Google Cloud 账号,使用统一的 API Key 即可直接调用 generateContent 端点。
Nano Banana 2 图片 API 快速上手
3 步修复 Nano Banana 2 图片 API 报错
第 1 步:更换 API 端点
将请求地址从 OpenAI 格式切换到 generateContent 格式:
# 错误端点
https://api.apiyi.com/v1/images/generations
# 正确端点(Nano Banana 2)
https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent
# 正确端点(Nano Banana Pro)
https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent
第 2 步:修改请求体结构
从 OpenAI 的 prompt + size 参数,改为 Google 原生的 contents + generationConfig 结构。关键参数:
contents.parts.text:图片描述文本generationConfig.responseModalities:必须设置为["TEXT", "IMAGE"]
第 3 步:处理响应数据
generateContent 返回的图片是 Base64 编码的内联数据,而非 URL。你需要从响应中提取并解码图片。
极简 Python 示例
import requests
import base64
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com" # API易统一接口
response = requests.post(
f"{BASE_URL}/v1beta/models/gemini-3.1-flash-image-preview:generateContent",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={
"contents": [{"parts": [{"text": "一只可爱的橘猫在阳光下打盹"}]}],
"generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}
}
)
result = response.json()
for part in result["candidates"][0]["content"]["parts"]:
if "inlineData" in part:
img_data = base64.b64decode(part["inlineData"]["data"])
with open("output.png", "wb") as f:
f.write(img_data)
print("图片已保存为 output.png")
elif "text" in part:
print("模型描述:", part["text"])
查看完整实现代码(含错误处理和宽高比设置)
import requests
import base64
import os
from typing import Optional
def generate_image(
prompt: str,
model: str = "gemini-3.1-flash-image-preview",
aspect_ratio: str = "1:1",
output_path: str = "output.png",
api_key: Optional[str] = None
) -> dict:
"""
使用 Nano Banana 2 generateContent 端点生成图片
Args:
prompt: 图片描述
model: 模型名称
aspect_ratio: 宽高比 (1:1, 16:9, 9:16, 4:3, 3:4)
output_path: 输出文件路径
api_key: API 密钥
Returns:
包含文件路径和模型描述的字典
"""
api_key = api_key or os.getenv("APIYI_API_KEY")
base_url = "https://api.apiyi.com" # API易统一接口
response = requests.post(
f"{base_url}/v1beta/models/{model}:generateContent",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
},
json={
"contents": [{"parts": [{"text": prompt}]}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": aspect_ratio}
}
},
timeout=60
)
if response.status_code != 200:
raise Exception(f"API 请求失败: {response.status_code} - {response.text}")
result = response.json()
candidates = result.get("candidates", [])
if not candidates:
raise Exception("未返回有效结果")
output = {"text": "", "image_path": ""}
for part in candidates[0]["content"]["parts"]:
if "inlineData" in part:
img_data = base64.b64decode(part["inlineData"]["data"])
with open(output_path, "wb") as f:
f.write(img_data)
output["image_path"] = output_path
elif "text" in part:
output["text"] = part["text"]
return output
# 使用示例
result = generate_image(
prompt="一幅水墨风格的山水画,远处有薄雾缭绕的群山",
model="gemini-3.1-flash-image-preview",
aspect_ratio="16:9",
output_path="landscape.png"
)
print(f"图片已保存: {result['image_path']}")
print(f"模型描述: {result['text']}")
建议: 通过 API易 apiyi.com 获取 API Key,平台提供免费测试额度,支持 Nano Banana 2 和 Nano Banana Pro 两种 Gemini 图片模型的 generateContent 调用。
Nano Banana 2 图片 API 模型对比
了解不同图片生成模型的 API 调用方式差异,可以帮助你避免类似的格式错误:
| 模型 | 代号 | API 端点 | 调用格式 | 可用平台 |
|---|---|---|---|---|
| Nano Banana 2 | gemini-3.1-flash-image-preview | :generateContent |
Google 原生格式 | API易等平台 |
| Nano Banana Pro | gemini-3-pro-image-preview | :generateContent |
Google 原生格式 | API易等平台 |
| Imagen 3 | imagen-3.0-generate-001 | /v1/images/generations 或 :predict |
OpenAI 兼容格式 | API易等平台 |
| DALL-E 3 | dall-e-3 | /v1/images/generations |
OpenAI 格式 | API易等平台 |
Nano Banana 2 图片 API 关键参数说明

generateContent 端点支持丰富的图片生成参数:
| 参数 | 说明 | 是否必需 | 示例值 |
|---|---|---|---|
contents.parts.text |
图片描述提示词 | ✅ 必需 | "一只橘猫在阳光下" |
responseModalities |
响应模态设置 | ✅ 必需 | ["TEXT", "IMAGE"] |
imageConfig.aspectRatio |
图片宽高比 | 可选 | "1:1", "16:9", "9:16" |
contents.parts.inlineData |
参考图片(图生图) | 可选 | Base64 图片数据 |
💡 重要提示:
responseModalities必须同时包含"TEXT"和"IMAGE",仅设置["IMAGE"]会导致请求失败。这是因为 Gemini 图片模型是多模态模型,始终同时输出文字描述和图片。
常见问题
Q1: 为什么 Nano Banana 2 不能用 OpenAI 格式调用?
Nano Banana 2(gemini-3.1-flash-image-preview)是基于 Gemini 的多模态语言模型,它的图片生成能力是通过"对话生成"实现的,而非专用的"文生图接口"。OpenAI 格式的 /v1/images/generations 端点专为 DALL-E 和 Imagen 等专用图片生成模型设计,无法处理 Gemini 模型的多模态请求结构。通过 API易 apiyi.com 平台调用时,需要根据模型类型选择对应的端点格式。
Q2: Nano Banana 2 和 Nano Banana Pro 图片 API 有什么区别?
两者都使用 generateContent 端点,调用格式完全相同。主要区别在于:
- Nano Banana 2(Flash 版):生成速度更快,约 3-5 秒,适合批量生成和快速原型
- Nano Banana Pro:图片质量更高,文字渲染准确率达 94%,适合精细设计和商业用途
在 API易 apiyi.com 平台上两个模型均可使用,只需在端点 URL 中切换模型名称即可。
Q3: generateContent 返回的图片数据如何处理?
与 OpenAI 格式返回图片 URL 不同,generateContent 返回的是 Base64 编码的内联图片数据。处理步骤:
- 从响应 JSON 的
candidates[0].content.parts中找到包含inlineData的部分 - 获取
inlineData.data字段的 Base64 字符串 - 使用
base64.b64decode()解码后保存为图片文件 inlineData.mimeType字段会告诉你图片格式(通常为image/png)
总结
Nano Banana 2 图片 API 报错的核心要点:
- 报错原因明确:使用
/v1/images/generations(OpenAI 格式)调用 Gemini 图片模型会触发 "not supported model" 错误 - 切换到 generateContent:正确端点为
/v1beta/models/gemini-3.1-flash-image-preview:generateContent - 设置 responseModalities:必须在 generationConfig 中包含
["TEXT", "IMAGE"],否则无法生成图片
遇到 Nano Banana 2 API 报错时,核心就是一句话:把 OpenAI 的图片生成端点换成 Google 原生的 generateContent 端点。
推荐通过 API易 apiyi.com 快速测试 Nano Banana 2 和 Nano Banana Pro,平台提供免费额度,支持 generateContent 格式直接调用,无需配置 Google Cloud 账号。
📚 参考资料
-
Google Gemini 图片生成文档: Gemini API 官方图片生成指南
- 链接:
ai.google.dev/gemini-api/docs/image-generation - 说明: 包含 generateContent 端点的完整参数说明和示例
- 链接:
-
Google generateContent API 参考: Gemini API 内容生成接口文档
- 链接:
ai.google.dev/api/generate-content - 说明: generateContent 端点的请求和响应结构详解
- 链接:
-
Google Gemini OpenAI 兼容性文档: Gemini 与 OpenAI 格式的兼容说明
- 链接:
ai.google.dev/gemini-api/docs/openai - 说明: 了解哪些功能支持 OpenAI 兼容格式,哪些需要原生格式
- 链接:
作者: APIYI 技术团队
技术交流: 欢迎在评论区讨论 Nano Banana 2 图片 API 调用问题,更多资料可访问 API易 docs.apiyi.com 文档中心
