arkennemasis fal · Nano Banana Pro · $0.15-0.30/image
15 cents an image, and the one to pick for text
- images
- image_paths
- description
- info
Nano Banana Pro is Gemini 3 Pro Image: 4K native output, thinking mode as standard, and the best in-image text rendering in the closed lineup. $0.15 an image, doubling to $0.30 at 4K. It's the expensive one in this family and, for a specific job, the one that's actually worth it.
When to pay the 15 cents
Text inside the image. That's the honest answer. Local models have improved at lettering but they still can't be trusted with a headline, a label, a menu, a poster, or a legible UI mockup - and this model can. If your shot has words in it that a human will read, paying 4× the base model's price is not a waste; it's the difference between a concept and a deliverable.
The other case is resolution. 1K is the default here, and it scales to 2K and 4K natively rather than by upscaling - so if the output is going to be printed, cropped hard, or used as a plate for a video model, the extra $0.15 buys real pixels. Think about it this way: 4K output at 30 cents is still cheaper than a 4K upscale pass on a rented GPU, and it doesn't invent detail that wasn't there.
The settings
prompt- the scene. Long, specific prompts work well here; Pro reasons about the composition before drawing.resolution-1K(1×),2K(2×)... and4Kat 2× per fal's published multiplier, i.e. $0.30. The node's live badge multiplies as you change it, so watch that number rather than doing arithmetic in your head.aspect_ratio- defaults to1:1on this node, and unlike the Nano Banana 2 family it doesn't advertise the extreme 4:1/8:1 ratios. Set it deliberately.num_images- 1 to 4, each billed at the multiplied rate.enable_web_search- off by default, +$0.015 when on. For anything referencing current products, this is cheap.system_prompt- a standing instruction that steers persona and style across the request. Good for "no text, no watermarks" or a house style.safety_tolerance- 1 (strict) to 6 (loose), default 4. Google'sIMAGE_SAFETYfiltering applies and the January 2026 policy tightened famous-IP and celebrity generation. No loosening trick exists at this layer; the filter is in the model.seed- an integer,-1for the model's choice.limit_generations- on by default, caps each prompting round at one image and ignores any number-of-images instruction in your prompt.
Note there's no thinking_level widget here - Pro is the thinking model, so it's simply on.
Outputs
images - batchable IMAGE output, ready for an upscaler, a video model's first frame, or a save node. image_paths - the files, under output/fal/fal-ai_nano-banana-pro/. description - the model's own text about what it produced. info - JSON with the request id, cost estimate, saved files and fal's raw answer.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart, or use ComfyUI-Manager (search arkennemasis). The pack's requirements.txt is one line - httpx, for its Codex nodes - and the fal provider uses the standard library, so no dependency surprises. Then:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
in the .env next to run_nvidia_gpu.bat. There's no key box on the node, and that's a feature: a typed key would be saved into every workflow JSON you share.
Where people get burned
- You spent 30 cents experimenting. Draft on the cheap node ($0.0398) or Nano Banana 2 ($0.08), then move the prompt you liked to Pro and spend the real money once.
- Four 4K images cost $1.20. Multipliers and
num_imagescompound. The badge shows it; the receipt ininfoconfirms it. - Square images again.
aspect_ratiodefaults to1:1here, notauto. - One image instead of four.
limit_generationsis on by default. - A blocked prompt with nowhere to go. Google refuses, and this family's filters are the strictest in the line. That's the standing argument for keeping a local model on the canvas for anything the hosted filter won't do.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The text prompt to generate an image from. | |
| num_images | INT | 11–4 | The number of images to generate. |
| seed | INT | -1-1–2147483647 | The seed for the random number generator. -1 leaves it to the model. |
| aspect_ratio | COMBO | 1:1 | The aspect ratio of the generated image. |
| output_format | COMBO | png | The format of the generated image. |
| safety_tolerance | COMBO | 4 | The safety tolerance level for content moderation. 1 is the most strict (blocks most content), 6 is the least strict. |
| system_prompt | STRING | Optional system instruction that steers the model's persona and output style across the request. Leave blank to omit; when provided, it is sent as the system instruction to Gemini (or as a system message on OpenAI-compatible providers). Empty leaves it out. | |
| resolution | COMBO | 1K | The resolution of the image to generate. |
| limit_generations | BOOLEAN | true | Experimental parameter to limit the number of generations from each round of prompting to 1. Set to `True` to to disregard any instructions in the prompt regarding the number of images to generate. |
| enable_web_search | BOOLEAN | false | Enable web search for the image generation task. This will allow the model to use the latest information from the web to generate the image. |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| image_paths | STRING | — |
| description | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |