Nano Banana Pro (Vertex)
Same node, enterprise plumbing
- 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
- image
Take the NanoBananaProNode writeup, keep every parameter, and swap the authentication for a Google Cloud service account - that's this node. NanoBananaProVertexNode is the Vertex AI edition of the same Gemini image call, and for most people the honest answer is: don't use it. The plain Nano Banana Pro node with an AI Studio key is dramatically less setup. This one exists for the people who are already living in Google Cloud - org-managed credentials, billing via the project, one billing account covering everything - and who either can't or don't want to hand out API keys.
The model is the same gemini-3-pro-image-preview (Nano Banana Pro, Google's 4K flagship), with the same 14 reference-image slots, same image_count up to 15, same 1K/2K/4K image_size options, same aspect_ratio list, and the same IMAGE batch output. The source comments flag one Vertex-specific quirk: this model wants the global region, which is why location defaults to it. Run it from a regional endpoint and you may get errors that make no sense until you remember that.
What's different
Three required inputs replace the single API key, and they're the whole story:
project_id- your Google Cloud project ID, the one with Vertex AI enabled and billing on.location- defaults toglobal; the dropdown has ~40 regions but for this model you wantglobal.service_account- a path to a service account JSON key file on disk. The node setsGOOGLE_APPLICATION_CREDENTIALSto it and builds avertexai=Trueclient.
Everything else - temperature, top_p, seed, system_instruction, the image_1–image_14 slots, use_concurrency, and the *_input override ports - is identical to the non-Vertex node. There are matching project_id_input, location_input, and service_account_input ports if you want an upstream node to supply them.
Installing it
Same pack, same install as the rest of ComfyUI's zhanglongxiao111/Comfyui-geminiapi:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/zhanglongxiao111/Comfyui-geminiapi.git
cd Comfyui-geminiapi
python -m pip install -r requirements.txt
Restart and it's under ExternalAPI/Image/Generation next to its sibling. Note the pack's requirements.txt pulls the google-genai SDK, and this node needs it at 1.0.0+ or it refuses to load.
The gotchas
Setup friction aside, the failure behavior matches the AI Studio version: failed requests get padded out with black placeholder frames and a [Nano Banana Pro Vertex] Request failed: line in the log, so watch the console. The usual Vertex confessionals apply - the Vertex AI API must be enabled on the project, billing must be active, and the service account needs image-generation permissions. If a run "works" and returns only black frames, that's a failed request, not a moody model. And the same cost math holds: this is a paid API, SynthID-watermarked and censored at the source. Reach for it when your org already runs on GCP; otherwise the plain NanoBananaProNode gets you the same images with maybe twenty minutes less yak-shaving.
Inputs (33)
| Name | Type | Default | Description |
|---|---|---|---|
| project_id | STRING | — | |
| location | COMBO | global | 40 options: global, us-central1, us-east1, us-east4, us-east5, us-south1, +34 |
| service_account | STRING | — | |
| aspect_ratio | COMBO | 11 options: auto, 1:1, 2:3, 3:2, 3:4, 4:3, +5 | |
| temperature | FLOAT | 0.500–1 | — |
| top_p | FLOAT | 0.850–1 | — |
| seed | INT | 69-1–2147483646 | — |
| image_count | INT | 11–15 | — |
| model | STRING | gemini-3-pro-image-preview | — |
| image_size | COMBO | 1K | 3 options: 1K, 2K, 4K |
| promptopt | STRING | — | |
| system_instructionopt | STRING | — | |
| image_1opt | IMAGE | — | |
| image_2opt | IMAGE | — | |
| image_3opt | IMAGE | — | |
| image_4opt | IMAGE | — | |
| image_5opt | IMAGE | — | |
| image_6opt | IMAGE | — | |
| image_7opt | IMAGE | — | |
| image_8opt | IMAGE | — | |
| image_9opt | IMAGE | — | |
| image_10opt | IMAGE | — | |
| image_11opt | IMAGE | — | |
| image_12opt | IMAGE | — | |
| image_13opt | IMAGE | — | |
| image_14opt | IMAGE | — | |
| prompt_inputopt | STRING | — | |
| system_instruction_inputopt | STRING | — | |
| project_id_inputopt | STRING | — | |
| location_inputopt | STRING | — | |
| service_account_inputopt | STRING | — | |
| image_count_inputopt | INT | 00–15 | — |
| use_concurrencyopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |