139 分组新版接入:香蕉 2.1、获取模型、文生图与图生图完整示例 →
Nano Banana · Adobe 4K
使用 Gemini 原生 GenerateContent 协议,支持 Flash 与 Pro 两个完整模型名、4K 文生图、单图参考和多图参考。
Gemini NativeAdobe 4KFlash / Pro文生图单图 / 多图参考Base64 图片
01 · 接入信息
API Host
鉴权请求头
x-goog-api-key: YOUR_API_KEY
生成端点
/v1beta/models/{MODEL}:generateContent
响应图片
inlineData.data(Base64)
**协议说明:**请求体始终是 JSON。参考图放在 contents[].parts[].inlineData 中,不使用 multipart,也不传 image[]。
02 · 两个示例模型
curl "https://yyds.seqnode.com/v1/models" \
-H "Authorization: Bearer YOUR_API_KEY"
| 模型 | 常用名称 | 定位 | 4K 参数 |
|---|---|---|---|
gemini-3.1-flash-image-preview |
Nano Banana 2 / Flash | 速度优先,适合批量草图和常规出图 | imageSize="4K" |
gemini-3-pro-image-preview |
Nano Banana Pro | 质量优先,适合细节、构图和多图融合 | imageSize="4K" |
**模型名必须完整:**本页示例使用以上两个 Preview 名称。不同 Key 的分组还可能开放非 Preview 或 Firefly 完整模型名,请以 GET /v1/models 的实际返回为准。
03 · Flash 文生图请求
curl "https://yyds.seqnode.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent" \
-H "x-goog-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data-binary '{
"contents": [{
"role": "user",
"parts": [{
"text": "极简产品插画:一只戴蓝色围巾的白色小狐狸站在浅灰背景中,柔和棚拍光线,画面居中,不要文字"
}]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {
"aspectRatio": "1:1",
"imageSize": "4K"
}
}
}'
04 · Pro 文生图请求
curl "https://yyds.seqnode.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
-H "x-goog-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data-binary '{
"contents": [{
"role": "user",
"parts": [{
"text": "极简产品插画:一只戴蓝色围巾的白色小狐狸站在浅灰背景中,柔和棚拍光线,画面居中,不要文字"
}]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {
"aspectRatio": "1:1",
"imageSize": "4K"
}
}
}'
05 · 请求参数
| 字段 | 必填 | 说明 |
|---|---|---|
contents |
是 | 对话内容数组。生图请求至少包含一个 role=user 的内容项。 |
parts[].text |
是 | 提示词。多图时明确写出“参考图 1”“参考图 2”的用途。 |
parts[].inlineData |
参考图请求必填 | mimeType 与纯 Base64 图片数据;不要带 Data URL 前缀。 |
responseModalities |
建议 | ["IMAGE"] 只返回图片;需要模型文字说明时使用 ["TEXT","IMAGE"]。 |
imageConfig.aspectRatio |
否 | 常用值:1:1、3:2、2:3、4:3、3:4、16:9、9:16、21:9。 |
imageConfig.imageSize |
是(本分组) | Adobe 4K 使用 4K。值区分大小写,字母 K 必须大写。 |
**4K 请求:**在 generationConfig.imageConfig 中同时传入 aspectRatio 与大写的 imageSize: "4K"。
06 · 单图参考
把提示词与参考图放进同一个 parts 数组。下面只展示请求体,端点中的 {MODEL} 替换为 §02 的任一模型。
{
"contents": [{
"role": "user",
"parts": [
{
"text": "保持参考图主体、姿势和构图,只把围巾改成红色,把背景改成浅蓝色,不要文字"
},
{
"inlineData": {
"mimeType": "image/jpeg",
"data": "BASE64_IMAGE_1"
}
}
]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {"aspectRatio": "1:1", "imageSize": "4K"}
}
}
已实测:gemini-3.1-flash-image-preview 使用一张 PNG 参考图返回 HTTP 200、STOP 和 JPEG 图片。
**MIME 必须匹配:**PNG 使用 image/png,JPEG 使用 image/jpeg,WebP 使用 image/webp。Base64 字符串中不要包含 data:image/...;base64,。
07 · 多图参考
每张参考图增加一个 inlineData。数组顺序就是提示词中的参考图顺序。
{
"contents": [{
"role": "user",
"parts": [
{
"text": "以参考图 1 的人物和构图为主体,只采用参考图 2 的服装与光影;保持面部特征,不要文字"
},
{
"inlineData": {
"mimeType": "image/png",
"data": "BASE64_IMAGE_1"
}
},
{
"inlineData": {
"mimeType": "image/jpeg",
"data": "BASE64_IMAGE_2"
}
}
]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {"aspectRatio": "16:9", "imageSize": "4K"}
}
}
已实测:gemini-3-pro-image-preview 使用两张 PNG 参考图返回 HTTP 200、STOP 和 JPEG 图片。
不要发送 multipart 摘要:{"parts":[{"field":"image[]"...}]} 是抓包工具的调试说明,不是 Gemini 请求体。这里的 parts 必须是上面这种 Gemini JSON 内容数组。
08 · Windows PowerShell 完整示例
$model = "gemini-3.1-flash-image-preview"
$imageBase64 = [Convert]::ToBase64String(
[IO.File]::ReadAllBytes((Resolve-Path ".\reference.jpg"))
)
$body = @{
contents = @(@{
role = "user"
parts = @(
@{ text = "保持主体不变,只把围巾改成红色" }
@{ inlineData = @{ mimeType = "image/jpeg"; data = $imageBase64 } }
)
})
generationConfig = @{
responseModalities = @("IMAGE")
imageConfig = @{ aspectRatio = "1:1"; imageSize = "4K" }
}
} | ConvertTo-Json -Depth 12 -Compress
$request = @{
Uri = "https://yyds.seqnode.com/v1beta/models/$model`:generateContent"
Method = "Post"
Headers = @{ "x-goog-api-key" = $env:YM2API_KEY }
ContentType = "application/json"
Body = $body
}
$result = Invoke-RestMethod @request
$imagePart = $result.candidates[0].content.parts |
Where-Object { $_.inlineData } |
Select-Object -First 1
$extension = if ($imagePart.inlineData.mimeType -eq "image/jpeg") { ".jpg" } else { ".png" }
[IO.File]::WriteAllBytes(
(Join-Path $PWD "result$extension"),
[Convert]::FromBase64String($imagePart.inlineData.data)
)
09 · 响应与图片保存
{
"candidates": [{
"content": {
"parts": [{
"inlineData": {
"mimeType": "image/jpeg",
"data": "/9j/4AAQSkZJRgABAQ..."
}
}]
},
"finishReason": "STOP"
}],
"usageMetadata": {
"promptTokenCount": 11,
"candidatesTokenCount": 1096,
"totalTokenCount": 1107
}
}
不要假定输出一定是 PNG。先读取 inlineData.mimeType,再决定保存扩展名;图片内容从 inlineData.data Base64 解码。
10 · 常见错误与处理
| 现象 | 通常原因 | 处理 |
|---|---|---|
401 |
Key 缺失、失效,或请求头名称错误 | 使用该分组的 Key,并发送 x-goog-api-key 或 Bearer 鉴权 |
404 Not Found |
模型名不属于此分组,或漏写 -preview |
复制 §02 返回的完整模型名 |
400 invalid argument |
JSON 层级、字段大小写、比例或尺寸值错误 | 对照 §03–§07;使用 generationConfig.imageConfig 和大写 4K |
没有 inlineData |
未请求 IMAGE,或内容被模型拒绝 |
加入 responseModalities:["IMAGE"],并检查 finishReason 与错误正文 |
| Base64 解码失败 | 数据被截断、附带 Data URL 前缀,或读取了文字 part | 选择含 inlineData 的 part,并直接解码其中的 data |
concurrency_limit |
当前生图队列已满 | 等待 10–30 秒后指数退避重试 |
11 · Adobe 4K 支持比例与像素
| 比例 | 4K 像素 | 适用 |
|---|---|---|
| 1:1 | 4096×4096 |
Flash / Pro |
| 3:2 / 2:3 | 5056×3392 / 3392×5056 |
Flash / Pro |
| 4:3 / 3:4 | 4800×3584 / 3584×4800 |
Flash / Pro |
| 5:4 / 4:5 | 4608×3712 / 3712×4608 |
Flash / Pro |
| 16:9 / 9:16 | 5504×3072 / 3072×5504 |
Flash / Pro |
| 21:9 | 6336×2688 |
Flash / Pro |
**比例参数:**只传比例字符串,例如 "16:9";像素由模型的 4K 档位决定,不需要另传宽高。
Gemini 原生字段可参考 Google Gemini 图片生成文档。
更新于 2026-09-14 · 2 号站独立文档
参考图支持范围(2026-09-16)
以下结果适用于 Banana 2 gemini-3.1-flash-image-preview、1K、1:1、Gemini generateContent。Banana Pro、2K/4K 未记录边界结果。
| 分组 | 支持范围 | 成图核验 |
|---|---|---|
| #142【YYY】banana 2 渠道A | 明确最多 14 张;15 张 HTTP 400,提示“参考图片数量超出上限(最多 14 张)” | 14 张成功,出现全部 1–14 编号 |
| #125【X】Banana 2/pro AS/AD 混组 | 已接收 15 张;尚未确认接口硬上限 | 15 张时仅出现前 10 个编号;14→10 张各档只出现前 6 个;9、7、6 张全部出现,8 张仅出现前 6 个 |
| #139【X】香蕉 2/pro Adobe 124k | 已接收 15 张;尚未确认接口硬上限 | 15→9 张各档只出现 1–6;8 张有一次全部出现,7 张仅出现前 6 个,6 张全部出现 |
#125 的结果随实际路由变化;#139 同样没有确定的有效参考图上限。漏项可能来自上游处理或模型生成过程,不能仅凭成图断定固定截断数量,也不能将 HTTP 200 标成“15 张全部有效”。6 张也不是所有复杂素材的效果保证。
每张参考图对应一个 contents[].parts[].inlineData;顺序与提示词中的参考图编号一致。n 不是 Gemini 原生参考图数量字段。多图任务请逐张说明用途,并检查成图是否遗漏素材。