WaveSpeedAI Google Nano Banana Pro Edit
Nano Banana Pro editing, up to six reference images, no Google account
- client
- output_image
Nano Banana Pro is Google's flagship image editor - Gemini 3 Pro Image under a goofy name - and it's the model that made multi-reference editing feel effortless: swap a face, restyle a product, keep a character consistent across edits. The catch is you normally reach it through ImageFX or the Gemini API, with Google's account, UI, and moderation policies in between. This node puts the same model in your ComfyUI graph via WaveSpeed AI, with up to six reference images and none of Google's interface.
What it is
A hosted Nano Banana Pro edit node. prompt says what to change, image_1 is the primary reference, and image_2 through image_6 are optional additional references - which is where Nano Banana Pro earns its reputation: it reasons across multiple inputs, so you can composite a face from one image into a scene from another in a single prompt. The aspect_ratio dropdown offers ten ratios (1:1 through 21:9), and resolution runs 1k / 2k / 4k at the prices baked into the tooltip ($0.14 / $0.14 / $0.24).
How it works
client from the WaveSpeedAI Client node, then a POST to the Nano Banana edit endpoint with your prompt, image URLs, aspect ratio, and resolution. The edited image comes back as an IMAGE tensor. output_format defaults to png - worth keeping, because the tooltip notes PNG is the one with transparency support, and Nano Banana can legitimately produce transparent output.
The inputs that matter
- prompt - plain-language edit instruction ("Replace the cloudy sky with a clear sunset" is the tooltip's example).
- image_1 - the primary image; image_2..6 - supporting references. The more references you feed, the more the model has to reconcile, so only add images that actually inform the edit.
- aspect_ratio - output shape, ten choices.
- resolution - 1k/2k/4k; 2k is free over 1k, 4k costs more.
- output_format - png (transparency) or jpeg.
- enable_sync_mode - default on.
Output name is output_image, type IMAGE.
Install & setup
cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/razv-wavespeed.git
cd razv-wavespeed
pip install -r requirements.txt
or ComfyUI Manager → "razv-wavespeed" → Install, restart. API key from wavespeed.ai in config.ini (from config.ini.tmp), the Client node, or WAVESPEED_API_KEY. Deps: requests, pillow, numpy<2.0.0, torch.
Common issues
- Too many references = mush - six images is the ceiling, not the target. Start with one or two; the model blends when over-fed.
- "No output received" - unreachable image URLs (especially the optional ones) or timeout.
- Content filters - Nano Banana is a heavily filtered model; subjects Google's safety layer won't touch will return errors or unsatisfying results. That's the model, not the node.
- 401 - key issue.
The value here is interface, not access - the model's the same one in ImageFX, minus Google's wrapper. If you're already in the Gemini ecosystem this node is a convenience. If you're not, and you want Pro-grade multi-reference editing inside a workflow that also does local generation, it's a legitimately useful bridge - one where the six-image reference stack is the feature.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| prompt | STRING | Text description of the edit to perform (e.g., 'Replace the cloudy sky with a clear sunset') | |
| image_1 | STRING | Primary input image URL (connect from Upload Image node) | |
| aspect_ratio | COMBO | 1:1 | Aspect ratio of the output image |
| resolution | COMBO | 1k | Output resolution: 1k ($0.14), 2k ($0.14), 4k ($0.24) |
| output_format | COMBO | png | Output format - use PNG for transparency support |
| enable_sync_mode | BOOLEAN | true | Wait for generation to complete before returning |
| image_2opt | STRING | Second input image URL (optional) | |
| image_3opt | STRING | Third input image URL (optional) | |
| image_4opt | STRING | Fourth input image URL (optional) | |
| image_5opt | STRING | Fifth input image URL (optional) | |
| image_6opt | STRING | Sixth input image URL (optional) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_image | IMAGE | — |