Choose Auto, TokenLab Verified, or Official for each request, with prices shown up front.See what's new

Nano Banana Pro API Pricing and Cost Estimation Guide

·September 19, 2026·8 min read·Updated October 3, 2026·1548 views
#image#ai-api#tokenlab
Nano Banana Pro API Pricing and Cost Estimation Guide

What you’ll learn

  • Does nano-banana-pro bill per image or per token?
  • Can I send nano-banana-pro edits to /v1/images/edits?
  • Is a failed image task charged?
  • Does the resolution I choose change the nano-banana-pro price?
  • Which field proves what I was actually charged?

A cheap-looking image model can still produce a surprising invoice if you misread its billing unit. Nano Banana Pro API pricing on TokenLab is a good example. nano-banana-pro lists a per-image price, while its Gemini-named neighbors gemini-3-pro-image and gemini-3.1-flash-image list per-token prices. This guide puts those entries side by side, works through a batch estimate, and shows the two request shapes you will actually send. It also explains how to confirm the final charge. Every number comes from TokenLab's live model API and docs, observed on 2026-10-03.

Key Takeaways

  • nano-banana-pro lists a base price of USD 0.067 per image, with a listed range of 0.067 to 0.12 across its price entries (live model API, observed 2026-10-03).
  • nano-banana-2 lists 0.0335 per image and nano-banana-2-lite lists 0.0168, so Pro's base price is about double the first and four times the second.
  • gemini-3-pro-image and gemini-3.1-flash-image are token-priced, so a per-image budget formula does not apply to them.
  • Nano Banana reference-image requests go to /v1/images/generations with operation: "image-to-image", not to /v1/images/edits.
  • The final charge lives in Usage and in billing_transaction_id, not in your estimate.
  • This guide has no benchmark data, so it makes no claim that Pro output looks better than the cheaper IDs.

Nano Banana Pro API pricing at a glance

We read the catalog entries for five image models and put them in one table. The price block for nano-banana-pro says "has additional price entries", and we did not find an itemized per-resolution breakdown in the evidence. So the table shows what is listed and no more.

Model ID Pricing unit Listed price entries (USD) Source Observed
nano-banana-pro per_image Base per_request 0.067; range summary 0.067 to 0.12; text-output entry native-gemini-text-output-20260723 (per_token): input 1, output 6 live model API 2026-10-03 (pricing updated 2026-10-02T16:53:30.068Z)
nano-banana-2 per_image Base per_request 0.0335; range 0.0225 to 0.0755; text-output entry (per_token): input 0.25, output 1.5 live model API 2026-10-03
nano-banana-2-lite per_image Base per_request 0.0168; single range value 0.0168; entry google-1k (1k, text-to-image and image-to-image): 0.0168 live model API 2026-10-03
gemini-3-pro-image per_token Input 1 and output 6 per 1M for text output; image-output entry: 60 live model API 2026-10-03
gemini-3.1-flash-image per_token Input 0.25 and output 1.5 per 1M for text output; image-output entry: 30 live model API 2026-10-03

Two details in the table are easy to miss.

  • The catalog says nano-banana-pro image output "keeps the existing per-image resolution tiers". It does not say which tier maps to 0.067 and which maps to 0.12. Read GET /v1/models/nano-banana-pro/pricing for that mapping before you commit a budget, as the billing guide advises.
  • The text-output entry on nano-banana-pro is token-priced. Treat it as a separate line item from the per-image charge, and check whether your requests ever produce text output.

The billing docs also warn against hard-coding copied price tables. Our table is a dated snapshot, and your code should read the price when it needs one.

Working a batch estimate

Imagine a team that generates 200 product images in one run. We multiplied the listed prices to see the spread. These are estimates, not quotes.

Model Working Estimate (USD)
nano-banana-pro, base price 200 × 0.067 13.40
nano-banana-pro, top of listed range 200 × 0.12 24.00
nano-banana-2, base price 200 × 0.0335 6.70
nano-banana-2, top of listed range 200 × 0.0755 15.10
nano-banana-2-lite 200 × 0.0168 3.36

Now add regeneration. If the team rejects 20% of results and redoes them on nano-banana-pro at the base price, that is 40 extra images. The total becomes 240 × 0.067 = 16.08, again an estimate. The async docs say a failed task is not charged, but a retry of a failed generation creates a new task and may create a new charge. Retries that succeed are billed like any other completed image.

The spread between 13.40 and 24.00 is the real uncertainty. It comes from the price entries we cannot map to resolutions from the evidence alone. Run a small test batch at your target resolution, then compare the Usage record with the arithmetic above.

When to pick nano-banana-pro over the cheaper IDs

