---
title: "When a quota is exceeded"
description: "The quota_exceeded error, its status codes and what it contains."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.ezghcloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# When a quota is exceeded

A request that would take a quota past its value is refused with the error code
`quota_exceeded`. Nothing is created or processed.

| Kind | Status | `quota` also contains |
| --- | --- | --- |
| Allocation | `409 Conflict` | `used` |
| Rate | `429 Too Many Requests` | `window` |
| Usage | `429 Too Many Requests` | `used`, `periodStart`, `resetsAt` |
| Concurrency | `429 Too Many Requests` | `inFlight` |

Every `quota` object has `id`, `kind`, `scope` and `limit` (the value that applied), and
`scopeResourceName` when the error names the organization or project.

```json
{
  "error": {
    "code": "quota_exceeded",
    "message": "This organization already has 10 projects, and can have at most 10 (organizations.projects.count)",
    "quota": {
      "id": "organizations.projects.count",
      "kind": "allocation",
      "scope": "organization",
      "scopeResourceName": "ezgh::org_k3f9a0x2m7qp",
      "limit": 10,
      "used": 10
    }
  }
}
```

## Handling the error

The response has no `Retry-After` header: the refusal means you are at the quota, not that the
service is busy. Don't retry on a timer.

- **Allocation:** delete resources you no longer need, then try again.
- **Rate:** send requests more slowly. Capacity refills over the quota's `window`.
- **Usage:** usage resets at `resetsAt`, the start of the next billing period.
- **Concurrency:** wait for requests in flight to finish.

A refused request with an `Idempotency-Key` is not stored, so you can send the same key again
once there is room.

Source: https://docs.ezghcloud.com/quotas/quota-exceeded/index.mdx
