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

# Rate limits

> Per-organization request limits, the headers that report them, and the 429 response.

Every organization has two limits on `/api/v1`, both set by its
plan:

* a **daily quota**, counted per UTC day and reset at 00:00 UTC
* a **per-minute limit**, counted per calendar minute

Both are counted per organization. Every API key in the
organization draws from the same counters, so a second key does not
add quota. The limits follow the organization's current plan: an
upgrade raises them for existing keys straight away, and a downgrade
lowers them.

| Plan | Requests / day | Requests / minute |
| - | - | - |
| Free | no API access | no API access |
| Starter | 10,000 | 1,000 |
| Pro | 100,000 | 1,000 |
| Business | 500,000 | 1,000 |
| Enterprise | unlimited | unlimited |

Requests rejected by the per-minute limit do not count against the
daily quota. Requests rejected by the daily quota are not counted
either. Today's usage against the quota is on the **API keys** page
in the console.

## Response headers

Every response under a limit carries the current state of that limit.
Reset values are seconds until the window starts over.

| Header | Meaning |
| - | - |
| `X-RateLimit-Limit` | Requests allowed per minute |
| `X-RateLimit-Remaining` | Requests left in the current minute |
| `X-RateLimit-Reset` | Seconds until the minute resets |
| `X-RateLimit-Daily-Limit` | Requests allowed per UTC day |
| `X-RateLimit-Daily-Remaining` | Requests left today |
| `X-RateLimit-Daily-Reset` | Seconds until 00:00 UTC |

Enterprise organizations have no limits, so their responses carry
none of these headers.

## 429 responses

A request over either limit returns `429 Too Many Requests` with a
`Retry-After` header (seconds) and a problem-detail body that names
the limit and, when a larger plan exists, the upgrade:

```json theme={null}
{
  "type": "https://docs.use.observer/api/getting-started/errors#rate_limited",
  "title": "rate_limited",
  "status": 429,
  "detail": "This organization reached its Starter plan limit of 10,000 API requests per day (UTC). The limit is shared by every API key in the organization. It resets at 00:00 UTC, in 31,412s. Pro allows 100,000 per day: https://use.observer/pricing",
  "retry_after": 31412,
  "limit": { "scope": "organization", "window": "day", "max": 10000, "plan": "starter" },
  "upgrade": { "plan": "pro", "label": "Pro", "max": 100000, "url": "https://use.observer/pricing" }
}
```

`limit.window` is `minute` or `day`. Wait `retry_after` seconds
before retrying; retrying sooner returns `429` again.

## No API access

Keys belonging to an organization whose plan does not include the
public API return `403` with `title: "plan_does_not_permit_api"`.
The key stays valid: upgrading restores access without rotating it.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.