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

# Rate Limits

> Understand rate limits, monthly quotas, overage billing, and response headers.

## Limits by plan

| Plan         | Requests / month | Requests / minute | Overage              |
| ------------ | ---------------: | ----------------: | -------------------- |
| **Starter**  |          500,000 |               100 | \$0.50 / 1K requests |
| **Pro**      |        1,000,000 |               500 | \$0.15 / 1K requests |
| **Business** |        Unlimited |             2,000 | N/A                  |

## How it works

Rushed uses two types of rate limiting:

* **Per-minute** — burst protection. Returns `429` if exceeded. Resets every 60 seconds.
* **Monthly quota** — usage-based billing. **Never blocks requests.** Overage is tracked and billed in the next billing period.

This means your integration never breaks because of monthly quota — you just pay for what you use beyond your plan.

## Response headers

### Per-minute headers

Every response includes per-minute rate limit headers:

```
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 487
X-RateLimit-Reset: 1711641600
```

| Header                  | Description                               |
| ----------------------- | ----------------------------------------- |
| `X-RateLimit-Limit`     | Maximum requests per minute for your plan |
| `X-RateLimit-Remaining` | Requests remaining in the current minute  |
| `X-RateLimit-Reset`     | Unix timestamp when the window resets     |

### Monthly quota headers

```
X-RateLimit-Monthly-Limit: 1000000
X-RateLimit-Monthly-Remaining: 847523
```

When you exceed the monthly quota, an additional header appears:

```
X-RateLimit-Monthly-Overage: 15200
```

| Header                          | Description                                       |
| ------------------------------- | ------------------------------------------------- |
| `X-RateLimit-Monthly-Limit`     | Monthly request quota for your plan               |
| `X-RateLimit-Monthly-Remaining` | Requests remaining this month (0 if exceeded)     |
| `X-RateLimit-Monthly-Overage`   | Number of requests over quota (billed as overage) |

## Handling 429 errors

`429` is only returned for per-minute burst limits, never for monthly quota.

```json theme={null}
{
  "success": false,
  "error": "Rate limit exceeded. Try again in 32 seconds.",
  "statusCode": 429
}
```

### Backoff strategy

1. Read the `X-RateLimit-Reset` header
2. Wait until the reset timestamp
3. Retry the request

```javascript theme={null}
async function fetchWithRetry(url, options, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const res = await fetch(url, options);

    if (res.status !== 429) return res;

    const reset = res.headers.get('X-RateLimit-Reset');
    const waitMs = reset
      ? (parseInt(reset) * 1000) - Date.now()
      : Math.pow(2, i) * 1000;

    await new Promise(r => setTimeout(r, Math.max(waitMs, 1000)));
  }
  throw new Error('Rate limit exceeded after retries');
}
```

## Monthly quota & overage billing

* Quotas reset on the 1st of each month (UTC)
* Requests over quota are **never denied** — they are tracked as overage
* Overage is billed in the next billing period at your plan's overage rate
* Monitor usage in the [Dashboard](https://dash.rushed.com.br/#usage)

| Plan     | Overage rate              |
| -------- | ------------------------- |
| Starter  | \$0.50 per 1,000 requests |
| Pro      | \$0.15 per 1,000 requests |
| Business | N/A (unlimited)           |
