Quota exceeded
Identifiers
Section titled “Identifiers”| Field | Value |
|---|---|
| Type URI | https://iana.org/assignments/http-problem-types#quota-exceeded |
| Code | quota_exceeded |
| HTTP status | 429 |
| HTTP status | English title |
|---|---|
| 429 | Request cannot be satisfied as assigned quota has been exceeded |
When it occurs
Section titled “When it occurs”A quota limit denied the request: a request bucket, a day, month or billing-period quota, or a concurrency limit is used up. A denial that names no deciding limit also uses this code.
Client handling
Section titled “Client handling”Wait before retrying: use Retry-After when present, otherwise reset_at. For a concurrency limit, retry after requests in flight finish. Reduce the request rate if denials repeat. detail is text for people, not a format to parse.
Example response
Section titled “Example response”If your application installs a custom handler, the body may differ.
This example shows a daily limit. Use reset_at to decide when to retry. Bucket and concurrency limits can also send Retry-After.
HTTP/1.1 429 Too Many RequestsContent-Type: application/problem+json
{ "code": "quota_exceeded", "reset_at": "2030-01-01T00:00:00Z", "status": 429, "title": "Request cannot be satisfied as assigned quota has been exceeded", "type": "https://iana.org/assignments/http-problem-types#quota-exceeded", "violated-policies": [ "requests" ]}Server correction
Section titled “Server correction”Check the tenant’s plan and the limit named by violated-policies. Set MiddlewareConfig.Plan from trusted subscription data. Do not change plans merely to hide exhausted usage.
Response fields
Section titled “Response fields”Quota middleware
Section titled “Quota middleware”code(string, always): The stable code above.type(string, always): The exact type URI above.title(string, always): English title. Quota administration routes use their own titles for some codes.status(integer, always): The HTTP status of the response.detail(string, optional): Human-readable explanation, omitted when empty. Its wording is not a stable format.violated-policies(array, always): IDs of the limits involved:[]when there are none, never null.reset_at(date-time, optional): RFC 3339 reset time of the limit that decided the denial, from the store clock. Present when the denial names that limit.
Headers:
RateLimit-Policy,RateLimit(conditional): Draft-11 rate-limit fields. The middleware sends them whenHeadersisDraft11(the default) orDraft11AndLegacy. It skips them when the plan has no limit to report.UsageHandlernever sends them.X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset(conditional): Legacy rate-limit fields, sent by the middleware whenHeadersisLegacyorDraft11AndLegacy.Retry-After(conditional): Whole seconds until a retry can succeed, rounded up. Sent when the deciding limit is a bucket or concurrency limit.
Related behavior
Section titled “Related behavior”See quota for plans, credit adjustments and usage.