This is not the same thing as Developer Guide · Occasional multi-image output. That section describes thinking drafts the model produces on its own during complex edits (successive revisions of one design — keep the last one). This page is about multiple images you explicitly asked for, each a separate deliverable — where “keep the last one” silently throws away what the user wanted. See Telling them apart below.
At a glance
What the response looks like
A “give me 3 logo variations” prompt actually returns:What prompts trigger it
Triggering is probabilistic and driven by prompt shape. Trigger rates from 8 runs per prompt:How many can you get
Asking explicitly for 6 and for 10, 6 runs each:
When it triggers you get the count you asked for; when it doesn’t, you fall back to 1.
finishReason stays STOP, so 10 is not a ceiling we hit — just the highest we tried.
Billing: the two models behave in opposite ways
This is the part that matters most.gemini-3.1-flash-image (Nano Banana 2) — metered, count multiplies straight through
Each image adds a fixed token amount to candidatesTokensDetails, so output tokens grow strictly linearly with the count:
imageSize applies to every image, and the per-image amount follows the tier:
This table applies to
gemini-3.1-flash-image (NB2) only. Pro uses a different schedule — measured twice each on the same prompt:Pixel dimensions are identical for both (1408×768 / 2816×1536 / 5632×3072), but NB2 charges more tokens per image at the 2K and 4K tiers.
Pro’s breakdown lives in Usage Fields and Output Explained;
since Pro bills a flat rate per call, those token counts never reach a Pro invoice.
gemini-3-pro-image (Nano Banana Pro) — flat per call, extra images are free
Pro bills $0.09 per call regardless of tokens. Same “3 logo variations” prompt, 8 runs:
Three images cost the same as one. Pro also prices 1K–4K identically, so “three 4K variations in one call” and “one 1K image” both cost $0.09.
Telling them apart from thinking drafts
The two look nearly identical — same candidate, both carrythoughtSignature, neither is marked thought: true. The tell is whether text appears between the images:
Measured contrast: a complex edit prompt (remove background + studio gradient + headline + price badge + relight) returned 1 image in 6/6 runs, layout
image; the step-guide prompt returned 3 images in 8/8 runs, layout text image text image text image.
Parsing code
responseModalities strips the captions
If you want the images without the prose, pass responseModalities: ["IMAGE"] in generationConfig. Same variations prompt, 12 runs each:
- Text parts are suppressed entirely (0/12), yet all three images still come back.
- Output drops by 258 tokens (−6.3%) — real prose removed, not noise.
- Note: this defeats the “text between images” test above, since there is no text left. If you rely on layout to detect drafts, don’t set this parameter.
For ordinary single-image prompts,
["IMAGE"] saves only about 2.8% (not statistically significant) — single-image responses rarely carry text anyway. This parameter only pays off in the multi-image interleaved case.The OpenAI-compatible path returns all images too
On/v1/images/generations, multiple images come back as multiple elements of the data array — 5 of 6 runs returned 3 distinct elements:
Quick recap
- Nano Banana models can return multiple independent finished images per call — up to 10 measured, all inside one candidate’s
parts - Prompt shape drives it: step guide (8/8) > storyboard (7/8) > N variations (5/8); merely listing N objects never triggers it (0/8)
- You get the count you asked for, with
finishReasonstillSTOP - The two models bill it in opposite ways: NB2 is metered and multiplies per image (10 images = $0.278); Pro is flat per call, so extra images are free (3 images still $0.09)
- Per-image tokens on NB2: 1K = 1120, 2K = 1680, 4K = 2520;
imageSizeapplies to every image (Pro uses a different schedule — see the table above) - Don’t blindly “keep the last one”: text between images = interleaved, keep them all; images back to back = drafts, keep the last
- For images without prose use
responseModalities: ["IMAGE"]— about 6% cheaper, but it disables the layout test above
Related documentation
Nano Banana Developer Guide
Request construction, robust parsing, and the thinking-draft flavour of multi-image output
Usage Fields and Output Explained
Response structure, usage field meanings, and reconciliation
Nano Banana Series Pricing
Per-call and metered pricing for all four models
Image Compression and Output Resolution
Values and effects of imageSize and aspectRatio