Generate Image
Create AI-generated images from text prompts using 23 provider models with configurable style, aspect ratio, resolution, and quality.
Overview
Generate Image is the primary text-to-image node. It accepts a text prompt (with optional style presets, negative prompts, and reference images) and produces an image via one of 23 AI providers. The default provider is Nano Banana Pro at 16:9 aspect ratio.
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
| Provider | select | nano-banana-pro |
AI model to use for generation (24 options) |
| Prompt | text | "" |
Text description of the image to generate. Each model has its own prompt-length limit – 20 000 characters on the Nano Banana / GPT Image families, 5 000 by default, and as little as 1 000 on Z-Image and Seedream 5 Lite. The editor counts down to your model’s limit as you type, and a prompt still over it at run time is shortened to fit rather than refused |
| Style | select | "" |
One of 16 presets (Photorealistic, Cinematic, Anime, Digital Art, Oil Painting, Watercolor, Children’s Book, Comic Book, Pixel Art, 3D Render, Pencil Sketch, Pop Art, Minimalist, Retro/Vintage, Fantasy, Noir) or “Custom…” free text. Style text is appended to the prompt at execution time. |
| Negative Prompt | text | "" |
Elements to exclude. Sent natively for imagen4, ideogram, qwen; appended as “Avoid:…” for other providers. |
| Aspect Ratio | select | "16:9" |
Provider-specific ratio sets (see table below) |
| Resolution | select | varies | Available for nano-banana-pro, nano-banana-2, flux, flux-flex, gpt-image-2 and the GPT Image 2.5 models: 1K, 2K, 4K |
| Quality | select | varies | Available for gpt-image (medium/high), seedream/seedream-5-lite (basic 2K / high 4K), and seedream-5-pro (basic 1K / high 2K) |
| Rendering Speed | select | – | Available for ideogram-v3: turbo, balanced, quality |
| Seed | number | – | Reproducibility seed (supported by select providers) |
| Style Type | select | – | Ideogram-specific style parameter |
| Expand Prompt | boolean | – | Ideogram-specific prompt expansion toggle |
| Reference Images | image list | – | Supported by nano-banana, nano-banana-pro, nano-banana-2, nano-banana-2-lite only. Upload or select from library. |
| Character/Asset References | references | – | Connect Character, Object, or Location nodes for visual consistency |
| Strength | slider | varies | i2i denoising strength. Shown only for providers that support it (ideogram-remix, qwen-i2i). Lower = stays closer to the base image. |
| Guidance Scale | slider | varies | Prompt-adherence guidance. Shown only for providers that support it (qwen-i2i, qwen-edit). |
baseImageUrl |
image url | – | Inpaint / refine base image. Set automatically from the node’s own current result at run time (or a connected image). See Inpainting & Refine. |
maskUrl |
mask url | – | Inpaint mask (white = edit, black = keep). Produced by the in-panel Mask Painter or a Generate Mask node. |
promptPrefix / promptSuffix |
text | – | Optional pre/post text wrapped around the prompt at run time (settings panel → Pre & post text; hidden from app users; captured by presets). See Prompt pre & post text. |
Inputs & Outputs
Inputs (Handles v2.1):
The Generate Image node has 6 typed input handles on its left edge (color-coded pips), stacked from the bottom up: Prompt (closest to the corner) → Negative → References → Assets → Elements → Look. Click any handle pip to manage connections (jump to, disconnect, add new). Drag from a handle as usual to wire upstream nodes.
| Handle | Color | Accepts | Description |
|---|---|---|---|
prompt |
pink | Text producers (Text Prompt, AI Writer, Generate Script, Combine Text, Image-to-Text, Generate Text) + all parameter pickers (as {Label} variable sources) |
Main prompt text. Picker values are also available as {Picker Label} in the prompt regardless of wiring — variable substitution is workflow-wide. |
negative |
red | Text producers | “Avoid” string — what the model should not generate. Useful for sharing one negative across many Generate Image nodes. |
references |
cyan | Image producers (Upload Image, Generate Image, Edit Image, Image-to-Image, Modify Image, Upscale, Remove Background) | Reference images for the provider. Order matters — provider semantics depend on the order of refs. |
assets |
rose | Identity nodes (Character, Location, Object, Face) | Identity-locked refs with @mention expansion and canonical descriptions. (Renamed from subjects in v2.1.) |
elements |
indigo | “Subject / Object” family pickers (Person, Pose, Animal, Vehicle, Weapon, Furniture, Material, Held-Prop, Styling, Instrumentation) | Pickers wired here tail-append their value to the prompt at execution time. |
look |
indigo | “Look” + “Camera” family pickers (Style, Lens, Lighting, Color Look, Framing, Camera Format, Photographer, Aesthetic, Era, Photo Genre, Mood, Atmosphere, Backdrop, Exposure Settings, Render Quality, Composition Effects, Post-Process Effects, Tone, Camera Motion, Temporal, Transition, Character FX) | Pickers wired here tail-append their value to the prompt — same runtime path as the legacy cinematography handle. |
Variable defaults: any {Label} reference can carry a fallback with || — {Label || default}. If nothing provides Label, the trimmed default is used; e.g. generate a {person || man} running becomes “generate a man running” when no person is wired, or uses the wired/picked value when it is. {person || } (empty after ||) resolves to nothing when unset.
Unresolved variables: Generate Image composes its prompt through the shared prompt composer, so a plain {person} (no ||) naming a node that exists but produced nothing also resolves to empty text; a {person} naming no node anywhere in the workflow refuses the run with an unresolved_reference error before anything is dispatched or credited. Text that arrives through a wired input (rather than a {Label} reference) is never rewritten.
Variable highlighting: in the prompt editor (config panel and the ⌘E prompt modal), {Label} variables are highlighted — cyan when a matching upstream node is wired (or for built-in template variables like {userPrompt}), amber when nothing upstream provides that label yet. Amber means “nothing wired”, not “will fail”: a {Label || default} variable still resolves to its default at run time. Inside {Label || default}, the default text renders bright when it will actually be injected (nothing wired, or the wired node’s text is empty) and greyed-out with a strikethrough when a wired node’s value overrides it.
Outputs:
image(cyan) — generated image URL. Shares the References color since both are “image” type.
Managing connections: Click any handle pip to open a popover that lists currently connected nodes. Each row has a “jump to” button (centers the canvas on the upstream node) and a “disconnect” button. The popover also has an “Add new” button that opens a filtered node picker showing only types compatible with that handle.
Connection validation: Dropping an incompatible connection (e.g., a Character node onto the Prompt handle) is rejected — the line flashes and the connection is not created. Type-aware drop targets help guide users to the right port.
Visual states: Pips have three modes — idle (hollow ring in border color, dim brand-color icon), connecting (drag in progress; this pip is the source OR a valid compatible target → hollow ring in brand color, full-opacity icon), and connected (solid brand-color fill, white icon, count badge revealed on hover/select when ≥2 connections).
Legacy handles are migrated automatically when workflows load:
in→ classified by upstream type: text →prompt, image →references, identity →assets, picker →lookorelements(by family).cinematography/style→lookorelementsbased on the source picker’s family.subjects→assets.
The migration runs on the frontend (loadWorkflow) plus three defensive backend sites (POST/PATCH, MCP import/update, orchestrator pre-execution) so the rewrite reaches the DB even for workflows touched by external clients.
Supported Providers
| Provider | Label | Description | Aspect Ratios |
|---|---|---|---|
| nano-banana | Nano Banana | Fast drafts, iteration, storyboards | 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 5:4, 4:5, 21:9 |
| nano-banana-pro | Nano Banana Pro | Higher detail, production-ready images | Same as Nano Banana |
| nano-banana-2 | Nano Banana 2 | Updated Nano Banana with web grounding | Same as Nano Banana |
| nano-banana-2-lite | Nano Banana 2 Lite | Fast, low-cost 1K drafts and iteration (Gemini 3.1 Flash-Lite). Flat 20 credits per image — no resolution tiers. | auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 4:5, 5:4, 21:9, 4:1, 1:4, 8:1, 1:8 |
| grok | Grok | Creative and stylized imagery | 1:1, 16:9, 9:16, 3:2, 2:3 |
| grok-2 | Grok Imagine 2 | Latest Grok (Imagine Image 2.0) — expressive, high-contrast imagery, priced the same as Grok v1. Generations can chain into the free Grok segment map and region-targeted edits (see Edit Image). Attach ONE reference image and it auto-routes through Grok’s segment-map → image-edit chain (grok-2-i2i, same 10-credit price) — the result preserves the reference’s composition while applying your prompt. Extra references beyond the first are ignored. |
1:1, 16:9, 9:16, 3:2, 2:3 |
| flux | Flux | Photorealistic, highest quality output | 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3 |
| flux-flex | Flux Flex | Flexible Flux, fast generation | Same as Flux |
| flux-kontext | Flux Kontext | Context-aware generation and editing | 1:1, 16:9, 9:16, 4:3, 3:4, 21:9 |
| flux-kontext-max | Flux Kontext Max | Highest quality Kontext generation | Same as Flux Kontext |
| gpt-image | GPT Image | Text rendering, complex compositions | 1:1, 3:2, 2:3 |
| gpt-image-2 | GPT Image 2 | Higher resolution GPT Image; supports 1K/2K/4K | 1:1, 16:9, 9:16, 4:3, 3:4 |
| gpt-image-2-5-flare | GPT Image 2.5 Flare | The fast one — start here. Higher quality than GPT Image 2 at roughly half the latency. Best for iteration, social/creator content, campaign variants, thumbnails and high-volume work. Resolution-tiered pricing: 15 credits at 1K / 25 credits at 2K / 40 credits at 4K — same as GPT Image 2 at 1K and cheaper above it. | auto, 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, 27:16, 16:27, 9:8, 8:9 |
| gpt-image-2-5-sunburst | GPT Image 2.5 Sunburst | The precise one. Trades generation time for tighter control and detail fidelity — brand-sensitive and production work: packaging, diagrams, ecommerce retouching, polished campaign creative. Same price as Flare; expect a longer run. | Same as GPT Image 2.5 Flare |
| imagen4 | Imagen 4 | Google’s latest, strong prompt adherence | 1:1, 16:9, 9:16, 4:3, 3:4 |
| imagen4-fast | Imagen 4 Fast | Fast Imagen, lower latency | Same as Imagen 4 |
| imagen4-ultra | Imagen 4 Ultra | Highest quality Google image gen | Same as Imagen 4 |
| ideogram-v3 | Ideogram V3 | Fast text-to-image | 1:1, 16:9, 9:16, 4:3, 3:4 |
| qwen | Qwen | Versatile, good at diverse styles | 1:1, 16:9, 9:16, 4:3, 3:4 |
| seedream | Seedream | Photorealistic, high detail | 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9 |
| seedream-5-lite | Seedream 5 Lite | Latest Seedream, fast and sharp | Same as Seedream |
| seedream-5-pro | Seedream 5 Pro | Flagship Seedream, best instruction following. Quality-tiered pricing: 3 credits at basic (1K output) / 6 credits at high (2K output). | Same as Seedream |
| z-image | Z-Image | Fast, lightweight generation. Shortest prompt limit in the catalog: 1 000 characters | 1:1, 16:9, 9:16, 4:3, 3:4 |
| wan-2.7 | Wan 2.7 | Text-to-image, 1K/2K/4K resolution, up to 9 optional reference images | 1:1, 16:9, 9:16, 4:3, 3:4, 21:9, 8:1, 1:8 |
| wan-2.7-pro | Wan 2.7 Pro | Higher quality text-to-image, 1K/2K/4K resolution | 1:1, 16:9, 9:16, 4:3, 3:4, 21:9, 8:1, 1:8 |
| flux-2-klein | Flux 2 Klein (Open) | BFL Flux 2 9B Klein via Replicate — fast, no safety filter. Resolution 0.5 / 1 / 2 / 4 MP (default 1 MP). 3 credits at 1 MP (0 refs), scaling with resolution and reference count. | Same as Flux |
| flux-2-pro | Flux 2 Pro (Safety Tolerance) | BFL Flux 2 Pro flagship via Replicate — safety_tolerance pinned to 5 (max for Pro). Resolution 0.5 / 1 / 2 / 4 MP (default 2 MP). Per-megapixel pricing: 23 credits at 2 MP (0 refs). |
Same as Flux |
| flux-2-max | Flux 2 Max (Safety Tolerance) | BFL Flux 2 Max via Replicate — safety_tolerance=5, up to 8 reference images. Resolution 0.5 / 1 / 2 / 4 MP (default 2 MP). Per-megapixel pricing: 70 credits at 2 MP (0 refs), 140 credits at 4 MP (0 refs), scaling with resolution and refs. |
Same as Flux |
Choosing between GPT Image 2.5 Flare and Sunburst
They are siblings split by workload, not by generation — same price, same thirteen aspect ratios, same 1K/2K/4K tiers, same 16-image edit cap.
- Flare is the default. Higher quality than GPT Image 2 at about half the latency. Reach for it when you are iterating or generating at volume.
- Sunburst spends longer per image to buy extra precision and detail fidelity on edits. Reach for it for the final, brand-sensitive render.
If you are unsure, draft on Flare and finish on Sunburst.
Inpainting & Refine
Once a Generate Image node has a result, you can edit it in place — re-render a painted region (inpaint) or refine the whole image (image-to-image) — without adding a separate Edit Image / Modify Image node.
Inpaint (masked edit)
When the node has a current result, open its config panel and scroll to the Inpainting Mask painter. Paint over the area you want to change:
- White = edit, black = keep. Only the masked area is regenerated; everything outside the mask stays pixel-identical to the original.
- Run the node again with a new prompt describing the change. The provider re-renders, and the masked region of the new image is composited back over the original.
This works on every image provider, not just one model. A server-side composite floor restricts the change to the masked region (out = base·(1−mask) + result·mask), so even providers that have no native mask parameter produce a clean, localized edit.
Strong instruction-following editors (gpt-image, gpt-image-2, gpt-image-2-5-flare, gpt-image-2-5-sunburst, nano-banana, nano-banana-pro, nano-banana-2, nano-banana-2-lite, seedream, seedream-5-lite, seedream-5-pro, qwen, flux-kontext, flux-kontext-max) additionally get a natural-language region hint injected into the prompt (e.g. “Apply the following change only to the upper-left region…”) for better in-region results. This is automatic — no user action required. Other providers rely on the composite floor alone, which still keeps the edit localized.
The mask comes from either:
- The in-panel Mask Painter (click Edit Mask to paint or touch up), or
- A wired Generate Mask node, which auto-segments a subject from a text description (white = subject) and can seed the painter.
Refine from this result
The node also exposes a ↻ Refine from this result affordance. It takes the current result as the base for a full-image image-to-image refine (no mask) and re-runs the provider over the entire frame. Use it for whole-image iteration — “make the whole thing more cinematic”, “warmer grade”, “more detail” — where you want to evolve the image rather than surgically patch one spot.
For providers that expose them, the Strength (i2i denoising) and Guidance Scale sliders appear in the panel and let you control how far the refine moves from the base image.
Refine regions (Grok Imagine 2)
With the grok-2 provider, the panel adds a Refine Regions section powered by Grok’s task-chained editing (see Edit Image):
- Detect regions (free) — runs a segment map over the active result and returns named regions (e.g. sky, person, tree) as chips. Hovering or selecting a chip outlines that region in place on the result preview (the region’s exact shape, tinted in the chip’s color).
- Tick the regions to change, write an edit prompt, and Apply. Leave nothing ticked for a whole-image edit.
- The edit lands as a new version in the node’s result strip — and carries its own task reference, so it can be segmented and refined again, iteratively.
Region editing is grok-2-only: the underlying endpoint references the prior grok-2 generation on the provider side rather than accepting an image, so it can’t serve other providers or uploaded images (results from before this feature shipped lack the task reference and show a re-run hint). A region edit is priced the same as a grok-2 generation; the segment map costs nothing.
Credits
An inpaint or refine edit is one generation at the provider’s normal cost — there is no extra surcharge for the mask or the composite step. The price is exactly the per-provider Generate Image cost listed in Supported Providers above (e.g. nano-banana-pro inpaint costs the same as a fresh nano-banana-pro generation). The same holds for a grok-2 region edit, and its region detection is free.
When the provider’s safety filter blocks a request
A provider’s safety filter can occasionally block a benign prompt. For models the catalog flags as having a non-deterministic filter (currently gpt-image-2, gpt-image-2-5-flare and gpt-image-2-5-sunburst), Nodaro automatically retries the identical request once, at no extra cost, before giving up. A model without that flag — and every model on a second block — fails after a single attempt.
- Fallback offer. When the catalog declares a fallback for the model that failed, the node shows the block in amber with a one-click “Try on Nano Banana Pro” button — it switches the node’s provider and re-runs the request. Nodaro never switches models on its own; you always click through.
- Copyright and likeness blocks are never retried. A match against protected IP or a real person’s likeness doesn’t change on a second try, so the job fails after one attempt with the provider’s own rejection reason.
- Credits are always refunded for a blocked generation. The reservation is released and the job’s
credit_statusreads"refunded"— see API integration §12.
The failed job carries a structured error_hint that an API/SDK/MCP caller can read instead of parsing error_message:
{ "kind": "safety-block", "class": "safety", "retried": true, "suggestedProvider": "nano-banana-pro" }
class is "copyright", "likeness", or "safety"; retried is true only when the automatic retry already ran; suggestedProvider is present only when a fallback model is available for the one that failed. Full shape: API integration §8.
Cinematic direction by id (direction, API / SDK)
On the canvas you set a look by wiring parameter-picker nodes into the
look handle. A direct API / SDK / MCP caller does the same thing with the
optional direction object on POST /v1/generate-image: a flat map of catalog
ids, one key per dimension, which the platform folds into the prompt as its own
hint clauses. You send ids; the platform owns the wording, so a saved run picks
up improved phrasing instead of freezing the text your client wrote.
"direction": {
"shotSize": "wide-shot",
"lens": "wide-24mm",
"timeOfDay": "golden-hour",
"style": "anime",
"mood": ["happy", "joyful"]
}
- Keys are the picker field names this node’s
lookpickers already use — framing (shotSize,angle,coverage,composition,vantage), camera (cameraFormat,lens), exposure (aperture,shutterSpeed,isoValue), lighting (timeOfDay,lightingStyle,lightingDirection,lightingRatio,colorTemperature), look (colorLook,atmosphere,postProcess,style,mood,aesthetic,photoGenre,photographer,renderQuality), scene (setting,era,backdrop), plusposeandcompositionEffect. Valid ids come fromGET /v1/picker-catalogs— the same catalogs the pickers read; on a deployment with registered catalog packs that endpoint also lists pack-added ids, which are accepted but render no clause. - A value is one id or an array. Multi-pick dimensions honor their own cap; a single-pick key handed an array takes the first entry. Exceeding a dimension’s cap truncates rather than 400ing, and unknown keys / unknown ids are skipped silently — but the wire bounds (8 entries per key, 100 characters per id) do reject.
- Absent ≠ empty. A missing key means “no hint”, never a default; a
directionthat renders nothing leaves your prompt byte-for-byte untouched. - The clauses land in a trailing
[style]:section — a blank line after your prompt, then a film line (cameraFormat,colorLook,style,era) and a scene line for everything else, each in the platform’s canonical order (not your object’s key order). Nothing selected means no section at all. The assembled prompt is still truncated to the provider’s verified prompt cap.
Full semantics: API integration guide.
The same ids stored on the node
A Generate Image node can carry that same direction object (and the
structured prompt fields structured) in its own data, written by an API / MCP
author or by an app that emits Nodaro graphs. The canvas honors them: a
single-node run, a whole-workflow run and the config panel’s final-prompt
preview all fold them the same way, once, at the model call — so the graph
stores ids and the wording is produced fresh each run instead of being frozen
into the prompt text.
Stored ids are additive to any wired Framing / Lighting / Style picker node: the wired hint lands first, the stored ids after, exactly as two wired pickers of one family behave. A node that carries neither key is untouched — its prompt reaches the model byte-for-byte as before. Node presets and workflow export/import capture the ids along with the rest of the node, which is deliberate: a preset should carry its look.
Best Practices
- Use Nano Banana or Z-Image for rapid iteration and storyboarding due to fast generation speed.
- Use GPT Image for scenes requiring accurate text rendering (signs, labels, UI mockups).
- Append style presets rather than writing style instructions in the prompt – the system handles appending automatically.
- For models that support reference images (nano-banana, nano-banana-pro, nano-banana-2, nano-banana-2-lite), connect Character nodes upstream for consistent character appearance across shots.
- Set negative prompts for all providers to reduce unwanted artifacts. For imagen4/ideogram/qwen, the negative prompt is sent natively; for others it is appended as “Avoid:…”.
Common Use Cases
- Generating hero images for social media posts or ads.
- Creating storyboard frames from script scene descriptions.
- Producing product visualization shots with style consistency.
- Building character sheets by generating multiple angles with reference images.
- Creating background art or environment concepts for video compositions.
Tips
- Use 1K resolution and medium quality during iteration, then switch to higher settings for final output.
- The style dropdown supports a “Custom…” option for free-text style descriptions when presets are insufficient.
- When connecting a Provider parameter node upstream, it overrides the provider selection on this node, which is useful for batch-switching models across multiple Generate Image nodes.
- Name your upload nodes to mention them. Give a wired Upload Image node a Label and you can address it in the prompt by the slug of that label —
@town:1puts that picture’s binding exactly where you typed it, and@town:1:backgroundsays what to take from it. Roles are the usual media set (object,person,face,clothes,background,style,pose,texture) or any custom single word, and~lock/~nolockwork as they do on character mentions. Unnamed uploads still attach as before — mentioning is optional, not required (an unlabelled node falls back to its node type, so it is still addressable as@upload-image:1if you want it). A label starting with a digit (3D Render) can’t form a mention; rename it if you want to address it inline. Full grammar: Reference Roles guide.
Trained character routing (Cloud edition)
When you @mention a trained character — a character with a successful LoRA — in the prompt, this node automatically routes through the trained Flux LoRA on Replicate instead of the selected provider. The dropdown provider’s price is replaced by 20 credits/image.
Two or more trained @-mentions in one prompt fall back to the selected provider + reference-image injection (multi-character LoRA composition is Phase 2).