API Guides16 min

Gemini API Rate Limits: Check Your Real Quota and Fix 429s

Find the active Gemini API limits for your project and model, calculate a safe traffic budget, and diagnose 429 quota errors versus 503 capacity errors.

Yingtu AI Editorial
Yingtu AI Editorial
YingTu Editorial
Jan 22, 2026
Updated Jul 15, 2026
16 min
Gemini API rate-limit routes and five-part fingerprint for identifying the correct limit owner
yingtu.ai

Contents

No headings detected

Gemini does not have one universal rate limit. For the Gemini Developer API, the number that matters is the active row for your exact Google Cloud project, model, tier, and metric in AI Studio; Gemini Apps, Firebase AI Logic, and Vertex AI use different counters or capacity systems.

Before changing code, billing, or keys, record a five-part limit fingerprint: surface, project or account, model or feature, metric or serving lane, and reset or evidence window. If any field is unknown, you do not yet know which limit you hit.

SurfaceWhere the active evidence livesFirst move
Gemini Developer APIThe exact project and model row on the AI Studio rate-limit pageIdentify the binding RPM, input TPM, RPD, IPM, TPD, spend, Priority, or Batch lane.
Gemini AppsSettings → Usage limits in the consumer appCheck the feature allowance and its rolling or stated reset.
Firebase AI LogicFirebase per-user gateway settings plus the upstream provider quotaCheck both layers; the lower one wins.
Vertex AIGoogle Cloud quota, Dynamic Shared Quota, or Provisioned Throughput controlsDiagnose shared capacity separately from purchased throughput.

Stop rule: do not rotate API keys or retry in a blind loop. A 429 RESOURCE_EXHAUSTED response points you toward quota or spend evidence; a 503 UNAVAILABLE response points you toward service capacity or temporary availability. Diagnose the branch before you change the workload.

Read the active Developer API row, not a copied table

The official Gemini Developer API rate-limit page defines the mechanics, while the authenticated AI Studio rate-limit view owns the values that apply to a specific project and model. A copied model table can explain the vocabulary, but it cannot tell you whether your current project has the same tier, account standing, preview status, or active capacity.

Developer API limits are normally expressed across three independent dimensions:

  • Requests per minute (RPM) counts calls, so many small requests can bind RPM before tokens become scarce.
  • Input tokens per minute (input TPM) counts prompt and context input, so fewer large requests can bind the token lane first.
  • Requests per day (RPD) applies where the active row has a daily limit. Under the current official contract, that counter resets at midnight Pacific time.

Some model or feature rows also expose images per minute (IPM) or tokens per day (TPD). Exceeding any applicable dimension can lead to a rate-limit response. Preview and experimental models can have stricter limits, which is another reason to copy the exact model ID from the request rather than infer a limit from a family name.

These limits apply per Google Cloud project, not per API key. Two keys in the same project draw from the same pool. A second key can be useful for credential rotation or service separation, but it does not create more RPM, TPM, or RPD. If an exact browser message rather than an API response is blocking work, use the narrower Google AI Studio rate-limit recovery path instead of treating the UI message as proof of an API counter.

Google also warns that specified rate limits are not guaranteed capacity. The displayed row is a ceiling and an admission contract, not a promise that every request below it will be served during a regional or service-wide capacity event.

Tier and spend conditions are volatile

As of July 15, 2026, Google's public rate-limit page lists the following tier qualification rules:

TierCurrent public qualification ruleWhat still needs verification
FreeAn active project or free-trial stateWhich models and limits are active for the project
Tier 1A linked, active billing accountThe project/model row after billing is active
Tier 2At least $100 paid and at least 3 days since the first successful paymentAccount standing and the active tier shown by Google
Tier 3At least $1,000 paid and at least 30 days since the first successful paymentAccount standing and the active tier shown by Google

The same page currently describes a spend-based limit evaluated over a rolling 10-minute window: $10 for Tier 1 and $200 for Tiers 2 and 3. Those values and their applicability are freshness-sensitive. Recheck the official rate-limit page and the authenticated project before using them in an incident playbook or load test.

Billing therefore changes eligibility; it does not erase every limit. A paid project can still exhaust an RPM, input-TPM, RPD, spend, Batch, or serving-capacity constraint. For the separate question of whether a particular model row is available without billing, use the Gemini API free-tier guide.

Separate clocks and serving lanes before load testing

