Nodes/ComfyUI Assistant Node/PVL Google NanoBanana API Multi
ComfyUI Node

PVL Google NanoBanana API Multi

Nano Banana with up to eight reference images

By pvlprk·Created about a year ago·Updated 8 months ago· 1
PVL Google NanoBanana API Multi
  • image_1
  • image_2
  • image_3
  • image_4
  • image_5
  • image_6
  • image_7
  • image_8
  • text
  • images
prompt
seed0
modelgemini-2.5-flash-image-preview
output_formatpng
num_images1
retries3
timeout_sec120
debug_logfalse
capture_text_outputfalse
use_fal_fallbacktrue
force_falfalse
delimiter[++]
sync_modefalse
aspect_ratio1:1
endpoint_override
api_key
request_id
fal_api_key
fal_route_img2imgfal-ai/nano-banana/edit
fal_route_txt2imgfal-ai/nano-banana

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_1image_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_1image_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 - default gemini-2.5-flash-image-preview.
  • num_images - 1 to 12 outputs per run.
  • aspect_ratio - default 1: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.

CategoryPVL/Google

Inputs (28)

NameTypeDefaultDescription
promptSTRING
seedINT00–18446744073709550000
modelSTRINGgemini-2.5-flash-image-preview
output_formatCOMBOpng2 options: png, jpeg
num_imagesINT11–12
retriesINT31–10
timeout_secINT1205–600
debug_logBOOLEANfalse
capture_text_outputBOOLEANfalse
use_fal_fallbackBOOLEANtrue
force_falBOOLEANfalse
delimiterSTRING[++]
sync_modeBOOLEANfalse
image_1optIMAGE
image_2optIMAGE
image_3optIMAGE
image_4optIMAGE
image_5optIMAGE
image_6optIMAGE
image_7optIMAGE
image_8optIMAGE
aspect_ratiooptSTRING1:1
endpoint_overrideoptSTRING
api_keyoptSTRING
request_idoptSTRING
fal_api_keyoptSTRING
fal_route_img2imgoptSTRINGfal-ai/nano-banana/edit
fal_route_txt2imgoptSTRINGfal-ai/nano-banana

Outputs (2)

NameTypeDescription
textSTRING
imagesIMAGE