Nano Banana 2.1 resolution: send 512 or 0.5K, $0.075 per draft

Sume's catalog publishes the smallest Nano Banana tier as 512, and requests may send 512 or 0.5K. A draft bills $0.075; 1K, 2K and 4K bill $0.10, $0.15, $0.20.

5 min readSume
All posts

Send resolution: "512" for Nano Banana 2.1's smallest tier on Sume. The catalog publishes that tier as 512, matching OpenRouter's spelling, and the code comment in the catalog says requests may send either 512 or 0.5K. At that tier a draft bills $0.075, against $0.10 at 1K, $0.15 at 2K and $0.20 at 4K, which are Sume's list rates of $0.06, $0.08, $0.12 and $0.16 times 1.25.

This is from the repo's price tables and catalog on origin/main, read 2026-10-08. The endpoint's pricing line shows only the 1K default of $0.10, so the other three figures come from the price tables and from usage.cost on a real response.

The four tiers

The endpoint record lists resolution as 512, 1K, 2K and 4K for both Nano Banana 2.1 and Nano Banana Pro. The 2.1 row carries the note that its list rate is the 1K default and the charge scales for the other tiers.

Nano Banana 2.1 billed price by tier on Sume (read 2026-10-08)
resolutionSume list rateBilled (list x 1.25)
512 (0.5K)$0.06$0.075
1K$0.08$0.10
2K$0.12$0.15
4K$0.16$0.20

A draft call

The sample asks for four 4:5 drafts at 512, so the expected charge is four times $0.075, or $0.30. If the call takes longer than 30 seconds Sume returns 202 with a job envelope; the sample prints the status URL in that case. 512 drafts finish fast, so 202 is unusual at this tier, while 4K is the likeliest to degrade.

import os, requests

body = {
    "model": "google/nano-banana-2.1",
    "prompt": "Four loose layout drafts of a coffee bag label, flat lay",
    "resolution": "512",
    "aspect_ratio": "4:5",
    "n": 4,
}
r = requests.post(
    "https://api.sume.com/v1/images",
    json=body,
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    timeout=60,
)
if r.status_code == 202:
    print("job queued:", r.json()["data"]["status_url"])
else:
    r.raise_for_status()
    out = r.json()
    print(len(out["data"]), "images, cost", out["usage"]["cost"])

Why draft small

Prompts that fail fail at every size, so the cheap tier is the place to find out. A hundred 512 drafts cost $7.50, and ten of them re-rendered at 2K cost another $1.50. Re-rendering is a new generation because Sume rejects seed, so treat the 512 draft as a rehearsal of the composition rather than a file you will upscale.

Pass the same aspect_ratio at every tier. A draft in 4:5 and a final in 1:1 are different compositions.

If you store tier names in your own database, pick one spelling and use it everywhere. Sume's catalog publishes 512, so using 512 in configuration means your values match what GET /v1/images/models returns and you can compare them directly. A second spelling in the code base is a bug waiting for a string comparison.

Pro lists the same four tiers but a different price, so look up the endpoint record for the id you call, and do not reuse 2.1's numbers for Pro.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume