Skip to main content
Most people assume Gemini image models return exactly one image per call. They don’t. When the prompt asks for “N variations”, “a storyboard”, or “a step-by-step illustrated guide”, the model returns several independent finished images in the same response, each preceded by its own caption. We measured up to 10 images in one call. Findings below come from 92 live calls against the APIYI production gateway on 2026-08-27 (6 prompt shapes × 8 runs for trigger rates, plus count limits, a two-model comparison, resolution stacking, and the OpenAI-compatible path), cross-checked against 1,212 high-output records from 24 hours of production logs.
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:
And the usage:
All three sha256 hashes differ, and so do the file sizes (914KB / 632KB / 796KB) — three different designs, not three iterations of one.

What prompts trigger it

Triggering is probabilistic and driven by prompt shape. Trigger rates from 8 runs per prompt:
To get multi-image reliably, phrase it so the images have a narrative relationship — steps, panels, variations, styles.Merely listing N unrelated objects does not trigger it (0/8); the model draws them all into one image. This is the counterintuitive part: spelling out “generate 4 separate images” does not work, while “Step 1… Step 2…” does.

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.
Multi-image plus 4K moves the per-call cost up an order of magnitude. Three 4K images = 7,560 image tokens, measured at $0.18 per call — over 5× a single 1K image ($0.035).If your app passes user input straight through to the model, a casual “give me a few options” can trigger multi-image. Under metered billing, constrain the count in your prompt layer, or switch to the per-call Pro pricing below.

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.
For anything that needs options to choose from (logos, posters, editorial images), Pro’s per-call pricing is clearly cheaper.Three 4K images: Pro $0.09 vs NB2 metered ≈ $0.18. It flips for single 1K images, where NB2 ($0.035) beats Pro ($0.09). The break-even between per-call and metered comes down to how many images, at what size.

Telling them apart from thinking drafts

The two look nearly identical — same candidate, both carry thoughtSignature, 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.
The existing “just keep the last one” advice applies only to the thinking-draft case. Applied to interleaved generation, it discards 2 of the user’s 3 logos.The safe rule is check the layout first: text between images → keep all; images back to back → keep the last.

Parsing code

Never hard-code parts[0] or parts[1], and never hard-code mimeType — both image/png and image/jpeg occur in practice, so always derive the file extension from the mimeType in the response. See Usage Fields and Output Explained.

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:
The OpenAI path drops the captions, so the “text between images” test is unavailable there and you cannot distinguish interleaved output from thinking drafts. Use the native generateContent path when you need to tell them apart.Also, don’t read only data[0] — that silently discards the rest while you are billed for every image.

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 finishReason still STOP
  • 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; imageSize applies 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

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