Loading...
Loading...
No output yet
Run the model to see generated results.
import requests
result = requests.post(
'https://api.e2x.ai/v1/jobs/submit',
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
},
json={
'model': 'google/nano-banana-2/edit-image',
'input': {}
}
)import time
job_id = result.json()['jobId']
while True:
response = requests.get(
f'https://api.e2x.ai/v1/jobs/{'{job_id}'}',
headers={'Authorization': f'Bearer {'{API_KEY}'}'}
)
data = response.json()['data']
if data['status'] == 'completed':
print('Done!', data['outputs'][0]['url'])
break
elif data['status'] == 'failed':
raise Exception(f"Job failed: {'{'}data['error']['message']{'}'}")
time.sleep(2)Nano Banana 2 就是 Google 的 gemini-3.1-flash-image,它的编辑 capability 是我们图像目录里的主力。我们将其开放为 google/nano-banana-2/edit-image,在 1K 默认设置下每张编辑收费 $0.04,一次 request 最多可携带十四张源图像。fal.ai 对同一个模型的标价是 $0.08。
手上没有源图像?那您要的是 Nano Banana 2 text-to-image —— 同一个模型,同样的价格,只需 prompt。
有件事值得直说,因为提供商目录已经把它搅浑了:这不是 Nano Banana Pro。Pro 是 gemini-3-pro-image,在源头的价格大约是它的两倍。如果别家网站的表格里写着「Nano Banana 2」却挂着 Pro 的规格,请核对底下的 Gemini 模型 ID。
我们截至 2026 年 8 月 26 日 的定价:
| API 提供商 | 每次编辑价格(1K) | 与 E2X 相比 |
|---|---|---|
| E2X | $0.04 | — |
| fal.ai | $0.08 | 我们低 50% |
| WaveSpeed | $0.07 | 我们低 43% |
| Google Gemini API | $0.067 | 我们低 40% |
价格与产品条款可能随时间变化;在做出采购决定前,请核对各家提供商的当前价格。Google 的 Batch 或 Flex 价格在调度、可用容量和处理条件上均有所不同,因此与标准的按需 API request 并不直接等价,已从本对比中排除。这是一次限定范围的对比,并非声称 E2X 在任何配置下都是全球最便宜的选择。
推动这个数字变化的是分辨率,按固定台阶:
| 分辨率 | 倍率 | 每次编辑 | fal.ai |
|---|---|---|---|
| 1K(默认) | ×1 | $0.04 | $0.08 |
| 2K | ×1.5 | $0.06 | $0.12 |
| 4K | ×2 | $0.08 | $0.16 |
请注意这落在了哪里:在我们这里做一次 4K 编辑,花的钱等于 fal.ai 收的 1K 价。机器可读规格里也是同样的数值。
Google 把 gemini-3.1-flash-image 的定价定成 gemini-3-pro-image 的整整一半,而两者的 capability 差距远小于价格差距。编辑场景让这种不对称更有利于您——您改动的是一张本来就已经对了的图像,模型需要凭空发明的东西更少。
在流水线里真正要紧的部分:
resolution 参数,它只返回 1K。如果一张编辑后的素材要送印刷,或要放进 retina 首屏位,Lite 就出局了。延迟中位数约 8.4 秒。不支持 function calling,所以 agent 循环必须从外部来编排这个模型。
有两个字段是必填的:prompt 和 image_urls。请把 key 留在服务端,然后提交 job。
curl -X POST https://api.e2x.ai/v1/jobs/submit \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/nano-banana-2/edit-image",
"input": {
"prompt": "图 1 是这只运动鞋,图 2 是地面参考。把这只鞋放到图 2 的湿水泥地上,并匹配那里的反光。不要改动鞋子本身或它的 logo。",
"image_urls": [
"https://example.com/sneaker.png",
"https://example.com/concrete.jpg"
],
"aspect_ratio": "1:1",
"resolution": "2k"
}
}'
提交后会返回一个 job ID。对它做 polling,直到状态稳定:
const headers = {
Authorization: `Bearer ${process.env.E2X_API_KEY}`,
"Content-Type": "application/json",
};
const submitted = await fetch("https://api.e2x.ai/v1/jobs/submit", {
method: "POST",
headers,
body: JSON.stringify({
model: "google/nano-banana-2/edit-image",
input: {
prompt: "把窗外的季节改成深冬。房间、家具和人物全部保持原样不变。",
image_urls: ["https://example.com/interior.jpg"],
aspect_ratio: "3:2",
resolution: "1k",
},
}),
}).then((r) => r.json());
const jobId = submitted.data.jobId;
for (;;) {
const job = await fetch(`https://api.e2x.ai/v1/jobs/${jobId}`, { headers })
.then((r) => r.json());
if (job.data.status === "completed") {
console.log(job.data.outputs[0].url);
break;
}
if (job.data.status === "failed") {
throw new Error(job.data.error?.message ?? "Edit failed");
}
await new Promise((r) => setTimeout(r, 1500));
}
状态依次为 pending → processing → completed,或者落到 failed / cancelled。在 submit 的 body 里传入 webhookUrl,我们就会改为回调您。
值得钉牢的 schema 细节:即使只有一张源图,image_urls 也是数组;我们的 aspect_ratio 默认值是 9:16,而不是源图像自身的比例;resolution 的取值是小写。让人意外的正是那个默认值——丢进一张横版照片却不设置它,回来的就是一张竖版裁切。
Nano Banana 2 是我们做编辑时的默认推荐,但它并不是每一种活儿的正确答案。我们还运行着这些:
| 模型 | 每次编辑价格 | 什么时候选它 |
|---|---|---|
| Nano Banana 2 | $0.04 | 2K/4K 输出、多参考图合成、需要 grounding 的编辑 |
| Nano Banana 2 Lite | $0.0238 | 大批量 1K 编辑,一次只下一条指令 |
| Nano Banana Pro | $0.075 | 重写图像内部的文字、整组素材的严格身份一致性 |
| Nano Banana(legacy) | $0.0312 | 一条您还没迁移的流水线 |
| GPT Image 2 | $0.0525 起 | 基于 mask 的编辑,或者您想要 OpenAI 的观感 |
如果您的编辑就是 1K 下的换背景和调色,请转到 Nano Banana 2 Lite —— 便宜约 40%,在文字和参考一致性上打平,而在规模化之后,这个差价就是全部利润。不这么做的两个理由:Lite 永远止步于 1K;而且一旦 prompt 要求它准确摆放多个物体,它就变得不那么可靠。第二种失败很隐蔽,所以请拿您自己最难的那条 prompt 去测,而不是相信某个跑分。
当画面内可读的文字本身就是交付物时,请往上走到 Nano Banana Pro。除非您被困在上面,否则请无视 legacy 那一行:Google 现在已把 gemini-2.5-flash-image 归为 legacy,并推荐改用 Nano Banana 2 Lite —— 一次同时做到更新和更便宜。其余的都在图像编辑分类和更广的模型目录里。
从生成场景带过来的本能,是去描述完成后的画面。在编辑里,这会与源图争夺主导权,于是您得到的是一次漂移的重绘,而不是您要的那处改动。
先说改什么,再说什么绝对不能动。点名受保护的区域不是可选项 —— 当您告诉模型某张脸、某个 logo 或某个标签属于禁区时,它守得住的概率会高得多。
在 prompt 里给附件编号。「图 1 是主体,图 2 仅作为光照参考」是模型判断您意图的唯一信号;没有这句话,第三个附件就会变成又一个要放进画面的主体。
链式编辑正是画质悄悄漏掉的地方。每一轮都会重新编码,微小的身份漂移在四五轮之后会累积起来。请把一串操作压成一次 request,把所有参考图都附上——反正都是 $0.04,而单遍的结果通常更干净。
每一张编辑输出都带有 SynthID watermark。Google 无条件地加上它,而且没有任何提供商——包括我们——暴露了可以禁用它的开关。如果某份合同禁止使用 AI 生成的素材,请在写集成代码之前把这件事解决掉。
留意您的输入质量。一张发虚、压缩过度的源图,无论您要什么 resolution,都会限制住输出;拿一张 600px 的 JPEG 去要 4K,买到的只是把原图的缺陷昂贵地放大一遍。
每次迁移都请重新核对 aspect_ratio。我们的默认值是竖版,各家提供商各不相同,而一整批被悄悄改了画幅的图,正是那种发布之后才会发现的 bug。
它是 Google gemini-3.1-flash-image 模型的编辑 capability,在我们的 API 上开放为 google/nano-banana-2/edit-image。您发送一张或多张源图像加上一条指令,它返回一张最高 4K 的修改后图像。
我们的 1K 默认设置是每张编辑 $0.04;2K 为 $0.06,4K 为 $0.08。这些是 2026 年 8 月 26 日核查时的价格。价格会变动,所以在敲定预算之前请到实时模型页面确认。
单次调用最多十四张。它们之间没有强制的角色划分——由您在 prompt 里告诉模型:哪个附件是主体,哪个是背景,哪个仅作风格参考。
能 —— 我们的 resolution 枚举接受 1k、2k 和 4k,一次 4K 编辑收费 $0.08。这也是选它而不选 Nano Banana 2 Lite 的主要理由,因为 Lite 没有 resolution 参数,永远只返回 1K。
就我们在那一天核查到的可比按需价格而言,是的 —— 我们 $0.04,fal.ai $0.08,在同等条件的 1K request 上省下 50%。Batch 产品、促销价和不同套餐不在这次对比范围内。
带。每一张输出都包含 SynthID watermark,这是 Google 用于 AI 生成内容的不可感知标记。没有任何提供商提供可以移除它的参数。
因为我们的 aspect_ratio 默认值是 9:16,而不是源图像的比例。请在每一次 request 中显式设置 aspect_ratio —— 在把编辑流水线迁到我们这里时,这是最常见的一个意外。
不是。您提交一个 job,然后要么对 /v1/jobs/{id} 做 polling,要么提供一个 webhookUrl 接收回调。已完成的 job 会在 data.outputs[0].url 处暴露结果;模型延迟中位数约 8.4 秒。