# SwiftNodes rate limits

> Limits are per API key and shared across all chains: a plan's HTTP limit is the total for that key on every chain combined.

## Per plan

| Plan | Price/month | HTTP req/s | WS messages/s | WS connections | Requests/month |
|---|---|---|---|---|---|
| Free | $0 | 20 | 1 | 1 | 250,000 requests |
| Starter | $49 | 70 | 25 | 20 | unlimited |
| Growth | $89 | 150 | 75 | 50 | unlimited |
| Scale | $149 | 300 | 150 | 100 | unlimited |
| Pro | $249 | 600 | 250 | 200 | unlimited |
| Custom | contact us | more than 500, set per account | set per account | set per account | unlimited |

## How requests are counted

- HTTP: one request per JSON-RPC call. A batch of 20 calls counts as 20.
- WebSocket: each message you send counts toward the WS messages/s limit. Subscription notifications we push to you are not limited.
- Free plan only: a monthly cap of 250,000 requests per account (all keys together), and free traffic is also limited per client IP, so extra free keys do not add capacity.

## When you exceed a limit

HTTP returns status 429 with a Retry-After header:

```
HTTP/1.1 429 Too Many Requests
Retry-After: 1

{"error":"Rate limited","limit":50,"plan":"Starter"}
```

The free monthly cap returns 429 with `resetsAt` (the first of next month, UTC) and `retryAfter` in seconds.
On WebSocket, an over-limit message is answered with `{"error":"WebSocket rate limited","limit":N}`; opening more connections than the plan allows closes the new socket with code 1013.

## Key restrictions

A key can be limited to IP addresses or CIDR ranges and to browser origins (dashboard, or `swiftnodes keys restrict`). Refused requests get HTTP 403 with an explanation; WebSocket closes with code 1008.

## Good practice

- Back off exponentially on 429 and honour Retry-After.
- Use Multicall3 or batching for many reads, and WebSocket subscriptions instead of polling.
- Use one key per application so usage and restrictions are separate.

More: https://swiftnodes.io/docs/rate-limits and https://swiftnodes.io/pricing.md
