Banana-API-3
Nano Banana inside your ComfyUI graph — no local GPU required
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- image_10
- image_11
- image_12
- image_13
- image_14
- images
- text
This node ("Banana-API-3" on the canvas) doesn't run a model. It calls one. It's the ComfyUI front end for Google's Nano Banana - the model_type even defaults to 「Rim」gemini-3-pro-image-preview, the gateway alias for Gemini 3 Pro Image. And that distinction decides whether it's for you.
Nano Banana has no open weights, so local isn't an option at any VRAM. But it's the strongest closed image model around as of 2026 - 4K native output, up to 14 reference images, "thinking mode" - and the community's canonical move is to generate frames on it and animate them with a local Wan model underneath. Comfy's own official Partner Nodes do this on prepaid credits tied to a Comfy account. This pack is the alternative path: you bring your own API key and your own OpenAI/Gemini-compatible gateway, which is exactly how the reseller layer around Nano Banana actually works. Kie.ai, laozhang, a relay you rent, or the author's own service at wish.sillydream.top - the node doesn't care, it just talks to whatever base URL you hand it.
How it works
Under the hood it builds a Gemini-style generateContent request to {base_url}/v1beta/models/{model}:generateContent. Your reference images go up as base64 inlineData, your seed and top_p ride in generationConfig, and the response - raw base64, Markdown-embedded base64, or a hosted image URL - is decoded back into an IMAGE tensor. So downstream it looks like a local sampler: wire images into a save node, an upscaler, whatever. The only thing that tells you it wasn't local is the bill.
Requests run through a small thread pool, so a batch_size of 4 fans out concurrently (with a 0.2s stagger to avoid a request spike). Set a fixed seed to reproduce, or leave -1 to let the node roll its own.
The inputs that matter
You don't touch most of these. The ones you actually set:
api_base_urlandapi_key- leave blank to fall back to theconfig.iniin the pack folder; the node input wins when both are set.model_type- must match the alias your gateway has configured, exactly. A 404 is the symptom of getting this wrong.batch_size(1–8) - how many images per request, generated concurrently.aspect_ratio-Autoor one of 15 presets. Feed in a reference image withAutoand it snaps to the closest preset matching that image's dimensions.image_1throughimage_14- the img2img / multi-image fusion inputs. Optional, and the whole reason this pack is interesting.
Everything else is quality plumbing: seed, top_p, imageSize (无/1K/2K/4K), read-timeout (超时秒数 / 无限超时), and 绕过代理 for when your system proxy is the bottleneck. Toggle 测试延迟 if you want a ping report prepended to the output.
Outputs: images (IMAGE) and text (STRING). That text output is worth reading - when a model hits a content-policy wall it often returns words instead of pixels, and the node passes those words through so you know why you got nothing.
Install
Two ways, both painless. The pack's only real dependency is requests.
cd ComfyUI/custom_nodes
git clone https://github.com/qianchi7/ComfyUI-SillyDream-Banana.git
pip install requests
Or ComfyUI Manager → Install via Git URL with that repo URL, then Restart (a page reload isn't enough - custom nodes are scanned once at startup). Portable installs should use python_embeded\python.exe -m pip install requests. There are no model files to download; the model lives on the gateway. First launch writes a sample config.ini next to the node.
Where people get burned
- The shipped
config.inipoints at the author's own gateway IP with a placeholder key. That's his business, and you'll almost certainly want your own endpoint and key in there before you run anything. - 401/403 means the key is wrong or lacks permission; 404 means
model_typedoesn't match the gateway; 429 is you hammering a rate limit; 502/503 is the gateway's problem, not yours. - Empty image results: check the
textoutput for aNO_IMAGE/ content-filter explanation and rephrase the prompt.
Last honest caveat: this is a metered call to a filtered, closed model, and API-wrapper packs are the exact category that shipped credential-stealing malware once. This one is a small MIT fork with the author explicitly claiming to have stripped the original's hidden endpoint-switching logic - read the source before you trust it, and don't paste a key you care about into a node you haven't.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Peace and love | 生成图像的文本提示词,可多行描述内容、风格等 |
| api_key | STRING | 调用服务的 API Key;留空则优先使用 config.ini 中的配置 | |
| api_base_url | STRING | API 服务地址;留空则使用 config.ini 中的配置 | |
| model_type | STRING | 「Rim」gemini-3-pro-image-preview | 模型名称) |
| batch_size | INT | 11–8 | 一次请求中要生成的图片数量,范围 1~8 |
| aspect_ratio | COMBO | Auto | 生成图像的宽高比例,Auto 为由服务端自动决定 |
| seedopt | INT | -1-1–102400 | 随机种子,-1 为自动随机;固定种子可复现同一输出 |
| top_popt | FLOAT | 0.950–1 | 采样参数 Top-P,数值越低越保守,越高多样性越强 |
| imageSizeopt | COMBO | 2K | 图像分辨率选项:1K/2K/4K,适用于所有支持图像生成的模型 |
| image_1opt | IMAGE | 参考图像 1,可为空;用于图生图或多图融合 | |
| image_2opt | IMAGE | 参考图像 2,可为空;用于图生图或多图融合 | |
| image_3opt | IMAGE | 参考图像 3,可为空;用于图生图或多图融合 | |
| image_4opt | IMAGE | 参考图像 4,可为空;用于图生图或多图融合 | |
| image_5opt | IMAGE | 参考图像 5,可为空;用于图生图或多图融合 | |
| image_6opt | IMAGE | 参考图像 6,可为空;用于图生图或多图融合 | |
| image_7opt | IMAGE | 参考图像 7,可为空;用于图生图或多图融合 | |
| image_8opt | IMAGE | 参考图像 8,可为空;用于图生图或多图融合 | |
| image_9opt | IMAGE | 参考图像 9,可为空;用于图生图或多图融合 | |
| image_10opt | IMAGE | 参考图像 10,可为空;用于图生图或多图融合 | |
| image_11opt | IMAGE | 参考图像 11,可为空;用于图生图或多图融合 | |
| image_12opt | IMAGE | 参考图像 12,可为空;用于图生图或多图融合 | |
| image_13opt | IMAGE | 参考图像 13,可为空;用于图生图或多图融合 | |
| image_14opt | IMAGE | 参考图像 14,可为空;用于图生图或多图融合 | |
| 超时秒数opt | INT | 6060–1800 | API 请求的读取超时时间(秒),最低 60 秒;开启“无限超时”时此值会被忽略 |
| 无限超时opt | BOOLEAN | true | 开启后读取超时无限制;关闭后使用上面的“超时秒数” |
| 绕过代理opt | BOOLEAN | false | 梯子速度不佳、不可靠时开启 |
| 测试延迟opt | BOOLEAN | false | 对当前 API Base URL 执行 ping 测试,输出延迟和丢包率,便于挑选更稳的端点 |
| ping次数opt | INT | 41–10 | ping 探测次数,次数越多结果越稳定,但会增加等待时间 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| text | STRING | — |