Nodes/SpicyAPI/Nano Banana 2 · Text to Image
ComfyUI Node

Nano Banana 2 · Text to Image

4K for twelve cents, and it can Google your prompt first

By spicyapi-ai·Created 21 days ago·Updated 2 days ago· 2
Nano Banana 2 · Text to Image
    • images
    • task id
    ◄prompt►
    ◄aspect_ratio16:9►
    ◄resolution1k►
    ◄enable_web_searchfalse►
    ◄enable_image_searchfalse►
    ◄seed0►

    Nano Banana 2 is Gemini 3.1 Flash Image - the speed half of Google's image line, sitting under Nano Banana Pro. There are no weights to download and there never will be, which is the whole reason a node like this exists: for a model with no open weights, an API node isn't a convenience, it's the only door. You wire it into the graph next to your local upscaler and your local Wan install and it behaves like any other generator, except the generation happens on someone else's GPU and your prompt leaves your machine.

    What it's actually good at

    Cheap speed. The price ladder is $0.036 per image at 0.5k, $0.0536 at 1k, $0.0808 at 2k and $0.1208 at 4k, so it's the tier you use for volume: storyboard frames, twenty variations of an idea, the throwaway images you'd resent paying $0.19 for. It's also the tier with the weird aspect ratios - fourteen of them, including 1:8 and 8:1, which is genuinely useful for banners, phone-wallpaper strips and those absurdly tall verticals that no local checkpoint will make for you honestly.

    And it can look things up before it draws. That's the part people miss.

    How the node runs

    SpicyAPI nodes are one thin HTTP client per model. The installed pack asks SpicyAPI for the live model catalogue at startup, and each model's published input schema becomes the node's widgets - so the options on the node are exactly what the model accepts, no more. When you hit Run, the node quotes the job first, refuses it if the quote is above your Max cost per run setting, submits it, then polls and prints progress on the node itself until it downloads the result and converts it to a normal ComfyUI IMAGE tensor. Nothing is cached or run locally; the only thing on your disk is the pack.

    The inputs that matter

    Five widgets, all required, and only two of them are interesting:

    • prompt - plain text, multiline. Describe the image. There's no negative prompt field on this node, so don't go looking.
    • resolution - 0.5k, 1k (default), 2k or 4k. This is the money dial. Anything you're going to upscale or crop anyway can start at 0.5k.
    • aspect_ratio - defaults to 16:9, with the long 8:1 and 1:8 options.
    • enable_web_search - "look up current facts on the web before drawing." Turn it on when the prompt names something that changed recently (a product, a current event, a building that just opened) and the model would otherwise hallucinate it from stale training data. It costs more.
    • enable_image_search - "look up reference pictures on the web before drawing," same idea but for visual reference. Also costs more.

    Outputs are images (an IMAGE - wire it to Save Image or straight into a local img2img/upscale chain) and task id, a string with the SpicyAPI task id. That second output is worth wiring to a Show Text or a note: when a run fails, the task id is what support asks for, and it's what you search in the SpicyAPI console to find the job up to 14 days later.

    Install

    Same for every node in this pack, and there's nothing else to install - the Python package declares zero dependencies beyond what ComfyUI already ships:

    cd ComfyUI/custom_nodes
    git clone https://github.com/spicyapi-ai/comfyui-spicyapi
    

    Restart ComfyUI, then open Settings > SpicyAPI, paste a key from spicyapi.ai/console/keys and restart once more so the node list is rebuilt from your account's catalogue. On a headless box, set SPICY_API_KEY in the environment instead. Manager users can search "SpicyAPI" and install from there.

    Where people get burned

    Three things, in order of how often they'll bite you:

    1. The price badge is a rate, not a total. The node shows the per-image or per-second price for the options you picked and updates as you change them; the actual charge is printed after the run. Set a max cost per run once and stop worrying about it.
    2. Google's filter is Google's filter. Nothing about this node can bypass it - there are no weights to patch, no abliterated variant to download. If your prompt trips the model, it trips. The pack's own error table covers the fixed cases: 40310 means your sign-up email isn't verified, and 40004 means the exact combination of options you chose isn't served - change the option named in the message.
    3. Every image carries an invisible SynthID watermark. That's a Google property, not a pack one, and it survives the round trip.

    One more, since it catches people out mid-session: the node list is fetched when ComfyUI starts. If a model you saw on the site is missing from your node search, restart - no update, no reinstall.

    CategorySpicyAPI/Image/Google

    Inputs (6)

    NameTypeDefaultDescription
    promptSTRINGDescribe the image you want.
    aspect_ratioCOMBO16:9Output aspect ratio.
    resolutionCOMBO1kOutput size tier.
    enable_web_searchBOOLEANfalseLook up current facts on the web before drawing.
    enable_image_searchBOOLEANfalseLook up reference pictures on the web before drawing.
    seedINT00–2147483647This 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)

    NameTypeDescription
    imagesIMAGE—
    task idSTRINGThe SpicyAPI task id, for the console logs or support.