One request can be valid under the minute counters and still fail a daily or spend-window constraint. It can also be sent through Standard, Priority, or Batch, which are distinct serving lanes rather than three names for one shared allowance.

Clock or laneWhat it controlsEvidence to captureCommon planning error
RPMNumber of online calls per minuteRequest timestamps and the active RPM rowTesting only average RPS and ignoring bursts
Input TPMPrompt and context input per minuteInput-token distribution, not only request countTreating every request as the same size
RPDDaily request count where enabledActive RPD row and Pacific reset timeAssuming a short backoff can solve a daily cap
Spend windowSpend-based admission over the applicable rolling windowBilling/tier state and the current official ruleTreating the window as a monthly budget
PriorityA separate priority-serving limitRequested service tier and x-gemini-service-tierAssuming Priority is unlimited extra capacity
BatchA separate asynchronous quota poolConcurrent jobs, file sizes, and enqueued tokensSending urgent interactive work to Batch

Google's Priority inference documentation currently sets the default Priority limit at 0.3 times the corresponding Standard model/tier limit. When Priority capacity is exhausted, a request can be served as Standard instead of simply failing, so record the returned x-gemini-service-tier header if the lane matters to latency or cost.

Batch is useful for non-urgent work because its quota pool is separate from interactive calls. As of July 15, 2026, the Batch API documentation and rate-limit page list 100 concurrent batch requests, a 2 GB input-file limit, 20 GB of file storage, and model/tier-specific enqueued-token limits. Treat those as checked-date constraints, not permanent constants. Batch can move a workload to a better lane, but it does not make a malformed or unsupported workload valid.

A useful load-test record therefore has more than a target RPS. It names the exact model and project, input-token percentiles, burst profile, requested serving lane, p95 latency, daily volume, spend exposure, and whether requests are interactive or asynchronous.

Turn a live row into a safe capacity budget

The active row becomes useful when it is converted into a workload budget. Start by finding which per-minute ceiling binds:

Request ceiling = min(active RPM, active input TPM ÷ average input tokens per request)

This ceiling is a mathematical orientation point, not a production target. Input sizes vary, traffic arrives in bursts, retries add load, and capacity can be lower than the displayed limit. Choose operational headroom from observed variability and business risk; Google does not prescribe one universal headroom percentage.

Hypothetical worked example

Assume the active row shows 60 RPM and 120,000 input TPM, while observed requests average 4,000 input tokens:

  1. The RPM ceiling is 60 requests per minute.
  2. The input-TPM ceiling is 120,000 ÷ 4,000 = 30 requests per minute.
  3. The smaller ceiling binds, so the pre-headroom request ceiling is 30 requests per minute.
  4. If the application team chooses 20% headroom for this example, the initial operating target is 24 requests per minute, or 0.4 requests per second.
  5. With an observed p95 latency of 2 seconds, estimated steady-state concurrency is 0.4 × 2 = 0.8 in-flight requests. In practice, start with a concurrency cap of 1 and test the actual queue, burst, and retry behavior.

The 20% margin above is an engineering assumption for the example, not a Google recommendation. A spiky consumer workload may need more room; a smooth offline queue with tight request-size control may need less.

Minute math is only the first gate. At 24 requests per minute, a workload that ran continuously could attempt 34,560 requests per day. Compare that projection with the active RPD row instead of assuming the minute budget can run for 24 hours. Check any spend window separately as well.

Use percentiles, not just averages, when request sizes vary. A safe operating envelope can be calculated from p50, p95, and worst-expected input tokens:

Planning viewWhy it matters
Average input tokensGives a useful steady-state estimate
p95 input tokensExposes whether large prompts bind TPM during normal peaks
Maximum allowed inputPrevents one request class from consuming the entire minute budget
p95 latencyConverts safe RPS into a starting concurrency cap
Retry rateReveals amplification during partial failures
Cache hit rateShows whether repeated context can be removed from the hot path

Recalculate when the model, prompt template, context size, tool use, traffic mix, tier, or serving lane changes. Capacity planning is a measured loop, not a one-time division.

Diagnose 429 before retrying

The official troubleshooting page gives 429 RESOURCE_EXHAUSTED and 503 UNAVAILABLE different meanings. Both can be transient, and both may justify bounded exponential backoff with jitter, but they do not point to the same evidence.

ResponseFirst diagnosisEvidence to inspectUseful actionStop condition
429 RESOURCE_EXHAUSTEDQuota, rate, RPD, spend, or another admission limitFull error body, headers, Retry-After, project/model row, recent usageQueue, reduce rate or input, wait for the correct window, or use the official quota pathStop blind retries until the exhausted dimension and reset are known
503 UNAVAILABLETemporary overload, capacity, or service unavailabilityRequest ID, time, endpoint/region, model, service statusBounded backoff, traffic smoothing, supported global routing, then escalation with evidenceStop after the retry budget or when impact is sustained

A 429 caused by a minute burst may clear after the window moves. A 429 caused by RPD will not be repaired by retrying every few seconds. A spend-window 429 needs the correct rolling-window or billing action. A sustained 503 may need status verification or a different capacity route even when the displayed project limits look healthy.

A retry policy needs explicit boundaries

A production retry policy should define:

  • which status codes are retryable;
  • whether the operation is safe to repeat;
  • a maximum attempt count and elapsed-time budget;
  • exponential backoff with randomized jitter;
  • support for Retry-After when the response provides it;
  • a queue or circuit breaker that prevents synchronized retry storms;
  • separate metrics for original calls and retry traffic;
  • a final evidence packet containing request ID, exact model, endpoint, timestamp with timezone, response details, and observed impact.

Do not rotate API keys as a recovery tactic. Because quota belongs to the project, key rotation usually preserves the same constraint while obscuring which credential, service, and request pattern caused the incident. Do not distribute requests across projects to evade a limit; separate projects are appropriate only when they represent legitimate ownership, billing, security, or environment boundaries.

The code-heavy implementation details belong in the focused Gemini API quota-exceeded troubleshooting guide. The broad decision here is to identify the exhausted clock before choosing a retry, wait, quota, or capacity response.

Fix the binding limit, not the symptom

The fastest safe remedy depends on what actually bound:

Binding constraintShort-term controlDurable design moveWrong shortcut
RPMSmooth bursts, cap concurrency, queue callsAdmission control and per-workload budgetsMore keys in the same project
Input TPMShorten context, remove duplicate instructions, reduce batch sizeCache stable context and separate large jobsCounting requests without measuring tokens
RPDDrop nonessential calls and wait for the Pacific reset where appropriateForecast daily volume and move eligible traffic to a qualified tierTight-loop retries
Spend windowReduce admitted work and wait for the applicable rolling windowBudget alerts and cost-aware admissionAssuming billing means no spend limit
Priority limitObserve the returned service tier and decide whether Standard overflow is acceptableReserve Priority for latency-sensitive work and monitor the laneTreating Priority as universal headroom
Batch enqueued tokens or job limitsStagger submissions and reduce job sizeBuild an asynchronous scheduler around the current Batch contractSending latency-sensitive requests to Batch
503 capacityApply bounded backoff and smooth trafficSupported global routing, capacity planning, or Provisioned Throughput where relevantChasing project quota without capacity evidence

Caching is most useful when a large, stable prefix is repeated. Queueing is most useful when demand can wait. Batch is most useful when the answer does not need to be interactive. A model change is useful only when the replacement is currently available, meets the task's quality requirement, and has an active row that improves the binding constraint. A legacy model name from an old quota table is not a fallback plan.

Quota increases and higher tiers can help sustained legitimate demand, but they should follow a measured request: current project and model, observed traffic distribution, binding dimension, expected growth, mitigations already in place, and the business impact of the limit. That evidence is more useful than “we need more RPM.”

Do not transfer limits across Gemini products

The word “Gemini” appears across consumer apps, developer APIs, Firebase, and Vertex AI. Their limit contracts are not interchangeable.

Gemini Apps use a consumer allowance

Gemini Apps limits are compute-based and can depend on prompt complexity, selected model or feature, file use, and conversation length. As of July 15, 2026, Gemini Apps Help says the allowance refreshes every five hours until a weekly limit is reached, can change with capacity, and exposes the user's current reset in Settings → Usage limits.

That consumer allowance does not raise a Developer API project's RPM, TPM, or RPD. A Google AI subscription and a billed Developer API project solve different jobs. Do not copy consumer prompt counts into an API capacity plan.

Firebase AI Logic stacks two owners

Firebase AI Logic can add a gateway-level per-user control in front of the selected model provider. As of July 15, 2026, Firebase documents a default per-user limit of 100 RPM. The upstream Gemini provider's project/model quota still takes precedence.

The effective ceiling is therefore the lower applicable layer. If a single user is throttled while project-level usage looks healthy, inspect the Firebase gateway. If many users fail together and the Gemini project row is exhausted, changing only the gateway limit will not fix the upstream constraint.