Documented differences are thinner than you might hope. Here is what the docs and catalog support.

  • Selectors. nano-banana-pro and nano-banana-2 both support aspect_ratio plus resolution (1k, 2k, 4k) for text-to-image and image-to-image. For nano-banana-2-lite, the only price entry we found is at 1k, and its accepted request formats are "not listed" in the catalog. If you need 2k or 4k output, we found no documented support for it on Lite.
  • Delivery. nano-banana-pro lists both TokenLab Verified and Official delivery as available for both operations. gemini-3-pro-image lists Verified only.
  • Price. Pro's base price is 0.067, against 0.0335 and 0.0168. The catalog gives no reason beyond that for the gap.
  • Lifecycle. All three show an active lifecycle stage with no replacement model and no deprecation date. The source article called nano-banana and nano-banana-edit deprecated, but we found no evidence of that, so we dropped the claim. Check the model page before you rely on either ID.

What we did not benchmark matters more than the list above. We have no image-quality, prompt-adherence, text-rendering, or latency data for any of these models. So we cannot say Pro looks better than nano-banana-2. A sound approach is to render the same 20 prompts on each candidate and compare the outputs by eye. Then compare the cost per accepted image in Usage. That is the method the billing docs suggest as well: the lowest listed price is not always the lowest cost per completed task.

One generation request and one edit request

Both calls below use POST /v1/images/generations. The image generation guide says Nano Banana-style reference generation does not belong on /v1/images/edits. Always send model explicitly, because image APIs have no default.

Text-to-image, using the fields the Create Image reference lists for Google image families:

curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "prompt": "A cinematic portrait of a white cat sitting on a rainy windowsill",
    "aspect_ratio": "16:9",
    "resolution": "2k"
  }'

Edit, meaning reference-image generation with operation: "image-to-image" and image_urls:

curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "operation": "image-to-image",
    "prompt": "Keep the product shape, change the background to a bright studio setup",
    "image_urls": ["https://example.com/input/product.png"],
    "aspect_ratio": "1:1",
    "resolution": "2k"
  }'

Some rules from the docs, observed 2026-10-03:

  • Reference URLs must be public http or https. Avoid private network URLs, embedded credentials, fragments, and signed URLs that may expire before processing starts.
  • For a private or header-protected source image, send a multipart image file instead of image_urls.
  • images[] and file_id are not accepted on this endpoint.
  • Set your HTTP client timeout to at least 120 seconds. If the response carries status: "pending", task_id, or poll_url, follow poll_url instead of waiting.
  • Poll with GET /v1/tasks/{id}. The async jobs guide suggests checking every 5 to 10 seconds, and stopping at completed or failed.

Save the returned URL, task ID, model, and your own job ID. Eligible result URLs may be retained as media copies for 30 days, and media_retention.items shows each item's status and expires_at.

Confirming the final charge

An estimate is only a plan. The billing docs describe where the real number appears.

  1. Reserve and release. Some async tasks reserve the estimated cost at creation. A completed task is charged once. A failed task releases or refunds the pending amount.
  2. Read the transaction ID. Non-streaming responses include billing_transaction_id when billing finishes before the response is sent. The same value may appear in the X-Billing-Transaction-ID header. Async tasks include it after completion.
  3. Open Usage. The Usage page shows history by model and a cost breakdown. Compare it with your estimate.
  4. Keep the IDs together. Store request_id, task_id, billing_transaction_id, and your own job ID in one record.
  5. Escalate with evidence. If Usage shows no final charge or released amount after the task finishes, email support@tokenlab.sh with the Request ID and task ID.

Delivery option also affects price. Verified uses TokenLab public prices, Official uses a price layer based on the maker's public price, and Auto tries Verified first. You pay for the option that completes the request, so note which one served your test batch.

FAQ

Does nano-banana-pro bill per image or per token?

The base entry is per image: per_request 0.067 with unit per_image. The catalog also lists a text-output entry priced per token, at input 1 and output 6. Check the pricing endpoint to see which entry your request types trigger.

Can I send nano-banana-pro edits to /v1/images/edits?

No. The docs say Nano Banana reference-image requests, including nano-banana-pro, belong on /v1/images/generations with operation: "image-to-image" and image_urls. The edits endpoint is documented for models such as gpt-image-2.

Is a failed image task charged?

The billing guide says a failed task is not charged, and any reserved amount is released or refunded. A retry creates a new task and may create a new charge. Deduplicate by your own job ID so a timeout does not trigger a second create request.

Does the resolution I choose change the nano-banana-pro price?

The catalog says image output keeps per-image resolution tiers, and its listed range runs from 0.067 to 0.12. The evidence does not map tiers to 1k, 2k, or 4k. Read GET /v1/models/nano-banana-pro/pricing and confirm with a test request in Usage.

Which field proves what I was actually charged?

Use billing_transaction_id, or the X-Billing-Transaction-ID header, and match it to the record in Usage. Streaming can finish before billing does, so Usage is the fallback when the header is absent.

To compare these IDs with other image models on your own prompts, start from the Models directory.

Sources

Prices checked 2026-10-03

Related models

Recent model releases

Try the models from this article

Chat, create images, or make video with the same TokenLab balance.