200 Nano Banana thumbnails: budget from 9 to 30 dollars
Google lists Gemini 3.1 Flash Image at about $0.045 to $0.151 per image by resolution. What 50, 200 and 1,000 thumbnails cost at each end of that range.
At Google's listed range of about $0.045 to $0.151 per image, 200 thumbnails from Gemini 3.1 Flash Image (Nano Banana 2) cost between $9.00 and $30.20 before retries. The figure moves with the output resolution you choose, so pick the size first and then multiply.
Where the range comes from
Google's pricing page lists Gemini 3.1 Flash Image output at $60 per 1M tokens and translates that into roughly $0.045 to $0.151 per image depending on resolution. The low end corresponds to the smaller sizes and the high end to the larger ones. The page does not give a single flat price, so a budget has to carry both ends.
| Images | At $0.045 each | At $0.151 each |
|---|---|---|
| 50 | $2.25 | $7.55 |
| 200 | $9.00 | $30.20 |
| 1,000 | $45.00 | $151.00 |
Add a retry allowance
Thumbnails are rarely accepted on the first try. If you expect to keep one image in three, multiply the table by three: 200 keepers at the low end becomes 600 generations, or $27.00. Decide your keep rate from a small test of 20 images before you size the full batch.
Drafting at a small size and regenerating only the winners at a larger size usually costs less than generating everything large. The arithmetic is simple: 200 drafts at $0.045 plus 20 finals at $0.151 comes to $12.02.
Reading the cost on Sume
The numbers above are Google's list prices. On Sume, the amount you pay is the pricing line on the model's endpoint record (GET /v1/images/models/{model_id}/endpoints), and cost_usd × n is the cost of a request. Each image response also carries usage.cost, the USD amount billed, so you can add them up as a batch runs. Token counts are always 0 in v1 because image models are metered per image.
Failed or cancelled generations are not billed, so retries on failures do not add to the total.
import os
import requests
URL = "https://api.sume.com/v1/images"
HEADERS = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
def main() -> None:
total = 0.0
for prompt in ["a red kettle on a white desk, thumbnail composition"]:
r = requests.post(
URL,
headers=HEADERS,
json={"model": "nano-banana-2", "prompt": prompt, "aspect_ratio": "16:9", "resolution": "1K"},
timeout=60,
)
if r.status_code == 200:
total += r.json()["usage"]["cost"]
else:
print(r.status_code, "is not a finished image; poll the job")
print(f"billed so far: ${total:.4f}")
if __name__ == "__main__":
main()Takeaway
Budget with both ends of the range, add a keep-rate multiplier, and track usage.cost as you go. A 200-image test at low resolution will tell you more than any estimate.
Sources
Related posts
More in Pricing
- 26-second AI video API: estimate the price before you submit
A 26 s Wan 3.0 clip bills three amounts on Sume. Read pricing_skus, reserve and refund rules, and check duration support before you submit.
- A 30-second Omni ad cost sheet: three clips, a Lyria bed, a Timeline
Three 10-second Omni clips, one Lyria 3.5 track and a Timeline render: about $3.08 on Google's list prices and $3.98 on Sume, before your own assembly work.
- 3D model API prices: Meshy, Tripo, Rodin side by side
3D model APIs run from about $0.01 per credit to $0.50 per model. Sume has no 3D model endpoint; compare per-asset cost with a still image or short spin clip.
- 4-second AI video API: which Sume models take 4 s and the price
Eight Sume video ids accept a 4-second clip; MiniMax H3 does not. Price per 4-second job from $0.05 to $2.32 by model, with the 720p row for each.
Written by Sume