Incident report

Gemini API overspend — reconstruction & attribution

GCP project electro_x_evolve · invoice window 2026-03-10 → 2026-07-12 · reconciled against 112 Gemini runs in outputs/

Invoiced Gemini API spend · 2026-03-10 to 2026-07-12
$53,138.53
GCP project electro_x_evolve, 4 models, 242 SKU-day rows
Not attributable to this project
$14,553.16
27.4% · models never configured in any of our runs
Our models · matched to executed runs
$35,473.40
66.8% · days with runs we can evidence
Our models · unmatched days
$3,111.97
5.9% · charges on days with no saved run

01Findings

Ordered by how much they change the number. The first two are established by direct evidence; the rest bound what the traces cannot show.

02Cost over time

Daily invoiced spend, split by whether the billed model is one this project ever configured. Spend is overwhelmingly concentrated in March 2026 ($48,660.55, 92% of the total); the single worst day is 2026-03-25 at $8,969.91.

Models this project configuredModels never configured here
$0$2,500$5,000$7,500$10,00003-1003-1303-1603-1903-2203-2503-2803-3104-1204-1504-2004-2304-2606-1107-1107-12
Daily Gemini spend in USD. Hover any day for the split, the total, and how many of our runs executed that day. Days carrying charges with zero recorded runs are called out in the tooltip.

03Cumulative spend

The same data accumulated, on its own axis — the March ramp is where the incident actually happened.

$0$20,000$40,000$60,000$53,13903-1003-1303-1603-1903-2203-2503-2803-3104-1204-1504-2004-2304-2606-1107-1107-12
Cumulative invoiced Gemini spend, all models.

04Tokens over time

Billed token volume for our two models, taken from invoice SKUs rather than our instrumentation — these are the only trustworthy token counts available. Each panel keeps its own axis because the three kinds differ by two orders of magnitude: cached input dominates volume while output dominates cost.

02.00B4.00B03-1003-1803-2604-1204-2206-1207-12
Fresh input · 15.25B tokens total
010.00B20.00B03-1003-1803-2604-1204-2206-1207-12
Cached input · 68.29B tokens total
050.00M100.00M150.00M03-1003-1803-2604-1204-2206-1207-12
Output · 530.24M tokens total — includes billed thinking tokens

05Invoice by model

Billed modelCostTokens Configured in this project?
gemini-3-pro$35,843.4947.18Bours
gemini-2.5-flash$14,489.787.33BNOT ours
gemini-3.1-flash-lite$2,741.8836.89Bours
gemini-2.5-flash-lite$63.38638.19MNOT ours

Invoice SKUs name Gemini 3 Pro as “gemini 3 pro”; our configs call the same model gemini-3.1-pro-preview, and our own run directories use gemini_3_pro_preview, which corroborates the mapping.

06Long-context tier premium

Rates below are derived from this invoice (cost ÷ tokens per SKU), not from a maintained price table.

