Skip to main content
Gloo APIs can return 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 HTTP 429 when the account’s spending limit has been reached:
This response does not include 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 include Retry-After, which specifies the number of seconds to wait before trying again. When handling an endpoint-specific 429:
  1. Read the endpoint documentation and response body to identify the quota.
  2. If Retry-After is present, wait at least that long.
  3. Otherwise, retry only when the operation is safe to repeat, using a bounded delay with jitter.
  4. 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 remains 200. If the upstream model provider reaches a rate limit, the stream can end with an SSE error event containing:
Stream error events do not include HTTP rate-limit headers. Use the structured 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 to Retry-After and explicitly excludes spending-limit errors.
For live streaming experiences, use lower retry budgets than the non-streaming example. See Errors for the complete error schema.