Nodes/ComfyUI-YogurtNodes/GRSAI Generate Image
ComfyUI Node

GRSAI Generate Image

Nano Banana without a GPU — GRSAI's hosted image API, in your graph

By yogurt7771·Created 2 years ago·Updated 9 days ago· 1
GRSAI Generate Image
  • image
  • image1
  • image2
  • image3
  • image4
  • history
  • image
  • text
  • history
api_key
base_url
model_namenano-banana-pro
system_prompt
prompt
aspect_ratioauto
image_size1K
retry_count1
poll_interval_ms2000
max_wait_seconds300
chat_template<-system-> {{system_instruction}} <-/system-> <-user-> {{prompt}} <-/user->
proxy_url
timeout0
image_urls
extra{}
draw_typeauto

Remember the "Nano Banana" hype - Google's Gemini image model that people were calling the best edit model around, and then couldn't run locally? GRSAI Generate Image is the workaround: it calls a third-party hosted API that serves nano-banana and friends (gpt-image, sora-image) and drops the result back into ComfyUI as a normal IMAGE tensor. No 3090, no quantization dance - just a credit card and an API key.

It's one of the many LLM/API nodes in the YogurtNodes pack (yogurt7771/ComfyUI-YogurtNodes). If you're already running the Gemini/OpenAI siblings from this pack, this one slots into the same family: async submit, poll until done, return tensors.

How it works

The node submits your prompt to GRSAI's /v1/draw/ endpoint, then polls at poll_interval_ms (default 2000ms) until the job finishes, giving up after max_wait_seconds (default 300). The finished image comes back as an image output you can preview, save, or pipe straight into an upscale pass. It also returns text (often the model's caption or status) and history for chaining.

The model_name dropdown is the fun part: defaults to nano-banana-pro, but the full list includes gpt-image-2, gpt-image-1.5, sora-image, and the whole nano-banana line (-fast, -pro, -4k-vip). These are the hosted-API names, not the open weights - this is a paid service, and the -vip/-4k variants are the premium tiers. Mind the bill.

Inputs that matter

  • prompt - the only thing you must write. Text-to-image, or edit instructions when you also feed an image.
  • model_name - pick your poison. nano-banana-pro is a solid default for editing; the others trade speed/cost.
  • aspect_ratio and image_size - ratio (auto, 1:1, 16:9…) and size (1K/2K/4K). 4K exists; it's also where the wait and the price go up.
  • draw_type - auto infers the endpoint from the model name. Leave it alone unless you know why you're changing it.
  • api_key - the widget, or the pack's api_key.json / env fallback. GRSAI keys come from grsaiapi.com.

For editing, feed image (plus image1image4) as reference, or pass URLs through image_urls - it accepts a JSON array or newline/comma-separated list.

Outputs: image, text, history.

Install

Standard YogurtNodes procedure - ComfyUI Manager (search "YogurtNodes"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/yogurt7771/ComfyUI-YogurtNodes.git
cd ComfyUI-YogurtNodes
pip install -r requirements.txt

Restart, then find it under Yogurt Nodes / LLM. Dependencies are just requests and pillow-adjacent stuff - nothing heavy, because the heavy lifting happens on someone else's server.

Troubleshooting

The honest warning first: GRSAI is a small third-party API with almost no community footprint - I couldn't find meaningful Reddit or forum discussion of it. Treat it as a paid convenience, not infrastructure. That means:

  • "It hangs forever." You're polling a remote job. Check max_wait_seconds - bump it if 4K or the -vip models are timing out on a busy server. And set timeout on each request; 0 (never) can strand a queue.
  • API key/auth errors - the key has to be the GRSAI one, not a Google one. The nano-banana names are GRSAI's, not Google's.
  • Cost surprises. Every successful generation is a paid API call, and retries (retry_count) repeat the request. If a workflow loops on a batch, the bill loops too.
  • proxy_url - same format as the other Yogurt LLM nodes (protocol://user:pass@addr:port); set it if you're behind a proxy.

If you just want local image editing without subscriptions, this is not the node - that's what the Qwen / Flux-inpaint side of your stack is for. But if you want the newest hosted model in the middle of a ComfyUI workflow without a GPU upgrade, this is about as plug-and-play as it gets.

CategoryYogurtNodes/LLM

Inputs (22)

NameTypeDefaultDescription
api_keySTRINGAPI key for accessing the GRSAI API
base_urlSTRINGBase URL for the GRSAI API, leave blank to use config/env/default host
model_nameCOMBOnano-banana-proGRSAI model name from the GRSAI documentation
system_promptSTRINGOptional system prompt prepended locally before the request prompt
promptSTRINGPrompt content for image generation or editing
aspect_ratioCOMBOautoOutput image ratio documented by GRSAI
image_sizeCOMBO1KOutput image size documented by GRSAI
retry_countINT1Number of retries when submit or poll fails
poll_interval_msINT2000Polling interval in milliseconds for task result queries
max_wait_secondsINT300Maximum total time to wait for GRSAI task completion
chat_templateSTRING<-system-> {{system_instruction}} <-/system-> <-user-> {{prompt}} <-/user->Local prompt template used to combine the system prompt and prompt
proxy_urlSTRINGProxy URL, format: protocol://user:pass@addr:port
timeoutINT00–2147483647Timeout for each request in seconds, 0 means no timeout
imageoptIMAGE
image1optIMAGE
image2optIMAGE
image3optIMAGE
image4optIMAGE
image_urlsoptSTRINGReference image URLs or data URLs, accepts JSON array or newline/comma separated values
historyoptHISTORY
extraoptSTRING{}Extra request parameters in JSON format
draw_typeoptCOMBOautoEndpoint type for /v1/draw/. Use auto to infer from the selected model name

Outputs (3)

NameTypeDescription
imageIMAGE
textSTRING
historyHISTORY