GEMINI LABJP
FLASH — Gemini 3.8 Flash landed on September 2, tuned for coding and agentic work. It is the third Flash release in roughly six weeksPRICING — $0.75 in and $3.75 out per million tokens, but only through the end of 2026. Reports put the January 2027 rates at $1.50 and $7.50BENCH — Terminal-Bench 2.1 climbed from 81.6% on 3.7 Flash to 90.8%. Finance-agent tasks come in at 61.4% and legal at 10.0%CAVEAT — That 10.0% on legal does beat the 6.7% it is measured against, though both numbers are low in absolute terms. Reporting only the winner would misleadLIMIT — On the hardest long-horizon software engineering, Opus 5 still leads. The sweet spot here looks like mid-difficulty agentic work, not everythingWORKSPACE — Alongside the model: one-click co-presenters in Meet, new Workspace Studio automation steps, wider Gemini custom instructions, and video summaries in Google VidsFLASH — Gemini 3.8 Flash landed on September 2, tuned for coding and agentic work. It is the third Flash release in roughly six weeksPRICING — $0.75 in and $3.75 out per million tokens, but only through the end of 2026. Reports put the January 2027 rates at $1.50 and $7.50BENCH — Terminal-Bench 2.1 climbed from 81.6% on 3.7 Flash to 90.8%. Finance-agent tasks come in at 61.4% and legal at 10.0%CAVEAT — That 10.0% on legal does beat the 6.7% it is measured against, though both numbers are low in absolute terms. Reporting only the winner would misleadLIMIT — On the hardest long-horizon software engineering, Opus 5 still leads. The sweet spot here looks like mid-difficulty agentic work, not everythingWORKSPACE — Alongside the model: one-click co-presenters in Meet, new Workspace Studio automation steps, wider Gemini custom instructions, and video summaries in Google Vids
Articles/API / SDK
API / SDK/2026-09-08Beginner

Writing my first Gemini cost estimate in two columns, one for now and one for January

Introductory pricing for Gemini Flash ends on December 31, 2026, and standard pricing starts on January 1, 2027. Staying on an older generation does not avoid it. Here is the small, working estimator I use to see both prices at once.

Gemini API235pricing7cost management3Flash3indie development23

Premium Article

I was reworking next year's numbers late one evening, looking at the 0.75 I had typed by hand into the corner of a spreadsheet. The batch jobs I run as an indie developer are all small ones, but the number of them that fire every day keeps growing, and the end-of-month invoice always lands a little outside what I expected.

What I was thinking at that moment was simple. If I don't move up to the newer Flash, I keep this rate.

I opened the migration docs one more time, just to be sure, and my hand stopped. I had read it wrong.

The end of the introductory price is attached to the calendar, not to the model

Google's What's new in Gemini 3.8 Flash states the pricing plainly. The introductory rate is $0.75 per 1M input tokens and $3.75 per 1M output tokens, through December 31, 2026. Standard pricing of $1.50 and $7.50 takes effect on January 1, 2027.

Here is the part I had misread. The same page says that introductory pricing runs through the end of 2026 for Gemini 3.8 Flash, Gemini 3.7 Flash, and Gemini 3.6 Flash. The deadline sits on the calendar, not on the generation you happen to be calling.

Staying put on an older model does not move that date. My assumption — that not upgrading would keep the rate where it was — never held in the first place.

That isn't a hostile design. It was my own assumption. But a spreadsheet built on that assumption will lie to me in January without saying a word, because spreadsheets don't raise their hand.

Estimates break the moment a price is written as a number

For a long time I kept these estimates in a spreadsheet. Type 0.75 into the rate cell, multiply by tokens, read the month. I thought that was enough.

It stopped being enough once I was calling more than one model. The month I started using different models for the classification batch on my wallpaper app and for the first pass of translations on my sites, I could no longer tell what the rate in that cell had been for. A cell holds a number and nothing else. Which date it came from, which model it belonged to, when it was last touched — none of that lives inside the digits.

At first I tried patching around it with a notes column. That did not go well. Notes stop being updated while the number keeps walking around on its own.

So I drew a different line. A price is not a number; it is a record with a start date and an end date attached. Being able to doubt the 0.75 I typed is the whole point. Once the number knows when it is valid, the January calculation comes back into my hands.

What follows is the smallest version of that idea. Python, standard library only.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
You will be able to build one small estimator of your own that keeps working across the day the price changes
You will be able to decide when to move models without the false comfort of thinking an older generation keeps your rate frozen
You will avoid the long detour of hard-coding a rate and only noticing next January, when the invoice tells you
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Gemini Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $15 for lifetime access
View Membership →

Related Articles

API / SDK2026-09-07
The day Lyria 3.5 landed, I changed how my audio folders are laid out
When Lyria 3.5 brought full-length generation, my generated takes were sitting in the same folder as the tracks I had chosen by hand. Here is the forty-line ledger gate that draws the line by hash, not by filename.
API / SDK2026-08-27
Record what you send before you try to measure whether temperature still works
Deprecated sampling parameters still return 200 and are silently ignored. Here is how a runtime recorder caught the call sites grep and AST both missed, kept the construction site attached to each config, and turned the ledger into a CI gate.
API / SDK2026-08-03
Measuring Update Policies for Memory Profiles: The Guard That Cost Me 16 Points of Accuracy
Memory profiles went GA in Memory Bank, making structured memory available to downstream code. I built three update policies and compared them under identical conditions. The one that looked obviously correct turned out to be the worst. Full harness code and the path to per-field TTLs.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links