Nano Banana Pro · Text to Image
The model that plans the poster before it draws it
- images
- task id
Nano Banana Pro is Gemini 3 Pro Image, and the pitch that matters here is layout. Unlike the Flash-tier sibling, it reasons about the image before it draws - "thinking mode" in Google's own framing - and that shows up in exactly one place: dense, legible, structured text. Posters with a headline, a subhead and a footer. Infographics. Diagrams with labelled parts. Menus, packaging, comic panels, slides. If you've ever watched a diffusion model turn eight words of copy into six words of plausible-looking gibberish, this is the node you buy to stop that.
Where it sits in a real workflow
There's no local option and never will be - no weights exist for any Nano Banana model, which is the standard reason people reach for an API node at all. The workflow this fits is the hybrid one the community settled on: closed model for the frame that needs perfect typography, open model underneath for the motion. The canonical version is Nano Banana Pro generating the stills and Wan animating them, and it's a good template if you're building a short video out of stills you can't reshoot.
At $0.1072 an image (1k or 2k) and $0.192 at 4k, it's roughly triple the Flash tier. Pay it when text legibility or multi-part layout is the point. Don't pay it for a landscape.
How the node works
The pack fetches SpicyAPI's model catalogue when ComfyUI boots, turns each model's published input schema into a node, and ships one HTTP client per model. This node has no media inputs at all - it's prompt plus three choices. On Run it quotes the job, checks the quote against your Max cost per run ceiling, submits, polls with a live status line on the node, then downloads the returned image and hands it back as an ordinary IMAGE tensor. From the graph's point of view a local sampler ran.
Inputs and outputs
Three widgets that matter, and that's the entire node:
- prompt - the layout is worth describing. "A poster, title top-left in bold sans-serif reading X, three icons across the bottom labelled A, B, C" beats "a poster about X" every time. Quote any text you want rendered verbatim; the model handles long strings far better than the open models do, but it still helps to isolate them.
- aspect_ratio - ten options,
16:9by default, with no extreme banners (that's the Flash model's trick). Pick the frame first, because it changes how the model lays the composition out. - resolution -
1k,2k(same price as 1k) or4k(dearer). For anything with small print, go 2k and stop worrying about money; for a final print poster, 4k.
Outputs: images (IMAGE, into Save Image or a local upscaler, though there's little left to upscale) and task id (STRING - keep it, it's the exact handle for a failed run in the SpicyAPI console for around 14 days).
Install
Pack-level, nothing else to fetch, no model downloads, no VRAM:
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart, then Settings > SpicyAPI → paste a key from spicyapi.ai/console/keys → restart once more so your account's model list loads. Manager search is "SpicyAPI". Headless box? Use the SPICY_API_KEY environment variable.
Honest caveats
It's the most filtered image model in the pack. Google's moderation is famously aggressive and opaque, and there is no local escape hatch - no abliterated variant, no negative prompt field on this node, no community patch. Where people get burned on Nano Banana generally is expecting the price tag to buy freedom from refusals. It buys typography.
An invisible SynthID watermark is embedded in the output. Worth knowing before you ship it somewhere that checks provenance.
Seeds start on fixed. Queue the same graph twice and you get the first result back rather than a new one - by design, since every run is billed. Switch control after generate to randomize when you actually want a fresh sample, and remember each one costs money.
Cancelling doesn't cancel. Stopping a run in ComfyUI stops your wait; the job keeps going on SpicyAPI, gets charged if it succeeds, and lands in your console either way.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the image you want. | |
| aspect_ratio | COMBO | 16:9 | Output aspect ratio. |
| resolution | COMBO | 1k | Output size tier. |
| seed | INT | 00–2147483647 | This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |