Last updated: October 20, 2026 · Limits checked against Google's Gemini API rate-limit docs and Anthropic's Claude API rate-limit docs on this date. Limits change often; check your console for your live values.
Disclosure: This guide is published by the Oxyy.ai team. All Google and Anthropic limits below come from their official documentation.
Quick answer: A 429 error means you went over a rate limit. Gemini limits each Google Cloud project (not each key) by requests per minute, tokens per minute and requests per day, plus a spend limit per 10 minutes on paid tiers. Claude limits each organization by requests per minute, input tokens per minute and output tokens per minute, plus a monthly spend cap. Fix 429s by honoring Retry-After, caching prompts, smoothing bursts, moving up a tier, and failing over to another model or provider.
| Tier | Gemini: how you qualify | Gemini: spend limit / 10 min | Claude: RPM / ITPM / OTPM (Opus 5.5, Sonnet 5.5) | Claude: monthly spend cap |
|---|---|---|---|---|
| Free / Evaluation | Active project or free trial | N/A | Evaluation tier: below standard limits | — |
| Tier 1 / Start | Link an active billing account | $10 | 1,000 / 2,000,000 / 400,000 | $500 |
| Tier 2 / Build | $100 paid + 3 days | $50 | 5,000 / 5,000,000 / 1,000,000 | $1,000 |
| Tier 3 / Scale | $1,000 paid + 30 days | $200 | 10,000 / 10,000,000 / 2,000,000 | $200,000 |
| Custom | Request an increase | — | Arranged with Anthropic | None |
Sources: Google Gemini API "Rate limits" page and Anthropic "Rate limits" page, checked October 20, 2026. Gemini per-model RPM/TPM values are shown in Google AI Studio for your project.
Key Takeaways
- Gemini limits are per project, not per API key. Creating more keys in the same project won't give you more capacity.
- Gemini daily quotas (RPD) reset at midnight Pacific time. Paid tiers also have a spend limit on a rolling 10-minute window.
- Claude uses a token bucket, so capacity refills continuously. A 60 RPM limit can be enforced as 1 request per second, so short bursts trigger 429s.
- Cached tokens don't count toward Claude's input limit on most models. Prompt caching is the cheapest way to raise your effective throughput.
- Not every 429 is retryable. Claude's monthly spend-cap 429 has no
retry-afterheader and keeps failing until the next month or a tier upgrade. - Failover beats waiting. With one gateway key for many models, your code can fall back from Claude to Gemini to GLM in milliseconds.
What Does a 429 Error Mean?
HTTP 429 Too Many Requests means the API rejected your request because you exceeded a limit. It isn't a bug in your request. The same request will succeed once you're back under the limit.
| Provider | What the 429 looks like | Retry header |
|---|---|---|
| Gemini | 429 RESOURCE_EXHAUSTED | Wait and retry; check AI Studio for which limit |
| Claude (rate limit) | 429, "type": "rate_limit_error", names which limit was exceeded | retry-after (seconds) |
| Claude (monthly spend cap) | 429, rate_limit_error with error_code: "enforced_spend_limit_reached" | None: retries fail until access resumes |
| Claude (acceleration limit) | 429 after a sharp jump in usage | Ramp traffic up gradually |
Gemini API Rate Limits in 2026
How Gemini Rate Limits Work
- Limits are measured as RPM (requests per minute), TPM (input tokens per minute) and RPD (requests per day). Exceeding any one of them triggers a 429.
- Limits apply per project, not per API key.
- RPD resets at midnight Pacific time.
- Image models also have IPM (images per minute), and some models have a tokens-per-day limit.
- Preview and experimental models have tighter limits.
Gemini Usage Tiers
| Tier | Qualification | Billing tier cap | Spend limit (rolling 10 min) |
|---|---|---|---|
| Free | Active project or free trial | N/A | N/A |
| Tier 1 | Set up and link an active billing account | $250 | $10 |
| Tier 2 | Paid $100 + 3 days since first successful payment | $2,000 | $50 |
| Tier 3 | Paid $1,000 + 30 days since first successful payment | $20,000 – $100,000+ | $200 |
Free → Tier 1 upgrades usually take effect instantly; later upgrades take effect within 10 minutes once you qualify. Tier 2 and 3 qualification counts total spend on Google Cloud services for the linked billing account.
Gemini Batch API Limits
Batch requests have their own limits: 100 concurrent batch requests, a 2GB input file limit, 20GB of file storage, and a cap on enqueued tokens per model. On Tier 1, Gemini 4 Argon and Gemini 3.1 Pro Preview allow 5,000,000 enqueued tokens; on Tier 2 that rises to 500,000,000 and on Tier 3 to 1,000,000,000.
Anthropic Claude API Rate Limits in 2026
How Claude Rate Limits Work
- Limits are set per organization and measured as RPM, ITPM (input tokens per minute) and OTPM (output tokens per minute) for each model class.
- Anthropic uses a token bucket: capacity refills continuously up to your maximum, rather than resetting every minute.
- New organizations may start in an Evaluation tier below standard limits, which rises automatically as you build usage history.
- Cache-aware ITPM: on most models only uncached input and cache writes count toward ITPM. Cache reads don't.
- Claude Opus 5.5 and Opus 5 each have their own bucket; Opus 4.5–4.8 share one combined bucket. The same applies to Sonnet 5.5 / Sonnet 5 versus Sonnet 4.x.
Claude Rate Limits by Tier (Messages API)
| Model | Start (RPM / ITPM / OTPM) | Build | Scale |
|---|---|---|---|
| Claude Opus 5.5, Opus 5, Opus 4.x | 1,000 / 2M / 400K | 5,000 / 5M / 1M | 10,000 / 10M / 2M |
| Claude Sonnet 5.5, Sonnet 5, Sonnet 4.x | 1,000 / 2M / 400K | 5,000 / 5M / 1M | 10,000 / 10M / 2M |
| Claude Haiku 5.5, Haiku 4.5 | 1,000 / 2M / 400K | 5,000 / 5M / 1M | 10,000 / 10M / 2M |
| Claude Fable 5.x (combined) | 1,000 / 500K / 100K | 2,000 / 1.5M / 300K | 4,000 / 4M / 800K |
Claude Spend Caps
Start, Build and Scale tiers carry monthly spend caps of $500, $1,000 and $200,000. When you hit the cap, API usage pauses until 00:00 UTC on the first day of the next month unless you request a higher limit. The Message Batches API has separate limits (for example 1,000 RPM and 200,000 queued batch requests on Start).
Why You Keep Getting 429 Errors (Even Under the Limit)
- Bursts. Claude may enforce 60 RPM as 1 request per second. Ten requests fired at once can fail even if your minute total is low.
- Long prompts eat TPM. A coding agent re-sending 150K tokens of context hits a 2M ITPM limit after about 13 requests a minute.
- Shared project or org. Every app and teammate in the same Gemini project or Claude organization shares one bucket.
- Preview models. Gemini preview models have tighter limits than stable ones.
- Spend limits. Gemini's 10-minute spend limit and Claude's monthly cap both return 429s, not billing errors.
- Sudden ramps. Anthropic's acceleration limits can trigger 429s when usage jumps sharply.
How to Stop 429 Errors: 7 Fixes That Work
1. Honor Retry-After With Exponential Backoff
When a 429 includes retry-after, wait that many seconds. If it doesn't, back off exponentially with jitter. Tight retry loops make the limit last longer.
2. Cache Your Prompts
On Claude, cached reads don't count toward ITPM. With an 80% cache hit rate and a 2M ITPM limit, Anthropic says you can effectively process 10M input tokens per minute. Put stable content (system prompt, tools, documents) first and mark it with cache_control.
3. Smooth Your Traffic
Use a queue or token-bucket limiter on your side so requests go out at a steady rate instead of in bursts.
4. Use Batch for Non-Urgent Work
Both Gemini and Claude have batch APIs with separate limits, and batch is 50% cheaper on both.
5. Move Up a Tier
Gemini upgrades are automatic once you meet the spend and time thresholds. On Claude, use Request tier increase on the Rate limits page in the Console.
6. Separate Workloads
On Gemini, limits are per project, so put production and batch jobs in different projects. On Claude, set workspace-level limits so one workload can't starve another.
7. Fail Over to Another Model or Provider
The fastest fix is not to wait at all. If Claude Sonnet returns a 429, send the request to Gemini or GLM instead. The hard part is usually integration: different SDKs, keys and billing for each provider. A unified API solves that.
Auto-Failover With One Key: How Oxyy Helps
Oxyy.ai is a unified AI API gateway: one OpenAI-compatible endpoint and one key for 170+ models, including Claude, Gemini, GPT, Grok, GLM, DeepSeek and Kimi. Here's what that changes for rate limits, and what it doesn't:
- No Evaluation-tier wait at each provider. Your limits are set by your Oxyy tier per API key, not by your own Anthropic or Google account history. Higher tiers unlock automatically as you top up.
- Gateway-level retries. Each model can sit behind several upstream providers. When a provider starts failing, Oxyy takes it out of rotation and retries elsewhere instead of returning an error. (This applies when a model has more than one upstream; Claude models on Oxyy are served by Anthropic.)
- Cross-model fallback in your code. Because every model uses the same key and format, falling back from
claude-sonnet-5-5togemini-3.1-pro-previewtoglm-5.3is a list of strings. - Clear rate-limit headers. Every response includes
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Resetand, on 429s,Retry-After. - Oxyy still has limits. Requests per minute, tokens per minute, daily caps and concurrency are enforced per key, and exceeding them returns a 429 with
Retry-After. Check your current limits withGET /v1/models/{model}. - It's cheaper too. Oxyy currently charges 40% of the standard price: Claude Sonnet 5.5 at $0.80 / $4.00 and Gemini 3.1 Pro at $0.80 / $4.80 per 1M tokens.
Copy-Paste: Retry + Cross-Model Failover (Python)
import os, time, random
import openai
from openai import OpenAI
client = OpenAI(base_url="https://api.oxyy.ai/v1", api_key=os.environ["OXYY_API_KEY"])
# Ordered fallback chain: same key, same format
MODELS = ["claude-sonnet-5-5", "gemini-3.1-pro-preview", "glm-5.3"]
def chat(messages, retries_per_model=3, max_wait=10):
for model in MODELS:
for attempt in range(retries_per_model):
try:
return client.chat.completions.create(model=model, messages=messages)
except openai.RateLimitError as e:
wait = float(e.response.headers.get("retry-after", 2 ** attempt))
if wait > max_wait:
break # long wait: switch model instead
time.sleep(wait + random.random())
except (openai.InternalServerError, openai.APIConnectionError, openai.APITimeoutError):
time.sleep(2 ** attempt + random.random())
raise RuntimeError("All models are busy. Try again later.")
print(chat([{"role": "user", "content": "Summarize this ticket in one line."}]).choices[0].message.content)
Copy-Paste: Same Pattern in JavaScript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.oxyy.ai/v1", apiKey: process.env.OXYY_API_KEY });
const MODELS = ["claude-sonnet-5-5", "gemini-3.1-pro-preview", "glm-5.3"];
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
export async function chat(messages) {
for (const model of MODELS) {
for (let attempt = 0; attempt < 3; attempt++) {
try {
return await client.chat.completions.create({ model, messages });
} catch (err) {
if (err.status === 429) {
const wait = Number(err.headers?.["retry-after"] ?? 2 ** attempt);
if (wait > 10) break;
await sleep(wait * 1000);
} else if (err.status >= 500) {
await sleep(2 ** attempt * 1000);
} else {
throw err;
}
}
}
}
throw new Error("All models are busy");
}
How to Check Which Limit You Hit
| Provider | Where to look |
|---|---|
| Gemini | Google AI Studio → your project's rate-limit page shows each model's RPM, TPM and RPD and your current tier |
| Claude | The 429 body names the limit; response headers report remaining requests and tokens; the Console Usage page charts uncached input TPM, output TPM and cache rate |
| Oxyy | X-RateLimit-* headers on every response, Retry-After on 429s, and X-Request-Id to quote to support |
Final Verdict
Gemini and Claude rate limits both scale with spend and account age, so new apps hit 429s early. Start with the basics: honor Retry-After, cache prompts, smooth bursts and use batch. Then add cross-model failover so a 429 on one model becomes a fast retry on another instead of a failed user request. With Oxyy, that failover is one key and one list of model names, and every request costs 60% less during the current promotion.
Get a free Oxyy key and add failover in five minutes →
Related: Oxyy rate limits · Oxyy error codes · Gemini API pricing · Claude API pricing
Frequently Asked Questions
What are the Gemini API rate limits?
Gemini limits each project by requests per minute, tokens per minute and requests per day, with values that depend on the model and your usage tier. Paid tiers also have a spend limit per rolling 10 minutes: $10 on Tier 1, $50 on Tier 2 and $200 on Tier 3.
What are the Anthropic Claude API rate limits?
On the Start tier, Claude Opus 5.5 and Sonnet 5.5 allow 1,000 requests per minute, 2,000,000 input tokens per minute and 400,000 output tokens per minute. Build allows 5,000 / 5M / 1M and Scale allows 10,000 / 10M / 2M.
How do I fix a Gemini 429 RESOURCE_EXHAUSTED error?
Wait and retry with exponential backoff, reduce expensive requests, spread traffic across time, and request a higher limit if you hit it during normal use. Remember that limits are per project, so extra API keys in the same project don't help.
How do I fix a Claude rate_limit_error?
Wait for the number of seconds in the retry-after header, use prompt caching so cached tokens don't count toward input limits, smooth bursts, and request a tier increase in the Claude Console if needed.
When do Gemini rate limits reset?
Per-minute limits refresh continuously. Requests-per-day (RPD) quotas reset at midnight Pacific time.
Why do I get a Claude 429 with no retry-after header?
That usually means you reached your tier's monthly spend cap. The error_code is enforced_spend_limit_reached, and requests keep failing until 00:00 UTC on the first of the next month or until you move to a higher tier.
Do cached tokens count toward Claude rate limits?
On most Claude models, no. Only uncached input tokens and cache-write tokens count toward input tokens per minute. Claude Haiku 3.5 is an exception.
Are Gemini rate limits per API key?
No. Gemini rate limits apply per Google Cloud project. All keys in the same project share the same limits.
Can a unified API stop 429 errors completely?
No API can promise zero 429s. A unified API like Oxyy has its own per-key limits, but it lets you retry on another upstream or fall back to another model with the same key, so a rate limit rarely reaches your users.
How do I upgrade my Gemini API tier?
Link a billing account to reach Tier 1. Tier 2 requires $100 paid plus 3 days since the first payment, and Tier 3 requires $1,000 plus 30 days. Upgrades happen automatically once you qualify.
How do I get higher Claude rate limits?
Use Request tier increase on the Rate limits page of the Claude Console, or contact Anthropic support. Limits also rise automatically as your organization builds usage history.