Gemini 3 ProShort-context $/1M Long-context $/1MPremium
input$2.00$4.002.00×
cached input$0.20$0.402.00×
output$12.00$18.001.50×
Billed at long tier
$14,752.81 (38% of our models' spend)
Billed at short tier
$21,090.68
Tier unspecified (flash-lite SKUs)
$2,741.88

07Daily detail

Full reconciliation table — the table view backing every chart above.

DateOur models $Other models $Total $Cumulative $ RunsFresh inCached inOutput
2026-03-10$3.09$0.00$3.09$3.0901.21M0275.89K
2026-03-11$3.10$0.00$3.10$6.190551.68K0469.98K
2026-03-12$3.14$0.00$3.14$9.338616.13K0411.91K
2026-03-13$27.34$0.00$27.34$36.67015.37M57.20K970.50K
2026-03-14$15.19$0.00$15.19$51.86020.46M85.80K1.61M
2026-03-15$0.00$0.00$0.00$51.864000
2026-03-16$48.07$0.00$48.07$99.932197.37K03.99M
2026-03-17$111.09$0.00$111.09$211.02028.46M06.72M
2026-03-18$0.00$0.00$0.00$211.026000
2026-03-19$234.71$0.00$234.71$445.73444.36M015.46M
2026-03-20$1,897.51$0.00$1,897.51$2,343.24211.77B8.68B18.83M
2026-03-21$5,877.29$326.53$6,203.82$8,547.0653.13B17.17B43.05M
2026-03-22$6,174.78$544.92$6,719.70$15,266.76142.60B12.13B56.52M
2026-03-23$7,645.88$149.64$7,795.52$23,062.28213.40B10.62B101.74M
2026-03-24$7,313.65$978.88$8,292.53$31,354.8161.85B9.44B76.74M
2026-03-25$6,144.56$2,825.35$8,969.91$40,324.7231.19B7.21B50.27M
2026-03-26$2,028.74$1,631.06$3,659.80$43,984.520687.88M2.32B78.46M
2026-03-27$613.46$501.42$1,114.88$45,099.400411.07M620.12M53.06M
2026-03-28$0.00$363.06$363.06$45,462.460000
2026-03-29$0.00$1,307.07$1,307.07$46,769.530000
2026-03-30$0.00$1,527.34$1,527.34$48,296.870000
2026-03-31$0.00$363.68$363.68$48,660.550000
2026-04-01$0.00$11.21$11.21$48,671.760000
2026-04-11$6.97$148.65$155.62$48,827.3802.90M0936.27K
2026-04-12$0.00$310.04$310.04$49,137.420000
2026-04-13$9.51$261.39$270.90$49,408.320894.02K16.47M64.63K
2026-04-14$1.26$256.45$257.71$49,666.0301.51M0563.17K
2026-04-15$19.90$22.26$42.16$49,708.1908.03M5.86M1.30M
2026-04-18$0.86$451.38$452.24$50,160.4313.14M1.60M23.86K
2026-04-19$12.94$108.96$121.90$50,282.332703.19K216.08K1.09M
2026-04-20$70.80$0.00$70.80$50,353.132315.48K06.24M
2026-04-21$49.21$0.00$49.21$50,402.3438.11M4.34M2.69M
2026-04-22$0.00$0.00$0.00$50,402.341000
2026-04-23$0.00$71.25$71.25$50,473.590000
2026-04-24$0.00$420.19$420.19$50,893.780000
2026-04-25$0.00$473.75$473.75$51,367.530000
2026-04-26$272.32$688.19$960.51$52,328.04076.05M75.90M8.75M
2026-04-27$0.00$434.39$434.39$52,762.431000
2026-05-23$0.00$152.33$152.33$52,914.760000
2026-06-11$0.00$22.80$22.80$52,937.560000
2026-06-12$0.00$26.34$26.34$52,963.900000
2026-06-13$0.00$14.24$14.24$52,978.140000
2026-07-11$0.00$103.79$103.79$53,081.930000
2026-07-12$0.00$56.60$56.60$53,138.530000

08Method & limitations

The invoice is treated as ground truth. Traces are used to attribute it, and to establish a floor — never to replace it.

Attribution, strongest first
model exclusion (models never configured cannot be ours) → date coverage (per-query wall-clock timestamps vs billed days) → provider routing (OpenRouter billed elsewhere) → undatable runs (browsecomp_plus is ours but carries only an import timestamp, so it is excluded from day-matching, not from the total)
Gemini runs discovered
112 total · 97 attributable · 3 OpenRouter · 12 ours but undatable (browsecomp_plus)
Undatable workload sized
5,736 queries · 896.28M in · 10.03M out · ~$544 floor
Queries / LLM calls reconstructed
48,039 queries · 148,527 recorded calls
Tokenizer
tiktoken/o200k_base (proxy for Gemini SentencePiece) — Gemini's tokenizer is proprietary, so this is a same-class proxy
Bottom-up floor (our models)
input 125.88M · output 23.30M re-tokenized from verbatim stored text
Billed (our models)
input incl. cached 83.55B · output 530.24M

What this cannot establish. Thinking tokens, cached-input volume, and retried or failed calls were never recorded, so the bottom-up floor covers only 4.4% of billed output and cannot be used to price the incident. The $3,111.97 billed on our models on days with no saved run is genuinely ambiguous: it may be unsaved or failed runs of ours (the browsecomp_plus generation is a known candidate, since it definitely ran on this key on a date we cannot recover), or further third-party use. Resolving the remainder requires per-request API logs or Cloud Logging, which the billing export does not contain.

Generated 2026-08-12 18:13 UTC from sky-gcp-electro_x_evolve-20260310-20260811.csv and /data_large/electro_results/outputs. Reproduce with python -m gemini_audit.audit then python -m gemini_audit.reconcile.