Nano Banana 2 Billing: 1,120 Tokens Flat, and the Pro Surcharge Nobody Documents

Measured on the live endpoint: Nano Banana 2 bills exactly 1,120 tokens whatever you prompt, Nano Banana Pro adds reasoning tokens that scale with prompt length, and asking for 512px silently costs you 1.5x.

Nano Banana 2 Billing: 1,120 Tokens Flat, and the Pro Surcharge Nobody Documents

Nano Banana 2 bills exactly 1,120 tokens for a 1K image, and that number does not move no matter what you prompt. Its sibling Nano Banana Pro does move — it adds reasoning tokens that scale with prompt length, on top of the same fixed image tokens. That difference is the source of a long-running billing confusion, and it is not in either model’s documentation.

Everything below was measured against the live endpoint on 7 September 2026.

Nano Banana 2:      google/gemini-3.1-flash-image
Nano Banana 2 Lite: google/gemini-3.1-flash-lite-image
Nano Banana Pro:    google/gemini-3-pro-image
Endpoints:          /v1/images/generations, /v1/chat/completions
Image tokens:       1,120 at 1K · 1,680 at 2K · 2,520 at 4K
Reasoning tokens:   none on 2 and Lite · 223–377 measured on Pro
Rate:               $60 per 1M output image tokens (Nano Banana 2)

The Measurement

Two prompts against google/gemini-3.1-flash-image — one of eight tokens, one of fifty-one — produced identical billing:

Promptprompt_tokenscompletion_tokensimage_tokensreasoning_tokens
”A single red apple on a white table”81,1201,120none
51-token architectural prompt511,1201,120none

The output side is a constant. Prompt length changes what you pay on input, which at $0.50 per million is rounding error, and nothing else.

Now the same test on google/gemini-3-pro-image:

Promptimage_tokensreasoning_tokensoutput_tokens
”red apple”1,1202231,343
30-word architectural prompt1,1203771,497

Pro’s image half is fixed and its reasoning half is not. A longer prompt bought 69% more reasoning tokens. This is why a per-image price computed from the token table alone always understates Pro, and never understates Nano Banana 2.

If you have been trying to reconcile an image bill against a quoted per-image figure, that is the reconciliation: check output_tokens_details and see which of the two fields is present.

{"output_tokens": 1343,
 "output_tokens_details": {"image_tokens": 1120, "reasoning_tokens": 223},
 "total_tokens": 1357}

The 512px Trap

Asking for the cheapest tier does not get you the cheapest tier. We passed size: "512x512", decoded the returned PNG, and measured the actual pixels:

RequestedActual outputBilled tokens
512x5121024×10241,120
1024x10241024×10241,120
2048x20482048×20481,680
4096x40964096×40962,520

The three larger sizes are honoured exactly and bill exactly as Google’s token table says. The 512 request is silently upgraded. Google’s table prices a 0.5K image at 747 tokens; you get 1,120 instead, so a draft you budgeted at $0.0448 costs $0.0672 — 1.5x.

The lever that does work is the model. google/gemini-3.1-flash-lite-image returned the same 1,120 tokens at half the rate, $0.0336 per image. For draft-and-select workflows, switch model rather than shrinking size.

What It Actually Costs

Computed from the measured token counts at the live catalog rates:

Model1K2K4K
gemini-3.1-flash-lite-image$0.0336
gemini-3.1-flash-image$0.0672$0.1008$0.1512
gemini-3-pro-image~$0.137

Pro is quoted as approximate on purpose: $0.1344 of it is fixed image tokens and the rest is reasoning, which moved between $0.0027 and $0.0045 across our two prompts. It is the only model of the three whose per-image cost you cannot state as a single number.

These match Google’s own list at every tier — 1,120 × $60/M is $0.0672, and so on. The rate card is not where the surprises are; output_tokens_details is.

Calling It

curl -X POST https://api.ofox.io/v1/images/generations \
  -H "Authorization: Bearer $OFOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemini-3.1-flash-image",
    "prompt": "A single red apple on a white table",
    "size": "1024x1024"
  }'

Returns data[0].b64_json. Read usage.output_tokens_details on the response and you will know your real per-image cost immediately, rather than inferring it from a pricing page.

Use /v1/images/generations, not /v1/chat/completions. The chat route accepts these models and returns HTTP 200 with finish_reason: "stop" — and no image. We measured content of length zero with no images key on the message, while still being billed the full 1,120 tokens. It looks like a successful call and costs like one.

The Error Bodies

Captured live, so you can match them exactly:

Marketing name instead of model ID. “Nano Banana 2” is not a callable string:

