Gemini 429 Rate Limiting and Provisioned Throughput
Why Am I Getting 429 Errors?
Gemini models on the Turing Platform run on Google Cloud Vertex AI and operate under a shared quota model — all users share the same throughput capacity within a GCP project and region. When overall request volume exceeds the quota limits (QPM / TPM) allocated by Google, Vertex AI returns an HTTP 429 Too Many Requests error.
This means that even if an individual user's request rate is low, they may still encounter 429 errors when the shared quota is exhausted by aggregate traffic.
Due to the unpredictable nature of shared quotas, throughput for Gemini models cannot be guaranteed. Direct use in production environments with strict stability requirements is not recommended.
Solution: Purchase Provisioned Throughput
To use Gemini models reliably in production, you need to purchase Provisioned Throughput from Google Cloud.
Provisioned Throughput is a fixed-fee, fixed-term subscription service that reserves dedicated throughput for generative AI models on Vertex AI. Once purchased, you receive capacity that is independent of the shared quota and is not affected by other users' requests.
Billing
Provisioned Throughput is measured in GSUs (Generative AI Scale Units). The number of GSUs required depends on factors such as model type, guaranteed QPS, and token volume.
Multiple commitment terms are available, with lower unit prices for longer commitments:
| Commitment Term | Description |
|---|---|
| 1 week | Most flexible, highest unit price |
| 1 month | Suitable for short-term projects |
| 3 months | Balances flexibility and cost |
| 12 months | Lowest unit price, ideal for stable long-term workloads |
How to Purchase
Please contact the platform operations team via Get Help.
Soft Mitigation: Retry and Fallback
If purchasing Provisioned Throughput is not an option, the Turing Platform provides max_retries and fallbacks as engineering-level mitigation measures. This is a trade-off strategy — it can improve request success rates, but at the cost of consistency in model output:
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="turing/gemini-3.1-pro-latest",
messages=[{"role": "user", "content": "Hello"}],
turing_options={
"max_retries": 2,
"fallbacks": "turing/gpt-4.1"
}
)
For more configuration details, see: Timeouts and Model Instability
Retry and Fallback are engineering-level measures only and do not fundamentally resolve insufficient shared quota. Fallback switches to a different model, and the output may differ from the original model. Please evaluate whether this is acceptable for your use case.