Two model IDs sit next to each other in the same catalog. One bills 30 cents per million input tokens. The other bills more than three dollars for the same million, and ten dollars for the million it writes back. They answer the same prompt. Pick the expensive one for every request and you will burn most of your budget on questions a cheaper model would have nailed. This part is about that choice inside the Gemini family, Flash against Pro, and the small number of rules that decide which one a given request deserves.
Gemini is Google’s family of multimodal models, meaning a single model reads text, images, audio, video, and PDFs as input and returns text. In Part 2 the family was one row in the catalog. Here it gets specific, because the tier you pick is the single biggest lever on both your bill and your latency.
The short answer
Flash is the small, fast, cheap tier. Pro is the large, slower, higher-reasoning tier. Both take the same inputs and use the same SDK; they differ in accuracy on hard problems, in speed, and in price by roughly an order of magnitude on output tokens.
Default to Flash. Send the hard fraction of requests to Pro through a router, not the whole stream. Output tokens, including hidden reasoning tokens, drive the bill, so watch them more closely than input.
What Gemini is, and what Pro and Flash mean
The Gemini family ships in generations, and each generation offers the same two or three tiers. As of this writing the current generation is Gemini 3, with Gemini 3 Pro as the flagship reasoning model and Gemini 3 Flash as the fast tier. The prior generation, Gemini 2.5, is still generally available in three tiers, Pro, Flash, and Flash-Lite, and Google has set their retirement for 16 October 2026. That overlap is deliberate. You can pin a stable 2.5 model in production while you test a 3 model beside it, then cut over when the newer one proves out on your traffic.
The tier names carry the same meaning across generations, so learn them once. Pro is tuned for hard reasoning, long chains of logic, code, and cases where a wrong answer is expensive. Flash is tuned for speed and volume, the high-frequency requests where good-enough at low latency beats perfect at high cost. Flash-Lite is the floor, cheapest of all, for classification and short extractive work where you barely need reasoning at all. A model reference you type looks like gemini-2.5-flash or gemini-2.5-pro; the Gemini 3 IDs follow the same shape.
Where Pro earns its price
The two tiers are not just big and small versions of one thing. Pro spends more compute per token and, on the current generation, thinks longer before it answers. That extra reasoning is where it pulls ahead on multi-step problems: a tax calculation with branching rules, a code change that has to respect three files, a support answer that must reconcile two contradictory documents. On those, Flash will often produce something fluent and wrong, and Pro will produce something slower and right. On the flat majority of requests, a short factual answer, a summary, a rewrite, both land the same result and you paid four times as much for the Pro version.
Latency moves the other way. Flash answers a typical prompt in around a second; Pro takes longer, more so when it thinks. For an interactive chat that difference is felt. For a nightly batch job it is invisible. So the tier decision is really two questions stacked: does this request need the reasoning, and does the user feel the wait. Plot those and the tiers separate cleanly.
Reading the price sheet
Gemini is billed per token on Vertex AI, split into input tokens you send and output tokens the model writes. The table below carries the verified Vertex AI rates for the Gemini 2.5 tiers, which are generally available today, plus the current-generation Gemini 3 Flash rate. I am anchoring the worked maths later in this part on the 2.5 numbers because they are confirmed and stable through their October retirement; treat the 3 Pro cell as a placeholder to price on the calculator, not a quote.
| Tier | Input per 1M | Output per 1M | Notes |
|---|---|---|---|
| Gemini 2.5 Flash-Lite | 0.10 USD | 0.40 USD | cheapest, light reasoning |
| Gemini 2.5 Flash | 0.30 USD | 2.50 USD | the volume workhorse |
| Gemini 2.5 Pro | 1.25 USD | 10.00 USD | rates double above a 200k-token prompt |
| Gemini 3 Flash | 0.50 USD | 3.00 USD | current-gen fast tier |
| Gemini 3 Pro | current-gen flagship, price on the calculator |
Verified against Google Cloud Vertex AI pricing on the date of writing. Batch mode roughly halves the per-token rate, and long prompts above 200k tokens raise the 2.5 Pro rate to 2.50 and 15.00 USD.
Look at the output column, not the input column. Across the 2.5 tiers, output runs from 0.40 to 10.00 USD per million, a 25-fold spread, while input runs from 0.10 to 1.25, a 12-fold spread. Output is where the tiers pull apart, and output is what a chatty model produces more of. When people are surprised by a Gemini bill, it is almost always the output side, and almost always Pro. The bar below plots the output rate alone so the gap is impossible to miss.
Thinking budgets and why they move your bill
Current Gemini models reason before they answer. That reasoning is a hidden stretch of tokens the model generates to work through a problem, and on Vertex AI you can shape it with a thinking budget, a cap on how many reasoning tokens the model may spend. Set it high and the model deliberates and often answers harder questions correctly. Set it low, or off where the tier allows, and it responds faster and cheaper. Flash gives you this dial specifically so you can trade a little quality for speed on easy traffic.
Here is the part that catches teams. Reasoning tokens bill as output tokens. A Pro call that thinks for 2,000 tokens and then writes a 300-token answer bills you for 2,300 output tokens, not 300. At the Pro output rate that single answer costs about the same as ten Flash answers of the same visible length. So a large thinking budget on a high-volume Pro path is the fastest way to a bill nobody forecast. Cap it, measure it, and never leave Pro thinking wide open on a stream you have not costed.
Route cheap, escalate hard
The pattern that wins in production is not one model, it is two with a gate between them. Send every request to Flash first. Detect the cases Flash cannot handle, either from a confidence signal, a schema check, or an explicit hard-question classifier, and re-send only those to Pro. Most traffic settles on the cheap tier, and Pro is reserved for the fraction that actually needs it. Google also offers a managed router, the Vertex AI Model Optimizer, that picks a Gemini model per prompt for you; it is worth testing, but a rule you own is easier to reason about and to cost.
The snippet below is the smallest honest version of that gate. It calls Flash, applies a trivial confidence check, and escalates to Pro only when the check fails. Swap the placeholder check for your real signal; the shape is what matters.
# pip install google-genai
from google import genai
client = genai.Client(vertexai=True, project='my-gcp-project', location='us-central1')
FLASH = 'gemini-2.5-flash'
PRO = 'gemini-2.5-pro'
def ask(prompt):
# 1) Try the cheap tier first.
r = client.models.generate_content(model=FLASH, contents=prompt)
if is_confident(r.text):
return FLASH, r.text
# 2) Escalate only the hard ones.
r = client.models.generate_content(model=PRO, contents=prompt)
return PRO, r.text
def is_confident(text):
# Placeholder. Replace with a real signal:
# schema validation, a self-rated score, or a classifier.
return len(text) > 0 and 'i am not sure' not in text.lower()
tier, answer = ask('Reconcile these two refund policies and give the customer a single number.')
print(tier, answer)Expected output: the tier that answered, then the text, for example gemini-2.5-flash followed by the reconciled number on easy cases, and gemini-2.5-pro on the ones Flash was unsure about. Failure mode: a 404 means the model ID is not served in your region, so set a region where both tiers exist; a 429 means you hit a per-model quota, which you raise per model, not per project. If every request escalates, your confidence check is too strict and you have quietly turned this into an all-Pro system, so log the escalation rate and alert on it.
Picking a tier for a real workload
Numbers make the choice concrete, so here is a workload I can size. A support assistant handles 2 million requests a month, each about 400 input tokens and 300 output tokens. That is 800 million input and 600 million output tokens a month. Price that three ways on the confirmed 2.5 rates: everything on Flash, everything on Pro, and a routed split that sends the hardest 10 percent to Pro.
Worked example
All Flash: 800M input at 0.30 is 240 USD, 600M output at 2.50 is 1,500 USD, so about 1,740 USD a month. All Pro: 800M input at 1.25 is 1,000 USD, 600M output at 10.00 is 6,000 USD, so about 7,000 USD. The Pro-only bill is four times the Flash-only bill, and the gap is almost entirely output.
Now route: 90 percent on Flash is 1,566 USD, and the hardest 10 percent on Pro adds 100 USD input plus 600 USD output, about 700 USD. Total near 2,266 USD. You bought Pro-grade answers on the tenth of requests that needed them for roughly a third of what all-Pro would cost, and only 500 USD more than pure Flash. Change the escalation rate and the middle bar slides between the two ends.
| If the request is | Start with | Reach for Pro when |
|---|---|---|
| Classification, tagging, extraction | Flash-Lite | almost never |
| Chat, summaries, rewrites | Flash | a confidence or schema check fails |
| Multi-step reasoning, code, math | Flash, then escalate | the answer must be right first time |
| Long documents past 200k tokens | Pro, and watch the doubled rate | you cannot chunk the input |
When Pro is worth it, and when it is not
Pro is worth its price in three situations and no others. First, when a wrong answer costs real money or trust, a billing decision, a legal summary, a code change that ships. Second, when the input genuinely needs long-context reasoning that Flash cannot hold together, and you have confirmed Flash actually fails, not just assumed it. Third, when the request is rare, because a handful of expensive calls a day is a rounding error and not worth the engineering of a router. Outside those, Pro is money spent to feel safe.
The common mistake is picking Pro because the demo felt smarter. A demo is a dozen prompts; production is millions, and at that scale the four-times output cost is the whole story. Prove the quality gap on your own hard prompts with a real evaluation before you pay for it, which is exactly what a later part in this series sets up. If Flash clears your bar on 90 percent of traffic, and it usually does, Pro belongs behind a gate, not in front of everyone. This ties back to the same lesson from the vendor-neutral series, that bigger models are not automatically better for your task, and it echoes the tier choice on other clouds too, such as the Amazon Nova family on AWS.
Flash by default, Pro for the hard tenth
Here is the recommendation, plainly. Build every new Gemini feature on Flash, pin an exact model ID and region in config, and cap the thinking budget from the first commit. Watch the output-token count, including reasoning tokens, because that is where the bill lives. Add a router the moment quality on a real slice of traffic tells you Flash is missing, and send only the failing fraction to Pro. Do not start on Pro to be safe, because safe here is four times the output cost for a quality lift most of your requests never use.
Your move today: take five of your hardest real prompts and five ordinary ones, run all ten through both gemini-2.5-flash and gemini-2.5-pro, and note where the answers actually diverge. That single hour tells you your real escalation rate, and the router follows from it. Part 4 opens the catalog wider, to the partner and third-party models in Model Garden that sit beside Gemini, so you can compare a non-Google model on the same billing and controls. Read it next.
References
- Vertex AI generative AI pricing, Google Cloud
- Gemini 2.5 Flash model documentation, Google Cloud
- Gemini 2.5 Flash-Lite, Flash, and Pro GA on Vertex AI, Google Cloud blog


DrJha