Nano Banana 2.1 API
Google Nano Banana 2.1——最新的 Nano Banana 图像生成与编辑模型。据 Google 介绍,它相比此前的模型全面提升,在视觉设计和主体一致性方面进步明显,同时提示词遵循更精准,文字渲染也更干净。
两个端点:google/nano-banana-2.1/text-to-image,以及支持最多 14 张参考图的 google/nano-banana-2.1/edit。提供 14 种宽高比(包括 1:4、4:1、1:8 和 8:1)、1K / 2K / 4K 输出、可选网页与图片搜索以及 PNG 或 JPEG 输出——请求结构与 Nano Banana 2 相同。
/filters:quality(82)/examples/48cc1e621e734eeba0ddda5004aa805d/b94abaf6-4369-4f65-bf93-e4da93382a36-96022c930e6b.webp)
概览
关于 Nano Banana 2.1 API
Nano Banana 2.1 能做什么、它在 Google 模型阵容中的定位,以及团队选择它的原因。
Nano Banana 2.1 是 Google 推出的图像生成与编辑模型,可通过 WaveSpeedAI REST API 使用。Google Nano Banana 2.1——最新的 Nano Banana 图像生成与编辑模型。据 Google 介绍,它相比此前的模型全面提升,在视觉设计和主体一致性方面进步明显,同时提示词遵循更精准,文字渲染也更干净。
两个端点:google/nano-banana-2.1/text-to-image,以及支持最多 14 张参考图的 google/nano-banana-2.1/edit。提供 14 种宽高比(包括 1:4、4:1、1:8 和 8:1)、1K / 2K / 4K 输出、可选网页与图片搜索以及 PNG 或 JPEG 输出——请求结构与 Nano Banana 2 相同。
WaveSpeedAI 上的 Nano Banana 2.1 系列提供 2 个 REST 端点,涵盖 Image-To-Image, Text-To-Image 个工作流。每个变体都有各自的定价、参数选项和示例输出——请选择与你的输入模态和生产约束相匹配的那一个,或使用同一个 API 密钥调用多个变体,组合成多步骤流水线。
使用与 WaveSpeedAI 上其他 1,000 多个 AI 模型相同的 API 密钥、账单账户和速率限制来运行 Nano Banana 2.1。无需单独对接供应商,无需各家 SDK,也无需应对各家不同的速率限制——一次集成即可覆盖从文生图、文生视频到音频合成、3D 生成、放大和编辑的全部能力。
规格
Nano Banana 2.1 API 的能力与发布状态
开发者在选择 API 之前会搜索的模型细节:可用性、预期输出时长、参考素材支持情况,以及当前可用的在线替代方案。
端点
2 个版本
文生图与编辑;编辑最多支持 14 张参考图。
分辨率
1K / 2K / 4K
三档输出;默认 1K。
宽高比
14
1:1、3:2、2:3、3:4、4:3、4:5、5:4、9:16、16:9、21:9、1:4、4:1、1:8、8:1。
输出
PNG / JPEG
每次请求可选;可选网页与图片搜索增强。
端点
全部 Nano Banana 2.1 API 端点
WaveSpeedAI 现已提供 2 个 Nano Banana 2.1 端点——请选择适合你工作流的变体。
/filters:quality(82)/media/images/1791312805430502065_dlG47iBV.webp)
Nano Banana 2.1 Edit
Google Nano Banana 2.1 Edit is the latest Nano Banana image editing model, with gains in visual design, subject consistency and prompt adherence, up to 14 reference images and 1K to 4K output. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
/filters:quality(82)/media/images/1791312803887061677_SluDNW5I.webp)
Nano Banana 2.1 Text To Image
Google Nano Banana 2.1 is the latest Nano Banana image generation model, with gains in visual design, subject consistency and prompt adherence, cleaner text rendering, 1K to 4K output and optional web search. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
示例
看看 Nano Banana 2.1 的实际效果
由 Nano Banana 2.1 API 生成的真实输出。悬停在任意视频上即可预览,点击可打开全尺寸查看器。
使用方法
如何使用 Nano Banana 2.1 API
从注册到完成一次生成,只需四步。完整的 Python、Node.js 和 cURL 示例见下方的 API 部分。
- 01
获取 API 密钥
注册 WaveSpeedAI 账号,并从控制台复制你的 API 密钥。新账号附带免费体验额度——足够在开始计费前把 Playground 运行几十次。
- 02
提交预测
把你的输入以 JSON 形式 POST 到 https://api.wavespeed.ai/api/v3/google/nano-banana-2.1/text-to-image。端点会立即返回预测 ID——生成是异步的,因此推理期间你无需保持连接。
- 03
轮询完成状态
GET https://api.wavespeed.ai/api/v3/predictions/{request_id}/result。状态为 completed 时返回输出;状态为 failed、cancelled、timeout 或 deleted 时以错误终止;其他任何状态都继续轮询。
- 04
读取输出 URL
状态变为 "completed" 后,从 data.outputs[0] 读取 URL。该 URL 指向 WaveSpeedAI CDN 上你生成的媒体——具体是图片、视频、音频还是 3D 文件,取决于你调用的 Nano Banana 2.1 变体。
应用场景
用 Nano Banana 2.1 可以构建什么
开发者和创作者使用 Nano Banana 2.1 API 的常见工作流。
注重设计的视觉内容
Google 将视觉设计列为 2.1 最大的提升之一。适用于海报、社交媒体图片、包装样机,以及构图和字体排版与主体同样重要的版式设计。
多次编辑中保持主体一致
主体一致性是另一项核心提升。google/nano-banana-2.1/edit 在你更换场景、服装或风格时,仍能让人物、产品和角色保持可辨识,每次调用最多支持 14 张参考图。
复杂的多要素提示词
提示词遵循更精准,意味着包含多个主体、位置和风格约束的长指令会被更忠实地执行。把每项要求都写清楚,而不是依赖后续编辑。
清晰的图内文字
标签、招牌和标题的渲染比以往更清晰。为菜单、横幅和产品标签生成文字时,把确切文案放在引号中,并说明它的位置。
基于最新信息生成
设置 enable_web_search,让模型查询最新的真实世界信息——新近的产品、地点或事件;设置 enable_image_search,让模型在生成前查看真实事物的样子。
最高 4K 的极端宽高比
14 种宽高比(包括 1:4、4:1、1:8 和 8:1)覆盖竖幅横幅、宽幅页头和摩天楼广告,支持 1K、2K 或 4K 输出。
技巧
Nano Banana 2.1 提示词技巧
让 Nano Banana 2.1 输出更好结果的实用建议——总结自生产流水线中各类图像模型都适用的做法。
- 01
把需求完整写清楚
2.1 能更准确地遵循冗长、多要素的提示词。在一条提示词中描述主体、构图、光线、风格和所有文字,而不是在后续编辑中修补细节。
- 02
引用确切文字
对于招牌、标签和标题,把原文放在引号中,并说明它应出现的位置(“顶部标题”“右下角价签”)。
- 03
编辑时说明要保留什么
使用 google/nano-banana-2.1/edit 时,先描述要做的修改,再说明哪些必须保持不变——“把背景换成黄昏时的海滩,保留人物、姿势和光线”。
- 04
按顺序指代参考图
发送多张参考图时,把主体放在第一张,其余按顺序指代(“图 2 中的夹克”)。
- 05
1K 出草稿,2K 或 4K 出成品
先用 1K 迭代,再以交付分辨率重新运行选定的提示词。只有当提示词依赖最新的真实世界信息或真实事物的样子时,才开启网页或图片搜索。
定价
Nano Banana 2.1 API 定价
按输出计费。最终费用会随你在各变体 Playground 中设置的参数(分辨率、时长、输出数量、参考素材)而变化。
| 端点 | 类型 | 起步价 |
|---|---|---|
| google/ | image-to-image | $0.05 |
| google/ | text-to-image | $0.05 |
API
调用 Nano Banana 2.1 API
在 wavespeed.ai/accesskey 注册并获取 API 密钥,然后通过 REST 提交预测。Playground 可以为任意输入组合生成可直接粘贴的示例代码。
POSThttps://api.wavespeed.ai/api/v3/google/nano-banana-2.1/text-to-image
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/google/nano-banana-2.1/text-to-image" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $WAVESPEED_API_KEY" \
-d '{
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"aspect_ratio": "1:1",
"resolution": "1k",
"enable_web_search": false,
"enable_image_search": false,
"output_format": "png"
}')
TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/$PREDICTION_ID/result"
# 2. Poll until the prediction finishes.
while true; do
RESPONSE=$(curl --silent --show-error --fail-with-body "$RESULT_URL" \
-H "Authorization: Bearer $WAVESPEED_API_KEY")
RESULT=$(printf '%s' "$RESPONSE" | jq 'if has("data") then .data else . end')
STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
case "$STATUS" in
completed) printf '%s\n' "$RESULT" | jq '.outputs'; break ;;
failed|cancelled|timeout|deleted) printf '%s\n' "$RESULT" | jq . >&2; exit 1 ;;
*) sleep 2 ;;
esac
doneconst submitUrl = "https://api.wavespeed.ai/api/v3/google/nano-banana-2.1/text-to-image";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');
async function requestJson(url, options = {}) {
const response = await fetch(url, options);
if (!response.ok) throw new Error(await response.text());
return response.json();
}
// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
method: "POST",
headers: {
"Authorization": `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"aspect_ratio": "1:1",
"resolution": "1k",
"enable_web_search": false,
"enable_image_search": false,
"output_format": "png"
}),
});
const task = body.data ?? body;
const resultUrl = `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;
// 2. Poll until the prediction finishes.
while (true) {
const resultBody = await requestJson(resultUrl, {
headers: { "Authorization": `Bearer ${apiKey}` },
});
const result = resultBody.data ?? resultBody;
if (result.status === "completed") {
console.log(result.outputs);
break;
}
if (["failed", "cancelled", "timeout", "deleted"].includes(result.status)) throw new Error(JSON.stringify(result));
await new Promise(resolve => setTimeout(resolve, 2000));
}import json
import os
import time
from urllib.request import Request, urlopen
api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
"prompt": "A cinematic shot of a city at sunset, soft golden light",
"aspect_ratio": "1:1",
"resolution": "1k",
"enable_web_search": False,
"enable_image_search": False,
"output_format": "png"
}
def request_json(url, data=None):
request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
with urlopen(request) as response:
return json.load(response)
# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/google/nano-banana-2.1/text-to-image", json.dumps(payload).encode())
task = body.get("data", body)
result_url = f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"
# 2. Poll until the prediction finishes.
while True:
result_body = request_json(result_url)
result = result_body.get("data", result_body)
status = result.get("status")
if status == "completed":
print(result.get("outputs", []))
break
if status in {"failed", "cancelled", "timeout", "deleted"}:
raise RuntimeError(result)
time.sleep(2)对比
Nano Banana 2.1 与其他方案对比
在 WaveSpeedAI 上,何时应选择 Nano Banana 2.1 而不是同类模型。
Nano Banana 2.1 对比 Nano Banana 2
参数几乎相同,切换只需更换模型 ID。2.1 是 Google 更新的模型,视觉设计、主体一致性和提示词遵循都更好;Nano Banana 2 则额外提供 0.5K 档位和 Fast 版本。
Nano Banana 2.1 对比 Nano Banana Pro
Nano Banana Pro 仍是高端档位,提供 Ultra 和 Multi 版本。Nano Banana 2.1 则把 Google 的最新改进带到了更快、成本更低的 Flash 系列。
Nano Banana 2.1 对比 GPT Image 2.5
GPT Image 2.5 提供五个质量等级和两个档位。Nano Banana 2.1 则以网页搜索增强、最多 14 张参考图,以及最窄可达 1:8 的极端宽高比作为回应。
常见问题
Nano Banana 2.1 API — 常见问题
定价、许可、集成——关于在 WaveSpeedAI 上运行 Nano Banana 2.1 的常见问题。
Nano Banana 2.1 API 是什么?
Nano Banana 2.1 是 Google 的图像生成模型,在 WaveSpeedAI 上以 REST API 形式提供。Google Nano Banana 2.1——最新的 Nano Banana 图像生成与编辑模型。据 Google 介绍,它相比此前的模型全面提升,在视觉设计和主体一致性方面进步明显,同时提示词遵循更精准,文字渲染也更干净。你可以通过编程方式调用它,也可以在上方链接的 Playground 中试用。
如何调用 Nano Banana 2.1 API?
注册 WaveSpeedAI 账号,从 /accesskey 复制你的 API 密钥,然后把输入以 JSON 形式 POST 到 https://api.wavespeed.ai/api/v3/google/nano-banana-2.1/text-to-image。端点会返回预测 ID。从大约每 2 秒一次开始轮询结果端点,长耗时任务可适当拉长间隔,并在任何终止状态时停止。上方有面向生产环境的 Python / Node.js / cURL 示例。
Nano Banana 2.1 API 的费用是多少?
Nano Banana 2.1 每次调用 $0.05 起。实际费用会随你设置的参数(分辨率、时长、输出数量、参考素材)而变化。Playground 中“生成”按钮旁的实时费用预览会显示你当前输入对应的准确价格。
有哪些 Nano Banana 2.1 变体可用?
WaveSpeedAI 托管了 2 个已上线的 Nano Banana 2.1 端点:google/nano-banana-2.1/edit, google/nano-banana-2.1/text-to-image。每个变体都有自己的 Playground 页面和定价。
Nano Banana 2.1 的输出可以商用吗?
商用权利遵循 Google 的模型许可。大多数 Google 模型允许商用输出;具体许可摘要请查看各模型的 Playground 页面,平台层面的条件请参阅 WaveSpeedAI 的服务条款。
为什么要在 WaveSpeedAI 上使用 Nano Banana 2.1,而不是直接对接?
一个 API 密钥、一个账单账户,即可使用 Nano Banana 2.1 以及来自其他提供方的 1,000 多个 AI 模型。无需逐家配置 SDK,无需应对各自独立的速率限制,也无需为每家重写集成代码。价格通常与 Google 直接提供的 API 持平或更低。
提供方
关于 Google
Nano Banana 2.1 及 WaveSpeedAI 上 Google 更多模型背后的团队。
Google 的 AI 工作主要在 Google DeepMind 和 Google Research 进行。其图像和视频模型——Imagen、Veo,以及 Nano Banana(Gemini 3 Image)等 Gemini 系列多模态模型——与更广泛的 Gemini 产品线共享架构和训练基础设施。其输出以准确的文字渲染、广泛的风格覆盖和商用级许可著称。
在 WaveSpeedAI 上用 Nano Banana 2.1 开始构建
注册即送免费体验额度。一个 API 密钥,即可使用来自 Google 及其他所有提供方的 1,000 多个 AI 模型。
/filters:quality(82)/examples/c8d18eb9a94844e7ad929e6f2329e1c9/1aeb9d76-f6ad-467f-afa6-ad09693e5911-65bcec8e8edd.webp)
/filters:quality(82)/examples/2652743d9a2d40df8488300aa282872a/b3569273-299c-4046-b247-04f2735ee0b7-9f888ceafb9b.webp)
/filters:quality(82)/examples/28b41000bf134255a3840b68bac9d5e9/1a29ca9c-d88d-493f-a386-f0a0ba3fa37b-2a450c14afd4.webp)
/filters:quality(82)/examples/99da63b333b1471187f3edf2a74c16fe/5bc79c97-2253-49e3-a0c0-a49679986dcf-1ea4d9e65faf.webp)