{"error":{"message":"Model 'google/nano-banana-2' not found","type":"model_not_found","code":404}}

Missing prompt:

{"error":{"code":null,"message":"prompt cannot be empty","param":null,"type":"invalid_request_error"}}

Batching. n: 2 fails with an upstream Google error that leaks through the gateway:

{"error":{"message":"Invalid JSON payload received. Unknown name \"numberOfImages\" at 'generation_config.image_config': Cannot find field.","type":"INVALID_ARGUMENT"}}

There is no batch parameter on this route. Loop over single requests.

A size the model will not take returns a generic api_error rather than a validation message, so if you get “An error occurred while processing your request” on an image call, suspect your size string before anything else.

What to Take Away

  • On Nano Banana 2, prompt length is free on the output side. Write the long prompt. It costs the same 1,120 tokens as the short one.
  • On Nano Banana Pro, prompt length is not free. Budget it as a range, not a number, and read reasoning_tokens before scaling.
  • Do not use size as a cost lever below 1K. Use Lite.
  • Alarm on usage, not on the rate card. Both facts above are visible in output_tokens_details on every response and invisible in any pricing table.

Sources

Model IDs, rates and endpoints were read from the live Ofox /v1/models endpoint on 7 September 2026. Token counts are from live /v1/images/generations and /v1/chat/completions calls the same day: four sizes and two prompt lengths against google/gemini-3.1-flash-image, two prompt lengths against google/gemini-3-pro-image, and one call each against google/gemini-3.1-flash-lite-image. Output dimensions were verified by decoding the returned PNG and reading the IHDR header rather than trusting the request. Error bodies are quoted verbatim from live responses. This is a small sample on one route on one day, not a specification — re-run it on your own account before building a cost model on it, and expect undocumented behaviour like the 512px upgrade to change without notice. The linked Google forum thread reports a related discrepancy on Google’s direct API that was still open when last updated in March 2026; we did not reproduce that thread’s numbers and are not claiming its cause.

Frequently Asked Questions

How many tokens does Nano Banana 2 use per image?
Exactly 1,120 for a 1K image, and it does not move with prompt complexity. We sent an eight-token prompt and a fifty-one-token prompt to google/gemini-3.1-flash-image and both returned completion_tokens 1120 with output_tokens_details.image_tokens 1120 and no reasoning tokens at all. The tiers are 1,120 at 1K, 1,680 at 2K and 2,520 at 4K, which matches Google's published token table.
Why is my Nano Banana Pro image costing more than the quoted price?
Because Pro adds reasoning tokens on top of the fixed image tokens, and Nano Banana 2 does not. On google/gemini-3-pro-image we measured output_tokens_details of image_tokens 1120 plus reasoning_tokens 223 on a short prompt and 377 on a long one. The image half is fixed; the reasoning half scales with your prompt, so a per-image price quoted from the token table alone will always understate Pro.
Does Nano Banana 2 charge thinking tokens?
Not on the requests we measured. Across four sizes and two prompt lengths, google/gemini-3.1-flash-image returned output_tokens_details containing image_tokens only, with no reasoning_tokens field. Its sibling google/gemini-3-pro-image returned reasoning_tokens on every call. If you are being billed for thinking on an image model, check which of the two you are actually calling.
Why does asking for 512x512 not make Nano Banana 2 cheaper?
Because the request is served at 1024x1024 anyway and billed at 1,120 tokens. We passed size 512x512, decoded the returned PNG and measured 1024x1024. Google's own token table prices a 0.5K image at 747 tokens, so a request you expected to cost $0.0448 costs $0.0672 instead, about 1.5x. If you want a cheap draft tier, switch model rather than shrinking size.
What is the model ID for Nano Banana 2?
google/gemini-3.1-flash-image on Ofox. The marketing name Nano Banana 2 is not a valid string and returns {"error":{"message":"Model 'google/nano-banana-2' not found","type":"model_not_found","code":404}}. Nano Banana Pro is google/gemini-3-pro-image and the cheap tier is google/gemini-3.1-flash-lite-image.
How much does Nano Banana 2 cost per image?
At $60 per million output image tokens, the measured token counts give $0.0672 at 1K, $0.1008 at 2K and $0.1512 at 4K. Nano Banana 2 Lite is half that at 1K, $0.0336, for the same 1,120 tokens at a $30 per million rate. Nano Banana Pro lands near $0.137 once its reasoning tokens are counted.
Can I request more than one image per call?
Not on this route. Passing n greater than 1 fails with an upstream Google error, Invalid JSON payload received. Unknown name "numberOfImages" at 'generation_config.image_config': Cannot find field. Loop over single requests instead.