Start here
Rate limits and units
One unit per call at any block age, limits published per plan, and overage that keeps serving rather than stopping.
Units
One request unit per JSON-RPC call, whatever the method and whatever the block age. A batch counts per inner call. WebSocket connections, webhook deliveries and keys are free.
Archive calls cost the same as calls against the tip. Arc produces a block every 0.5s, so the usual convention of treating anything more than 127 blocks behind the tip as archive covers about one minute of history here. Under a multiplier model, reading yesterday bills at the archive rate.
Limits by plan
| Limit | Pro | Scale | Enterprise |
|---|---|---|---|
| Requests per second | 250 | 1,500 | Negotiated |
| Requests per month | 400M | 2B | Negotiated |
| eth_getLogs block range | 100k | 500k | Unbounded |
| Concurrent WebSocket connections | 50 | 250 | Negotiated |
| Keys | 25 | 100 | Unlimited |
At the ceiling
A plan that reaches its ceiling keeps serving and bills the overage, because a settlement pipeline that stops on the last day of the month is worse than an invoice larger than planned. Sustained traffic over the plan rate limit throttles with a 429 and a retry-after rather than failing outright.
Accounting headers
x-arcrpc-units reports what a call cost, x-arcrpc-region which region served it, and x-arcrpc-node-build which execution build answered. Log the first if you bill your own customers by usage.