Google Gemini throttles on three axes — requests per minute (RPM), tokens per minute (TPM), and the one that surprises everyone, requests per day (RPD). Limits are tracked per model and per project, and which tier you’re on is driven almost entirely by whether billing is enabled and how much you’ve spent. This page lays out how the limits work, how to raise them, and how to engineer so the daily cap never blindsides you.
The axes that throttle you
- RPM — requests per minute. A rolling 60-second window; bursty parallelism trips it even when your average rate is low.
- TPM — tokens per minute. Counts input + output. Long context, files, and images burn TPM fast.
- RPD — requests per day. The distinctive Gemini limit. You can be fine on a per-minute basis and still run out of daily quota by afternoon — and it only resets at midnight Pacific, not on a rolling window.
When you exceed any one of these, Gemini returns HTTP 429 RESOURCE_EXHAUSTED. Full troubleshooting is in the Gemini 429 RESOURCE_EXHAUSTED fix; this page is the reference behind it.
Tiers: billing is the big lever
Unlike OpenAI’s gradual tier ladder, Gemini’s biggest jump is simply turning on billing. The free tier exists for prototyping and carries tight RPM and a hard daily cap; moving to a paid tier raises every limit by orders of magnitude, and higher paid tiers unlock more as cumulative spend grows.
| Tier | Qualifies at | Daily cap (RPD) | Per-minute |
|---|---|---|---|
| Free | No billing | Low, hard daily cap | Tight RPM/TPM |
| Tier 1 | Billing enabled | Much higher | Higher RPM/TPM |
| Tier 2 | $250+ total spend | Higher still | Higher still |
| Tier 3 | $1,000+ total spend | Highest | Highest |
Limits are per model. Flash-class models (e.g. gemini-2.5-flash) carry much higher RPM/TPM/RPD than Pro models. Routing tolerant tasks to Flash is often the fastest way to add headroom without changing tier.
Check your real quotas
Gemini doesn’t surface OpenAI-style x-ratelimit-* headers on every response. Instead, view your live quotas where they’re enforced:
- Google AI Studio — per API key, under your project’s quota view.
- Cloud Console → IAM & Admin → Quotas — filter to the Generative Language API and your model to see and request increases on specific limits.
The 429 error body includes a RetryInfo hint telling you how long to wait for per-minute quotas.
Engineering around the limits
Back off on per-minute quotas
from google import genai
from google.genai import errors
import time, random
client = genai.Client() # reads GEMINI_API_KEY
def generate(prompt, model="gemini-2.5-flash", attempts=6):
for i in range(attempts):
try:
return client.models.generate_content(model=model, contents=prompt)
except errors.APIError as e:
if e.code != 429 or i == attempts - 1:
raise
time.sleep((2 ** i) + random.random())
print(generate("Hello").text) Other levers
- Enable billing. The single highest-impact change for any non-toy workload — it lifts the free-tier RPM and daily caps immediately.
- Request a quota increase in the Cloud Console for the specific model and limit you’re hitting.
- Route to Flash for tolerant tasks to preserve Pro-model quota.
- Use Batch mode for large offline jobs — separate throughput, off your interactive limits, at a discount.
- Track usage against the daily cap and alert before it’s exhausted — a per-day limit won’t self-heal until the Pacific-midnight reset.
Backoff does nothing for an exhausted RPD. If requests start failing mid-afternoon and never recover, you’ve hit the daily cap — enable billing, raise the quota, or switch to a higher-quota model rather than retrying.
How Gemini compares to other providers
- OpenAI uses RPM + a single TPM and exposes
x-ratelimit-*headers; its tiers ladder up on spend and account age. See the OpenAI rate limits reference. - Anthropic Claude splits tokens into input (ITPM) and output (OTPM) and adds a
529 Overloaded. See the Anthropic Claude rate limits. - Side-by-side: the AI API rate limits comparison.
What to do next
- Enable billing if you’re past prototyping — it’s the biggest limit increase available.
- Check your quotas in AI Studio / Cloud Console and request an increase where needed.
- Add capped backoff with jitter for per-minute limits, and monitor the daily cap.
- Hitting errors now? Jump to the Gemini 429 troubleshooting guide.