429 Too Many Requests for more than one reason. A 429 does not always mean that you sent too many requests, and not every 429 is safe to retry.
The API does not expose one universal, plan-based request allowance or a single rate-limit response format across all endpoints. Check the response body and headers before deciding how to handle the error.
Types of Limits
Do not assume that a
429 response includes X-RateLimit-Limit, X-RateLimit-Remaining, or X-RateLimit-Reset. These headers are not part of a universal Gloo API response contract.Spending Limits
Inference endpoints return HTTP429 when the account’s spending limit has been reached. Prepaid organizations receive 1009 / MONTHLY_SPEND_LIMIT_REACHED for their monthly API spend limit; see Errors.
Retry-After. Retrying the same request without resolving the spending-limit condition will not help.
Endpoint-Specific Quotas
Some endpoints enforce their own operational quotas. Their response bodies, limit windows, and headers can differ. For example, a response may includeRetry-After, which specifies the number of seconds to wait before trying again.
When handling an endpoint-specific 429:
- Read the endpoint documentation and response body to identify the quota.
- If
Retry-Afteris present, wait at least that long. - Otherwise, retry only when the operation is safe to repeat, using a bounded delay with jitter.
- Stop retrying and surface the error when the limit requires an account or configuration change.
Streaming Provider Rate Limits
After a Completions stream has started, the HTTP status remains200. If the upstream model provider reaches a rate limit, the stream can end with an SSE error event containing:
error object and follow the retry budgets in Handling Streaming Failures.
Embeddings Provider Rate Limits
The Embeddings API maps an upstream provider429 or 5xx response to Gloo HTTP 503 with 2002 / PROVIDER_UNAVAILABLE and error.retryable: true. Retry transient provider failures with bounded exponential backoff. A provider that repeatedly ignores the requested encoding_format can also cause a 503; change the encoding format or model rather than retrying the same incompatible request.
Retry Example
The following pseudocode makes at most five total API requests, including the initial request. It retries only when the response metadata, endpoint policy, and request safety all explicitly permit a retry. It gives precedence toRetry-After and explicitly excludes spending-limit errors.

