PVL Google NanoBanana API Multi
Nano Banana with up to eight reference images
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- text
- images
Nano Banana's party trick, once you get past the pure text-to-image stuff, is reference-image control - and this node is built entirely around it. Eight image inputs (image_1 … image_8) feed the Gemini 2.5 Flash Image model, so a prompt like "make a scene with this character" actually gets to see the character across multiple angles. That's the multi-image, character-consistency use case, and it's one of the things the closed Nano Banana models do better than most open ones.
If your workflow is "I have a person/character/object across several reference shots, now generate variations," this is the node. It's the same engine as the base Nano Banana node - Google-first, fal fallback on by default, [++] prompt splitting for parallel runs - but the payload is the image set rather than a single frame.
How it works
Each connected image gets sent inline with your prompt to Google's image model; batch-style parallel generation happens through the delimiter prompt splitting, and results stack back into one IMAGE output. If Google fails, use_fal_fallback (on by default) routes to fal's hosted Nano Banana with the same reference images. The mechanical story is identical to the base node - what changes is how many pictures you can throw at it.
The inputs that matter
image_1…image_8- the reference set. Connect as many as you have; only connected ports are sent. For character work, more angles genuinely help.prompt- what to generate. This is where you reference the images: "same character, winter outfit."model- defaultgemini-2.5-flash-image-preview.num_images- 1 to 12 outputs per run.aspect_ratio- default1:1, validated against the standard set.use_fal_fallback,force_fal,fal_api_key,fal_route_txt2img,fal_route_img2img- the resilience block.api_key,capture_text_output,seed,output_format,retries,timeout_sec,debug_log,delimiter,sync_mode,endpoint_override,request_id- same as the rest of the family.
Outputs: text (STRING) and images (IMAGE).
Installing it
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/pvlprk/comfyui-pvl-api-nodes
Restart, export GEMINI_API_KEY and FAL_KEY, or fill the fields. No model downloads - everything runs on Google's and fal's servers.
Common issues
Three things to know. First, each image port takes a single frame - a whole batch of frames on one port only sends the first. Split batches with the pack's PVL Image Batch to Image List if you need all eight views to actually arrive. Second, the reference-image pipeline is where Nano Banana's filtering gets aggressive: faces of real people and celebrity/IP content can trigger blocks regardless of how many references you supply, and those blocks are precisely what the fal fallback exists for. Third, cost scales with both image count and num_images - eight references × 12 outputs is a large, single-shot bill. Start with two or three references and one output, sanity-check the quality, then scale the batch. And the standing rule: your reference images leave your machine.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| seed | INT | 00–18446744073709550000 | — |
| model | STRING | gemini-2.5-flash-image-preview | — |
| output_format | COMBO | png | 2 options: png, jpeg |
| num_images | INT | 11–12 | — |
| retries | INT | 31–10 | — |
| timeout_sec | INT | 1205–600 | — |
| debug_log | BOOLEAN | false | — |
| capture_text_output | BOOLEAN | false | — |
| use_fal_fallback | BOOLEAN | true | — |
| force_fal | BOOLEAN | false | — |
| delimiter | STRING | [++] | — |
| sync_mode | BOOLEAN | false | — |
| image_1opt | IMAGE | — | |
| image_2opt | IMAGE | — | |
| image_3opt | IMAGE | — | |
| image_4opt | IMAGE | — | |
| image_5opt | IMAGE | — | |
| image_6opt | IMAGE | — | |
| image_7opt | IMAGE | — | |
| image_8opt | IMAGE | — | |
| aspect_ratioopt | STRING | 1:1 | — |
| endpoint_overrideopt | STRING | — | |
| api_keyopt | STRING | — | |
| request_idopt | STRING | — | |
| fal_api_keyopt | STRING | — | |
| fal_route_img2imgopt | STRING | fal-ai/nano-banana/edit | — |
| fal_route_txt2imgopt | STRING | fal-ai/nano-banana | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| images | IMAGE | — |