Burve Google Image Gen
Gemini image gen inside your graph
- reference_images
- character_pipe
- previous_interaction
- reference_pack
- input_files
- video
- image
- thinking_image
- thinking_process
- system_messages
- generated_image_pipe
- response_text
- grounding_metadata_json
- interleaved_content
- interaction_pipe
This is the node that turns Google's Gemini image models - the "Nano Banana" family - into a regular node on your canvas. No diffusion checkpoint, no VAE, no VRAM math. You type a prompt, it calls Google's API, and an image comes back. That's the whole trade: you swap "hours of disk space and a GPU" for "a few cents per image and a network call."
It's genuinely useful in ComfyUI for the stuff local models are still bad at. Gemini image models nail text rendering in the image, follow long prose prompts well, and accept up to 14 reference images. If you've ever fought with a checkpoint that mangles your typography, this is the alternative. The trade is obvious too: it's closed, it's rate-limited, every image gets a SynthID watermark, and Google can change the filter or pricing overnight. For a character sheet or a storyboard it's hard to beat; for consistent bulk generation you probably still want local.
How it works
Under the hood it's the google-genai Python SDK talking to AI Studio, with your GEMINI_API_KEY read from the process environment. The model dropdown is a DynamicCombo: pick gemini-2.5-flash-image, gemini-3-pro-image-preview, or gemini-3.1-flash-image-preview, and the node reshows the relevant fields for that model. The 3 Pro model is the flagship - native 4K output, thinking mode, the works. The 3.1 Flash is the speed play, and it's the one that adds search_mode (web/image) and thinking_level controls.
The node is also patient in a way most API nodes aren't: it has a bounded request timeout (default 120s) and retries transient failures up to 5 times, backing off between attempts. It returns an explicit timeout error instead of hanging forever.
The inputs that matter
prompt- the description. Ignored the moment you connect acharacter_pipe.model- DynamicCombo; the fields below it change with your choice.resolution/aspect_ratio- per-model. 3 Pro goes up to4K; the others support0.5K/1K/2K/4K.seed- for reproducibility, with control-after-generate.search_mode/thinking_mode- and the three legacy toggles (enable_google_search,enable_image_search,enable_thinking_mode) that older workflows used before the per-model fields existed.system_instructions- optional guidance, e.g. from Burve System Instructions.reference_images- anIMAGE_LISTfrom Burve Image Ref Pack or Burve Character Planner.character_pipe- one-wire bundle from the planner; when it's connected, prompt, system instructions, and references all come from the pipe and your direct inputs are ignored.
Outputs
image- what you actually wanted, into a preview or Save Image node.thinking_image/thinking_process- the model's reasoning-stage images and text, if the model returns any.system_messages- the underrated one. When a run fails or comes back weird, this is where the finish reason and error text live. Check it before you re-ask the same prompt.
Install and key setup
Install the pack, then set the key. The README's Windows flow is the classic trap:
setx GEMINI_API_KEY "YOUR_REAL_KEY_HERE"
setx only affects new processes - close the terminal and fully restart ComfyUI or it won't see the key. On macOS standalone builds, shell profiles don't reliably reach GUI-launched apps; use launchctl setenv GEMINI_API_KEY "..." instead. Linux is the usual export in your shell rc. The pack needs google-genai>=1.68.0,<2 and a DynamicCombo-capable ComfyUI build (0.8.0+), which the requirements and pyproject.toml handle.
Common issues
The number-one failure is "API key is missing" when you're sure you set it - that's an environment visibility problem, not a Google problem. Burve Debug Gemini Key tells you exactly what ComfyUI sees. Community reports also show the free-tier goalposts moving (a free request/day allowance that Google kept changing), so a fresh key can still hit quota errors - set up billing on the key if that happens. And if you get a tiny black placeholder image plus No non-thinking image generated. in the thinking output, the request completed but returned no usable image part - read system_messages, retry the prompt, or switch to another model in the list.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| model | COMBO | 4 options: [object Object], [object Object], [object Object], [object Object] | |
| seed | INT | 00–18446744073709550000 | — |
| system_instructionsopt | STRING | — | |
| reference_imagesopt | IMAGE_LIST | — | |
| character_pipeopt | CHARACTER_GEN_PIPE | — | |
| aspect_ratio_overrideopt | STRING | Optional override for the selected model's aspect_ratio. Connect Burve Crop + Mask Load here. | |
| request_timeout_secondsopt | INT | 12010–1800 | Overall timeout budget for the Gemini request, in seconds. |
| retry_attemptsopt | INT | 51–10 | Total attempts for transient Gemini request failures. 1 disables retries. |
| api_modeopt | COMBO | auto | 3 options: auto, generate_content, interactions |
| response_modeopt | COMBO | text_and_image | 2 options: text_and_image, image_only |
| conversation_modeopt | COMBO | stateless | 2 options: stateless, stateful |
| previous_interactionopt | GEMINI_INTERACTION_PIPE | — | |
| reference_packopt | GEMINI_REFERENCE_PIPE | — | |
| input_filesopt | GEMINI_INPUT_FILES_PIPE | — | |
| videoopt | VIDEO | — | |
| video_urlopt | STRING | — | |
| temperatureopt | FLOAT | 1.000–2 | — |
| top_popt | FLOAT | 0.950–1 | — |
| grounding_rendereropt | STRING | Managed by the Burve frontend extension for Image Search attribution. |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| thinking_image | IMAGE | — |
| thinking_process | STRING | — |
| system_messages | STRING | — |
| generated_image_pipe | GENERATED_IMAGE_PIPE | — |
| response_text | STRING | — |
| grounding_metadata_json | STRING | — |
| interleaved_content | GEMINI_CONTENT_PIPE | — |
| interaction_pipe | GEMINI_INTERACTION_PIPE | — |