Amux

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。

POSThttps://gateway.amux.ai/v1beta/models/google/gemini-nano-banana-2.1:generateContent

鉴权

header
Authorizationstring必填

请求

application/json
contentsarray<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_uristring

Files 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
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
      }
    ]
  }
}