A 429 from the Gemini API always comes back as the same error code, RESOURCE_EXHAUSTED — unlike OpenAI or Anthropic, which return distinguishable messages or error codes for a rate limit versus a billing block, Google's own troubleshooting documentation groups rate limiting, quota, and other resource constraints under this one label. Here's how to work out which one you actually hit, and the right response for each.
Check which limit dimension you're actually up against
Gemini's rate limits are tracked across requests per minute, tokens per minute, and requests per day, plus a spend-based ceiling measured in rolling ten-minute windows that scales with your account's usage tier — $10 per ten minutes at Tier 1, $50 at Tier 2, $200 at Tier 3. A burst of legitimate traffic can trip that spend ceiling well before it comes close to your RPM or monthly budget, so a 429 doesn't necessarily mean you're sending too many requests — check usage against all four dimensions, not just request count.
There's no documented Retry-After header — implement your own backoff
Google's own troubleshooting guidance for 429s and other transient errors recommends exponential backoff with jitter — an initial delay of about a second, then roughly doubling on each subsequent attempt — rather than pointing to a response header that tells you how long to wait. The official Python SDK already retries this way automatically, up to four attempts with delays between roughly 1 and 60 seconds. A retry loop built assuming a Retry-After-style header, the way you might build one against a different vendor's API, has nothing to read here.
Limits are shared across every API key in your project
Rate limits apply per project, not per individual API key, so usage from every key under that project counts against the same shared ceiling — a second key issued for a different service or teammate doesn't get its own separate allowance. If one integration is hitting 429s despite looking well within its own budget, check whether another key in the same project is drawing down the shared pool.
Moving to a higher tier is automatic, not a support request
Unlike vendors where you can directly request a rate-limit increase, Gemini's tiers unlock automatically on a fixed schedule tied to billing history: linking an active billing account gets you to Tier 1, spending $100 and waiting 3 days gets Tier 2, and spending $1,000 and waiting 30 days gets Tier 3 — each raising both the standard RPM/TPM/RPD ceilings and the ten-minute spend limit. There's no ticket to file to skip ahead; the fastest path to a higher ceiling is linking billing and letting usage accumulate.