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

# Rate Limits

> API rate limiting and quota information

# Rate Limits

The API enforces per-minute rate limits and monthly quotas based on your plan.

## Plan Limits

| Plan       | Requests/min | Monthly Calls | Support  |
| ---------- | ------------ | ------------- | -------- |
| Pro        | 300          | 100,000       | Standard |
| Enterprise | 1,000        | Unlimited     | Priority |

<Note>
  API access requires a Pro or Enterprise plan. [Upgrade your account](https://app.vcm.fyi/settings/api) to get started.
</Note>

## Rate Limit Headers

Every response includes rate limit information:

```
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 287
X-RateLimit-Reset: 1710086400
```

| Header                  | Description                              |
| ----------------------- | ---------------------------------------- |
| `X-RateLimit-Limit`     | Your per-minute limit                    |
| `X-RateLimit-Remaining` | Remaining requests in the current window |
| `X-RateLimit-Reset`     | Unix timestamp when the window resets    |

## When You Exceed the Limit

You'll receive a `429 Too Many Requests` response:

```json theme={null}
{
  "error": "rate_limit_exceeded",
  "message": "Rate limit of 300 requests per minute exceeded. Try again in 23 seconds.",
  "retry_after": 23
}
```

The response includes a `Retry-After` header with the number of seconds to wait.

## Monthly Quota

When you exceed your monthly quota, requests return `429` with:

```json theme={null}
{
  "error": "monthly_quota_exceeded",
  "message": "Monthly quota of 100,000 requests exceeded.",
  "retry_after": 86400
}
```

Monthly quotas reset on the 1st of each month at 00:00 UTC.

## Best Practices

* **Cache responses** — project and credit data updates daily, not per-request
* **Use pagination wisely** — fetch larger pages (up to 200 items) instead of many small requests
* **Check `X-RateLimit-Remaining`** — slow down before hitting the limit
* **Implement exponential backoff** — on 429 responses, wait and retry with increasing delays
* **Use `per_page=200`** — minimizes the number of requests needed to fetch all data
