Nano Banana Pro
Nano Banana Pro in ComfyUI, minus the middleman
- image
- image
Nano Banana Pro is Google's flagship closed image model - 4K native output, good text rendering, genuinely the thing people reach for when they want a polished infographic or a coherent scene with words in it. And it runs in ComfyUI without a single local weight. The catch: it's an API call, so somebody's paying per image, and this node's entire selling point is cutting out the middleman.
NanoBananaProImage (shown in the menu as "Nano Banana Pro") is a one-node pack from jeremytenjo that hits Google's Gemini REST endpoint directly. No Comfy API proxy, no Fal-style markup, no local model to download. The name "nano banana" is a lie in one direction - nothing here runs on your machine; the only thing on your GPU is the result tensor sitting in RAM. Requirements.txt is literally requests, pillow, numpy. That's the whole dependency story.
How it works
The node builds a generateContent request to generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview, sends your prompt (and optionally your input image as base64 PNG), asks for a TEXT+IMAGE response, grabs the first image it finds, and converts it back into a ComfyUI IMAGE tensor. Thirty lines of plumbing, and that's honestly the right size for it.
Two things it does that are worth knowing before you wire it in. First, it caches. Every generation is stored in memory keyed by (input image dimensions, prompt, aspect ratio, resolution), and a cache hit skips the API call entirely. Re-run the same prompt and you get the image back free - nice, because 4K images aren't cheap. Second, it splits prompts on **, so "cat ** dog ** bird" in one field returns a batch of three images. Handy for grids.
The inputs that matter
- api_key - your Google AI Studio key, pasted straight into the node. Direct access means no proxy to configure, but also no place to hide the key.
- prompt - multiline. Use
**to split into multiple generations in one batch. - size - ten aspect ratios, default
9:16 (768x1344). resolution -1K,2K, or4K; this is the dial that moves your bill the most. - image (optional) - one conditioning image, sent to the model as a reference. Note the model can take up to fourteen reference images; this node wires in exactly one.
Output: image - an IMAGE tensor, one per prompt in the batch. Feed it to a preview, a save node, or downstream video/upscale stages like any other generated image.
Install
ComfyUI Manager, search comfyui-nano-banana, install, restart. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/jeremytenjo/comfyui-nano-banana
cd comfyui-nano-banana
pip install -r requirements.txt
Restart ComfyUI and you're done - no model files, no multi-GB downloads, no VRAM budget to plan around.
Where people get burned
Cost. Per-image pricing runs roughly $0.04 to $0.24 depending on resolution, and the community has been loud about it - the native ComfyUI integration (which routes through Fal) carries a markup, which is exactly why people keep building direct-to-Google nodes like this one. The cache is your friend here: iterate on the prompt freely, but re-run only what you actually changed.
The cache has a blind spot. That cache key ignores the contents of your conditioning image and only uses its dimensions. Feed a different reference image at the same pixel size with the same prompt and you'll get the stale cached result. If outputs stop changing, disconnect and reconnect the image input.
Censorship. This model is aggressively filtered - community consensus is "powerful, unimaginative, massive hidden biasing," and Google tightened its IMAGE_SAFETY rules in January 2026. Refusals surface as a RuntimeError with the API's own message, so read it before assuming the node is broken.
The key is in your workflow. It's a plain string input, so it's saved into your workflow JSON. Don't share workflows with the key still in the field, and expect to regenerate it from Google AI Studio (free tier included) when you do.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| prompt | STRING | — | |
| size | COMBO | 9:16 (768x1344) | 10 options: 9:16 (768x1344), 1:1 (1024x1024), 2:3 (832x1248), 3:2 (1248x832), 3:4 (864x1184), 4:3 (1184x864), +4 |
| resolution | COMBO | 1K | 3 options: 1K, 2K, 4K |
| imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |