Nano Banana 2 API has no free tier: size a 20-image test

Google lists no free tier for Nano Banana 2 image output. Work out a 20-image test budget by tier, then read the live Sume price from the endpoints call.

5 min readSume
All posts

Is there a free tier for the Nano Banana 2 API? On Google's own pricing page, no: the Gemini API pricing table for Gemini 3.1 Flash Image (the model sold as Nano Banana 2) shows no free tier for image generation, so even a 20-image smoke test is billed (Google pricing, read 2026-10-04). The useful question is therefore how much a throwaway test costs, and which resolution tier to test at.

This post sizes that test using Google's list prices, then shows how to read the price Sume will actually bill from the Sume Image API before you spend anything. Sume's price is the provider list price with Sume's margin on top, so do not treat Google's numbers as Sume's; read the live figure.

What Google lists for Nano Banana 2 output

Google prices Nano Banana 2 image output per image, and the price moves with the output tier. The page lists $0.045 at 0.5K, $0.067 at 1K, $0.101 at 2K and $0.151 at 4K (read 2026-10-04). Input is priced separately at $0.50 per million tokens, so an edit with several reference photos adds a little on top.

A 20-image test is the size most teams run to compare prompts. At list price it comes to well under the cost of a coffee at the low tiers and about three dollars at 4K.

Nano Banana 2 list price per image and a 20-image test, Google pricing page (read 2026-10-04)
Output tierGoogle list per image20-image test at listSume resolution value
0.5K$0.045$0.90512
1K$0.067$1.341K
2K$0.101$2.022K
4K$0.151$3.024K

Which tier to test at

Test composition and prompt wording at the cheapest tier that still shows the thing you care about. Layout, subject, colour and text placement are visible at 0.5K or 1K; fine texture, small lettering and print-readiness are not. A practical plan is to run the full 20 at 1K, pick two or three winners, and re-render only those at 2K or 4K.

On Sume the lowest tier is sent as resolution: "512"; the Image API maps it to the provider's 0.5K tier, and the default when you omit resolution is 1K (Sume Image API docs). A request that sets a parameter the model does not list is rejected with 400 unsupported_parameter, so a mistyped tier fails fast instead of billing the wrong size.

Read the Sume price before you generate

Sume publishes the billable line for each model on the per-endpoint record: GET /v1/images/models/google/nano-banana-2/endpoints returns a pricing array with an output_image line and its cost_usd. The script below reads that line and prints a budget for a 20-image test. It needs a Sume API key in SUME_API_KEY.

The catalog also tells you what the endpoint accepts, so the same call confirms the n range before you decide how many images to request per call.

import os, requests

BASE = "https://api.sume.com/v1/images/models"
headers = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}

r = requests.get(f"{BASE}/google/nano-banana-2/endpoints", headers=headers, timeout=30)
r.raise_for_status()
endpoint = r.json()["endpoints"][0]
line = next(p for p in endpoint["pricing"] if p["billable"] == "output_image")
n_range = endpoint["supported_parameters"]["n"]

test_images = 20
print("Sume price per image (default tier): $%.4f" % line["cost_usd"])
print("n per call: %s to %s" % (n_range["min"], n_range["max"]))
print("20-image test: $%.2f" % (test_images * line["cost_usd"]))

Keep the test cheap and the bill predictable

The response to POST /v1/images carries usage.cost, the USD amount billed to your wallet for that call, so you can add the numbers up as you go instead of waiting for a statement. Failed or cancelled generations are not billed, which means a retry after an error does not double-charge you.

If a request runs longer than the 30-second synchronous wait, Sume returns 202 with a job envelope and you poll the status and result URLs (Jobs and results). Higher tiers and larger n are the likeliest to take that path, so build the loop to handle both status codes from the start.

  • Test at 1K first; re-render winners at 2K or 4K.
  • Read pricing from the endpoints call, not from a vendor page, when you quote a budget.
  • Sum usage.cost across calls to track the real spend.
  • Handle both 200 and 202 in the same loop.

Sources

Related posts

More in Pricing

All Pricing posts

Written by Sume