要点
统一 API 是用一个入口使用多家厂商模型的 API,Rendergrid 就是这样的:一个 API 密钥、一个余额、同一种请求格式,用于 Google 和 OpenAI 的模型。如果你需要的模型或参数 Rendergrid 里没有、需要 USDT 以外的支付方式,或者需要有合同约束的服务保证,就直接去看厂商自己的 API:Rendergrid 没有服务等级协议(SLA),见使用条款。Google 和 OpenAI 的密钥、限额和支付条件,本文不替它们转述,请以厂商自己的页面为准。
Nano Banana 2.1 的 1K 图片在 Rendergrid 的价格是 $0.02,Google 的官方价格见下文的对照表。价格核对日期:。
我们到底比较什么?
我们只比较价格;密钥、限额和支付方式,我们告诉你该向厂商核实什么。
Rendergrid 按自己的文档写:价格、密钥、限额和支付方式,都照 Rendergrid 文档的说法描述。
官方价格只引用 Google 的:Google 的单张价格取自它自己的页面,OpenAI 的价格只给出链接;两家的密钥、限额和支付条件,我们不转述。
图片只来自 Rendergrid:三次请求都发给 Nano Banana 2.1,分辨率 1K,宽高比 1:1,各一次尝试。这些提示词没有直接发给过厂商。
不比速度和质量:三张图片不足以支撑这样的比较。
一张图片多少钱?
在 Rendergrid,价格取决于模型和分辨率。Nano Banana 2.1 的 1K、2K、4K 价格分别是 $0.02、$0.03 和 $0.04;Nano Banana Pro 分别是 $0.04、$0.04 和 $0.07。金额在接收请求时扣除,请求失败则立即退回余额,详见这篇讲请求失败退款的文章。
下面两张表把 Google 的官方单张价格放在 Rendergrid 的价格旁边。表中是 Google 的标准价格,不含批量模式。
| 分辨率 | Google 官方价格 | Rendergrid | 节省 | $10 可生成 |
|---|---|---|---|---|
| 1K | $0.0336 | $0.02 | 40% | 500 张图片 |
| 2K | $0.0504 | $0.03 | 40% | 333 张图片 |
| 4K | $0.113 | $0.04 | 64% | 250 张图片 |
| 分辨率 | Google 官方价格 | Rendergrid | 节省 | $10 可生成 |
|---|---|---|---|---|
| 1K | $0.134 | $0.04 | 70% | 250 张图片 |
| 2K | $0.134 | $0.04 | 70% | 250 张图片 |
| 4K | $0.24 | $0.07 | 70% | 142 张图片 |
OpenAI 的官方价格因图片的尺寸和质量档位而异。要对照 OpenAI 的价格,先弄清它按哪个尺寸、哪个质量档位报价,官方页面见文末的来源。
各分辨率的价格,见 Nano Banana 2.1 API 的价格文章和 Nano Banana Pro API 的价格文章;所有模型的价格在价格页。
Rendergrid 的密钥和限额 是怎样的?
Rendergrid 的 API 密钥一个就能用于账号下的所有模型:它由前缀 rg_live_ 和另外 40 个字符组成。完整的密钥只在创建时显示一次,我们只保存它的指纹,所以丢失的密钥无法找回,只能新建。一个账号最多可以有 50 个有效密钥。
密钥本身没有单独的权限,也没有自己的请求速率。能为单个密钥设置的只有月度消费限额:这是硬性限制,用尽后,使用该密钥的新生成请求会收到 402。同样的月度限额也可以设在整个账号上。
请求速率的默认值对任何账号都一样,并由账号下的所有密钥共用:每分钟 120 次请求,队列中或处理中的任务共 100 个。同一个任务的状态,用同一个密钥查询时,每 5 秒最多一次。超出这些限制时,API 返回 429;增加密钥不会提高它们。如果不够用,请联系技术支持,因为具体账号的限额可能不同。怎样避开这些限制,见这篇讲错误 429 的文章。
怎样为图片付款?
Rendergrid 的余额以美元计,只能用 USDT 充值:在控制台的“余额与充值”页面中充值,或通过经理充值。网络可选 Tron (TRC20)、BNB Chain (BEP20) 或 Solana (SOL)。金额由你选择,到账的正是这个金额:支付服务的手续费由我们承担,转账本身的网络手续费由你发送所用的钱包支付。支付窗口有时限;大额充值还会在余额上加一笔奖励,条件见“USDT 充值”页面。没有订阅,资金只花在成功生成的图片上。
如果你需要 USDT 以外的支付方式,Rendergrid 满足不了:充值只能用 USDT,在控制台的“余额与充值”页面中充值,或通过经理充值。请到厂商的页面上核实它支持哪些支付方式。
请求和结果 长什么样?
向 Rendergrid 发请求的方式对所有模型都一样:POST /images/generate,字段是 model、prompt、resolution 和 aspect_ratio。要换模型,把 model 换成另一个即可,前提是新模型支持同样的分辨率和宽高比,否则请求会在扣费前返回 400。下面是第一张图片的请求。
# 需要 bash、curl 和 uuidgen。每个请求使用一个幂等键。 IDEMPOTENCY_KEY="$(uuidgen)" || exit 1 curl --fail-with-body --max-time 30 \ -X POST https://api.rendergrid.io/ api/ public/ v1/ images/ generate \ -H "Authorization: Bearer $RENDERGRID_API_KEY" \ -H "Content-Type: application/json" \ -H "X-Idempotency-Key: $IDEMPOTENCY_KEY" \ -d '{ "model": "nano-banana-2.1", "prompt": "象牙白无缝背景上放一只绿色陶瓷杯,杯把朝右。镜头接近杯口高度,略带角度。左侧柔光与短阴影衬出釉面轻微起伏。杯子完整居中,周围空间宽松。不出现文字、标志、人物或水印。", "resolution": "1K", "aspect_ratio": "1:1" }'
import os import uuid import requests key = os.environ["RENDERGRID_API_KEY"] payload = { "model": "nano-banana-2.1", "prompt": "象牙白无缝背景上放一只绿色陶瓷杯,杯把朝右。镜头接近杯口高度,略带角度。左侧柔光与短阴影衬出釉面轻微起伏。杯子完整居中,周围空间宽松。不出现文字、标志、人物或水印。", "resolution": "1K", "aspect_ratio": "1:1", } response = requests.post( "https://api.rendergrid.io/ api/ public/ v1/ images/ generate", headers={ "Authorization": f"Bearer {key}", # 每个请求使用新的值;重试时使用同一个值 "X-Idempotency-Key": str(uuid.uuid4()), }, json=payload, timeout=(10, 120), ) response.raise_for_status() creation = response.json() print(creation["id"], creation["status"], creation["cost"])
// Node.js 22+,文件扩展名为 .mjs import { randomUUID } from "node:crypto"; const API = "https://api.rendergrid.io/ api/ public/ v1"; const prompt = "象牙白无缝背景上放一只绿色陶瓷杯,杯把朝右。镜头接近杯口高度,略带角度。左侧柔光与短阴影衬出釉面轻微起伏。杯子完整居中,周围空间宽松。不出现文字、标志、人物或水印。"; const response = await fetch(`${API}/images/generate`, { method: "POST", headers: { Authorization: `Bearer ${process.env.RENDERGRID_API_KEY}`, "Content-Type": "application/json", // 每个请求使用新的值;重试时使用同一个值 "X-Idempotency-Key": randomUUID(), }, body: JSON.stringify({ model: "nano-banana-2.1", prompt, resolution: "1K", aspect_ratio: "1:1", }), signal: AbortSignal.timeout(120_000), }); if (!response.ok) { const body = await response.text(); throw new Error(`HTTP ${response.status}: ${body}`); } const creation = await response.json(); console.log(creation.id, creation.status, creation.cost);
{
"id": "5b0214ae-9e39-460a-820a-f6ae3e24400b",
"status": "queued",
"task_id": "5b0214ae-9e39-460a-820a-f6ae3e24400b",
"cost": 0.02
}
{
"id": "5b0214ae-9e39-460a-820a-f6ae3e24400b",
"status": "completed",
"result_urls": [
"https:// …"
]
}
202 表示“已接收”,而不是“已完成”;cost 是为这张图片扣除的美元金额。完成后,GET /creations/{id} 会在 result_urls 字段里返回结果:文件只保存一天,请及时存到自己的存储中。全部步骤见快速开始,以及 Nano Banana 2.1 API 的快速开始文章和 Nano Banana Pro API 的快速开始文章。
下面三张图片是三次请求的结果,都是通过 Rendergrid 发给 Nano Banana 2.1 的:一只杯子、一套餐具,以及换了背景的杯子。三次请求没有带参考图,所以每张图里的杯子各不相同。
第一个请求的提示词
象牙白无缝背景上放一只绿色陶瓷杯,杯把朝右。镜头接近杯口高度,略带角度。左侧柔光与短阴影衬出釉面轻微起伏。杯子完整居中,周围空间宽松。不出现文字、标志、人物或水印。
Nano Banana 2.1
nano-banana-2.1 · 1K · 1:1 · $0.02
Nano Banana 2.1,1K,1:1,一次尝试。一只圆肚的绿色陶瓷杯,杯把朝右,放在象牙色的无缝背景上。釉面光滑,绿色深浅不一,杯口和杯身左上方有柔和的高光;杯子右侧有一道很短的淡影。高光在左、影子在右,光线像来自左侧,与提示词一致。提示词要求杯子完整居中:杯子完整入镜,周围留白宽松,但连杯把算在内,整只杯子比画面中心略偏右、略偏下,并没有严格居中。画面里没有文字、标志、人物或水印。
第二个请求的提示词
绿色陶瓷杯、碗、盘组成一套,放在象牙白无缝背景上。盘子平放后方,碗在左,杯在右,尽量少重叠。左侧柔光照出一致釉色。整套完整入镜,四周留宽边距。不出现文字、标志、人物或水印。
Nano Banana 2.1
nano-banana-2.1 · 1K · 1:1 · $0.02
Nano Banana 2.1,1K,1:1,一次尝试。一只盘子、一只碗和一只杯子,釉色都是深绿色,大体一致,放在象牙色的无缝背景上,整套完整入镜,大致居于画面中央。提示词要求盘子平放在后方,画面里的盘子却几乎正对镜头竖着,盘面朝向镜头,有同心的纹路。碗在左前方,杯在右前方,杯把朝右;杯子是直筒形,与第一张里圆肚的杯子不是同一只。碗和杯各盖住盘子下缘的一部分,两者之间盘子的下缘仍然可见。提示词要求尽量少重叠,这里有两处重叠。碗和杯的下方有柔和的阴影,阴影很淡,看不出光线来自哪一侧。左右两侧的留边比上下窄,与“四周留宽边距”有些出入。画面里没有文字、标志或人物。
第三个请求的提示词
淡陶土色背景上是一只绿色陶瓷杯,杯把朝右。机位接近杯口高度,柔光来自左侧。一片叶影落在旁边空地,不穿过杯子。产品完整,构图安静宽松。不出现文字、标志、人物或水印。
Nano Banana 2.1
nano-banana-2.1 · 1K · 1:1 · $0.02
Nano Banana 2.1,1K,1:1,一次尝试。一只薄荷绿的陶瓷杯,杯把朝右,立在淡陶土色的墙面和台面前。釉面分成两层:上半部颜色较深,下缘呈波浪状下垂,下半部颜色较浅。杯子完整入镜,位于画面中心的左下方,周围留白宽松。这一张与提示词有三处出入。第一,提示词要求柔光来自左侧,可杯子的影子落在杯子左边,右侧台面上的叶影也朝杯把伸来,光线更像来自右侧;杯子和叶子的影子边缘都很清晰,也不是柔光。第二,提示词要的是一片叶子的影子,画面里是一枝多片叶子的影子,它的左端靠近杯把,没有盖到杯身上。第三,画面里多了提示词没有要求的东西:靠近右边缘的上方露出一小片真实的叶尖,左上角墙面上有一块斜着的深色阴影。这只杯子与前两张里的杯子都不是同一只。画面里没有文字、标志或人物。
什么时候直接用 厂商的 API 更好?
统一 API 是你和厂商之间多出来的一环,有它自己的规则。下面几条里只要有一条对你很重要,就值得直接去看厂商的 API:
- 支付方式:Rendergrid 的余额只能用 USDT 充值,在控制台的“余额与充值”页面中充值,或通过经理充值。如果你需要别的支付方式,请到厂商的页面上核实它支持哪些。
- Rendergrid 里没有的模型或参数:通过 Rendergrid 能用的是它模型目录里的模型,你的账号可用哪些,由
GET /models返回。请求里没有蒙版:要编辑图片,就把原图作为参考图传入,并在提示词里写明改动。width和height也不接受,尺寸由resolution和aspect_ratio决定。你需要的如果不止这些,请到厂商那里找。 - 合同约束的服务保证:Rendergrid 没有服务等级协议(SLA)。如果你需要,请向厂商了解它的条款。
- 高于默认值的限额:Rendergrid 的默认值是每分钟 120 次请求、100 个任务。账号的限额可以和技术支持商量,也可以去核对厂商的限额。
- 少一层中转:你的提示词和图片会经过 Rendergrid。参考图在最后一次上传后保存 48 小时,结果文件保存一天;我们不会把你的提示词和图片用于训练模型。
什么时候选 统一 API 更合适?
- 多个模型,一个入口:一个 API 密钥、一个余额,用于目录里 Google 和 OpenAI 的模型;请求和响应的格式相同,用
model字段选择模型。 - 花费看得见:余额以美元计,
GET /models返回你的账号的单张价格,202响应里的cost字段是这次请求扣除的金额。月度消费限额可以设在单个密钥上,也可以设在整个账号上。 - 请求失败不会扣费:金额在接收请求时扣除,没有生成出图片就会立即退回余额。
- 安全地重试,也可以不轮询:请求头
X-Idempotency-Key用来避免重复扣费:用同一个键重试,会返回相同的202响应,不会有新的扣费。想不轮询,可以接收带 HMAC-SHA256 签名的creation.completed或creation.failed事件。 - 每个集成一个密钥:一个账号最多 50 个密钥,可以分别撤销;余额和请求速率限制由整个账号共用。
该向厂商问什么?
Google 和 OpenAI 的条款我们不转述。下面是值得你向厂商核实的问题:
- 密钥怎么发放?能不能限制花费?
- 你的账号有哪些限额?怎样提高?
- 支持哪些支付方式和币种?
- 什么时候扣费?没有生成出图片时会不会退款?
- 生成好的图片保存多久?厂商怎样处理你的提示词?
- 有没有服务等级协议?
这个对比 哪里不适用?
- 三张图片不是模型对比:这是三次发给 Nano Banana 2.1 的请求,各一次尝试,不能据此判断质量或速度。
- 没有直接运行过:这些提示词没有发给过厂商自己的 API,所以不知道直接使用时结果有何不同。
- 厂商的条款不在这里:Google 和 OpenAI 的密钥、限额和支付条件,我们不转述,请直接读厂商的页面。
- 价格对照表只覆盖两款 Nano Banana:OpenAI 模型的价格,请看价格页和 OpenAI 自己的页面。
- 价格不是永远不变:价格按核对时的数据给出,Rendergrid 至少每周与官方页面核对一次。
常见问题解答
什么时候最好直接使用厂商的 API?
一个密钥能同时使用 Google 和 OpenAI 的模型吗?
model 字段选择模型。你的账号可用哪些模型,由 GET /models 返回。怎样为图片付款?
图片没有生成出来,已扣的款项怎么办?
Rendergrid 一张图片多少钱?
怎样开始使用 Rendergrid?
来源
- Google AI for Developers:价格页Google 的官方单张价格:标准价格,不含批量模式。
- OpenAI:API 价格OpenAI 的官方价格。
- OpenAI:图像生成与费用OpenAI 按图片计价的表格和价格计算器。
- Rendergrid 价格每款模型、每种分辨率的单张价格。
- Rendergrid 文档:密钥与鉴权API 密钥的格式和数量。
- Rendergrid 文档:限额请求速率和月度消费限额。
- Rendergrid 文档:USDT 充值网络、手续费和支付窗口。
- Rendergrid 文档:余额何时扣费,请求失败如何退回。
- Rendergrid 文档:模型与参数模型目录、分辨率和宽高比。
- Rendergrid 使用条款结果保存期限,没有服务等级协议。
- Rendergrid 隐私政策数据保存期限,不用于训练模型。





