> For the complete documentation index, see [llms.txt](https://resolvedmarkets.com/llms.txt). Every docs page is also served as Markdown: append `.md` to its URL or send `Accept: text/markdown`.

## Rate Limits & Plans

| Scope | Limit | Window | Key By |
| --- | --- | --- | --- |
| Free Tier | 300 requests | 1 minute | API Key |
| Pro Tier | 300 requests | 1 minute | API Key |
| Scale Tier | 1,000 requests | 1 minute | API Key |
| Enterprise Tier | 3,000 requests | 1 minute | API Key |
| Auth Endpoints | 10 requests | 1 minute | IP Address |

**Rate limit headers** (returned on every response):

| Header | Description |
| --- | --- |
| `X-RateLimit-Limit` | Maximum requests per window |
| `X-RateLimit-Remaining` | Requests remaining in current window |
| `X-RateLimit-Reset` | Unix timestamp when the window resets |
| `Retry-After` | Seconds to wait (only on 429 responses) |

**Handling 429 responses (retry with backoff):**

```javascript
async function fetchWithRetry(url, apiKey, retries = 3) {
  for (let i = 0; i < retries; i++) {
    const res = await fetch(url, { headers: { "X-API-Key": apiKey } });
    if (res.status !== 429) return res;
    const retryAfter = res.headers.get("Retry-After") || "5";
    await new Promise(r => setTimeout(r, parseInt(retryAfter) * 1000));
  }
  throw new Error("Rate limited after retries");
}
```

**Plans**

| Tier | Price | Req/min | Credits/mo | Markets | History | WebSocket | API keys | Support |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Free | $0/mo | 300 | 5,000 | All crypto | Unlimited | none | 2 | Community |
| Pro | $17/mo | 300 | 50,000 | All crypto | Unlimited | 1 connection | 5 | Priority |
| Scale | $49/mo | 1,000 | 500,000 | All markets + Hyperliquid | Unlimited | 5 connections | 10 | Priority |
| Enterprise | $549/mo | 3,000 | 5,000,000 | All + custom | Unlimited | 10 connections | 20 | White-glove |