Vertex AI uses a capacity contract

For newer Gemini models on Vertex AI PayGo, Google Cloud documents Dynamic Shared Quota rather than a fixed predefined project quota. A Vertex 429 can indicate contention in the shared pool, so traffic smoothing, the global endpoint where suitable, bounded retries, and Provisioned Throughput are Vertex-specific options.

Do not paste Developer API RPM/RPD values into a Vertex plan. If predictable enterprise throughput is required, compare observed PayGo behavior with Provisioned Throughput instead of treating shared capacity as a guaranteed fixed ceiling.

Image-generation workloads can add still more model- and surface-specific limits. Use the Gemini image-generation rate-limit guide when IPM, consumer image caps, or Vertex image capacity—not the broad Developer API contract—is the actual job.

Production preflight: record the contract before launch

A reliable launch record should answer all of these questions:

  • Surface: Is traffic going through the Gemini Developer API, Gemini Apps, Firebase AI Logic, or Vertex AI?
  • Owner: Which project, billing account, consumer account, or Firebase project owns it?
  • Model: What exact model ID and status does the request use?
  • Metric: Which RPM, input-TPM, RPD, IPM, TPD, spend, Batch, or Priority value applies?
  • Window: When does the counter reset or roll, and where will the team verify it?
  • Traffic shape: What are p50 and p95 input tokens, p95 latency, burst factor, daily volume, and retry rate?
  • Admission: What queue, concurrency cap, token budget, and shed rule keep traffic below the operating target?
  • Error branch: Are 429 and 503 tracked separately, with bounded retries and a stop rule?
  • Lane: Are Standard, Priority, and Batch monitored as separate serving contracts?
  • Evidence: Can an on-call engineer capture request IDs, timestamps, model, project, response details, status, and impact without exposing credentials?

Run the calculation with production-like input sizes, not a “hello world” prompt. Test both a burst and a sustained period. Confirm that retries are visible as added load. Then set alerts below the chosen operating target, not at the published ceiling.

The most useful dashboard is not a wall of model numbers. It is a small contract record that can tell an engineer, during an incident, which surface owns the failure, which clock bound, what changed, and which action is safe.

Gemini rate-limit FAQ

Are Gemini API rate limits per API key?

No. The Developer API documentation says rate limits apply per project, not per API key. Multiple keys in one project share the same quota pool.

Does Gemini API have a daily limit?

Some active model/project rows include RPD or TPD. Where RPD applies, the current official contract resets it at midnight Pacific time. Check the exact AI Studio row because there is no universal daily number for every model and tier.

Why can a paid Gemini API project still return 429?

Billing can change tier eligibility, but the project can still exhaust RPM, input TPM, RPD, spend-window, Batch, or another active limit. A 429 is evidence to identify the binding dimension, not proof that billing failed.

How long should I wait after a Gemini 429?

The answer depends on the exhausted window. Honor Retry-After when present, inspect the error and active row, and distinguish minute pressure from RPD or spend pressure. A short wait that helps RPM will not reset a daily counter.

Is Batch API quota separate?

Yes. Batch uses a separate quota pool from interactive requests, with its own concurrent-job, file, storage, and enqueued-token constraints. Recheck the current Batch page before scheduling production volume.

Does a Gemini app subscription increase API rate limits?

Do not assume it does. Gemini Apps allowances belong to the consumer app and account. Developer API quotas belong to the Google Cloud project, model, tier, and active AI Studio row.

Are Vertex AI Gemini limits the same as Developer API limits?

No. Newer Vertex AI PayGo Gemini traffic uses Dynamic Shared Quota, while Provisioned Throughput is a purchased-capacity route. Diagnose Vertex capacity with Google Cloud evidence, not Developer API RPM/RPD tables.

Can multiple Google Cloud projects increase capacity?

Projects can have separate ownership and limits, but they should represent legitimate environment, billing, security, or organizational boundaries. Do not create or rotate projects to evade quotas. For a genuine multi-project architecture, document routing, spend, data policy, and failure isolation explicitly.

What should I send with a rate-limit support request?

Include the product surface, project identifier where safe, exact model, endpoint or region, timestamp with timezone, request ID, full error code and details, current active-limit row, recent traffic and token distribution, retry behavior, and customer impact. Never include an API key or other credential.

Tags

Share this article

XTelegram