Generate image
最近更新:2026年10月8日
用 google/gemini-nano-banana-2.1 出图,Gemini 原生端点,官方 SDK 直接可用。
google/gemini-nano-banana-2.1 的出图调用。走 Gemini 原生的 generateContent,
与对话调用同一条地址,官方 SDK 把 base URL 指过来即可。
它是 Nano Banana 2 的后继:画质、提示词遵循、多轮角色一致性与文字渲染都有提升。
分辨率从 1K 起步,不再有 512。
https://gateway.amux.ai/v1beta/models/google/gemini-nano-banana-2.1:generateContent鉴权
headerAuthorizationstring必填请求
application/jsoncontentsarray<object>必填提示词与参考素材。文本在 parts[].text;参考素材(图片、视频、PDF)内联放在 parts[].inline_data,或以链接放在 parts[].file_data。有参考素材即为图生图,端点不变。
›contentsarray<object>
role"user" | "model"说话方。user 是你,model 是模型此前的回复。单轮请求可以省略。
partsarray<object>这一轮的片段,按给出的顺序生效。文本与参考图可以混在同一轮里。
›partsarray<object>
textstring文本片段。同一轮里多个 text 会按顺序拼接。
inline_dataobject内联的参考素材:图片、视频或 PDF。每次请求合计 100 MB 以内,单个 PDF 50 MB 以内。更大的文件请用 file_data。
›inline_dataobject
mime_typestring素材的媒体类型,如 image/png、image/jpeg、video/mp4、application/pdf。
datastring素材字节的 base64,不含 data:image/png;base64, 前缀。带前缀会被上游当作无效文件。
file_dataobject以链接提供的参考素材,由上游去取。适合大文件。
›file_dataobject
mime_typestring素材的媒体类型,写法同 inline_data.mime_type。
file_uristringFiles API 的地址,或公网可访问的 HTTPS 链接(单个 15 MB 以内)。取不到时由上游报错。
generationConfigobject必填生成参数。与出图相关的是 responseModalities 与尺寸控制。 尺寸控制有 imageConfig 与 responseFormat.image 两种等价写法, Google 在不同版本的文档中分别采用过其中一种,Amux 两者均支持; 同时提供时以 imageConfig 为准,按字段逐项覆盖。
›generationConfigobject
responseModalitiesarray<"TEXT" | "IMAGE">必填必填 ["TEXT", "IMAGE"]。缺了它这条端点只回文本。
responseFormatobject产物格式。图像相关的在 image 下。
›responseFormatobject
imageobject出图的尺寸控制。两项都可以省略,省略时由上游取默认。
›imageobject
aspectRatio"1:1" | "1:4" | "1:8" | "2:3" | "3:2" | "3:4" | "4:1" | "4:3" | "4:5" | "5:4" | "8:1" | "9:16" | "16:9" | "21:9"画面比例。这个模型接受下列 14 种比例。超出范围的值会被丢弃并记入 amux.notes,模型随即使用其默认值;本端点与 /v1/images/*、/v1/tasks 行为一致。
imageSize"1K" | "2K" | "4K"分辨率档位。超范围时的处理同 aspectRatio。
toolsarray<object>联网检索。取值 [{ "google_search": {} }]。按检索次数计费,实际条数见响应的 groundingMetadata.webSearchQueries。
响应
200response生成结果。图与文本在 parts 里交错出现。
出图的开关
generationConfig.responseModalities 必须写成 ["TEXT", "IMAGE"]。
缺了它,同一条端点只返回文本。
这个模型的取值范围
比例(14 种):
1:1 · 2:3 / 3:2 · 3:4 / 4:3 · 4:5 / 5:4 · 9:16 / 16:9 · 21:9 · 1:4 / 4:1 · 1:8 / 8:1
分辨率:1K · 2K · 4K,不传时为 1K
超出范围的取值会被丢弃并记入 amux.notes,模型随即使用自己的默认值。
这条原生端点与 OpenAI 兼容的图像端点、
Amux Tasks 共用同一条出图管线,三者行为一致。
OpenAI 风格的像素串 size(例如 1024x1024)会被折算成比例与档位,
折算范围收窄到上面这些取值,折算有损时记入 amux.notes。
Gemini 原生请求体里没有这个字段,按原生写法调用时直接写比例与档位即可。
参考素材
图生图与文生图共用这条端点,把参考素材放进 contents[].parts 即可。
除了图片,这个模型还接受视频与 PDF——比如按一段视频的画风出图,或按 PDF 里的产品说明出图。
两种给法:
- 内联:
inline_data,data是不含data:前缀的原始 base64,mime_type写实际类型 (如image/png、video/mp4、application/pdf)。每次请求合计 100 MB 以内,其中单个 PDF 50 MB 以内,超出直接拒绝。 - 链接:
file_data,file_uri写 Files API 的地址或公网可访问的 HTTPS 链接,mime_type同上。 公网链接单个 15 MB 以内,由上游去取,取不到时上游报错。大文件建议用这种方式。
参考图最多 14 张,其中物体参考最多 10 张、角色参考最多 4 张。
图片、视频、PDF 以外的类型会照样转发,并在 amux.notes 里提示。
思考
这个模型会先思考再出图,档位有 minimal、medium、high 三档,默认 medium。
原生端点上写在 generationConfig.thinkingConfig.thinkingLevel,原样透传给上游。
思考越深,构图与文字越稳,耗时与思考 token 也越多。
成本构成
计费口径随供应商而定:同一个模型,有的供应商按 token 计,有的按张计,
以模型页上该供应商的价格表为准。三条调用路径(本端点、/v1/images/*、/v1/tasks)
共用同一条出图管线,同一个供应商在三者上的计费口径一致。
按 token 计时,图像 token 与文本 token 单价不同——两者在响应的
usageMetadata.candidatesTokensDetails 里按模态分开,账单据此分项计费,
不会把图像 token 按文本价计。思考 token 按文本输出计,视频与 PDF 的 token 按文本输入计。
一张图消耗的 token 数由分辨率决定:1K 1120,2K 1680,4K 3780。
具体单价见模型页与按量计费。 这里不写数字:供应商与折扣都会调整,抄一份在文档里迟早和账单对不上。
联网检索
tools: [{ "google_search": {} }] 可让模型在出图前检索,适合「按当前事实作图」这类需求。
SDK 序列化出的驼峰 googleSearch 同样接受。经
OpenAI 兼容的图像端点或 Amux Tasks 调用时,
等价写法是 web_search: true。
计费按检索次数,一次调用可能发起多条查询——次数取响应里
candidates[].groundingMetadata.webSearchQueries 去重后的条数,空查询不计。
不支持流式
Gemini 的流式是换动作(:streamGenerateContent),而官方文档未给出图像流式的语法,
因此这个模型上的流式请求会被拒绝。请去掉流式后重试。
一次调用返回一张图,请求体中没有批量字段。
其他调用方式
这个模型同样可以通过 OpenAI 兼容的图像端点 与 Amux Tasks 调用。 经过协议转换的路径上,本页列出的取值范围同样生效。
错误
错误按 Gemini 的错误体形状返回,status 取值与重试语义见错误与重试。
curl https://gateway.amux.ai/v1beta/models/google/gemini-nano-banana-2.1:generateContent \
-H "x-goog-api-key: $AMUX_API_KEY" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "<string>",
"inline_data": {
"mime_type": "image/png",
"data": "<string>"
},
"file_data": {
"mime_type": "video/mp4",
"file_uri": "https://example.com/clip.mp4"
}
}
]
}
],
"generationConfig": {
"responseModalities": [
"TEXT",
"IMAGE"
],
"responseFormat": {
"image": {
"aspectRatio": "1:1",
"imageSize": "1K"
}
}
},
"tools": [
{}
]
}'{
"candidates": [
{
"content": {
"parts": [
{
"text": "<string>",
"inlineData": {
"mimeType": "image/png",
"data": "<string>"
}
}
]
}
}
],
"usageMetadata": {
"promptTokenCount": 0,
"candidatesTokenCount": 0,
"totalTokenCount": 0,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 0
}
],
"candidatesTokensDetails": [
{
"modality": "IMAGE",
"tokenCount": 0
}
]
}
}