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
Completions endpoints return HTTP429 when the account’s spending limit has been reached:
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.
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.

