Rate limits
What each plan allows, how anonymous traffic is throttled, and how to handle 429s.
Every plan has two budgets: requests per second (RPS) and compute units per month (CU). You only get throttled on the per-second budget; the monthly CU figure is for billing. See billing for how CU is counted.
Plan limits
| Plan | RPS | Monthly CU | Notes |
|---|---|---|---|
| Free | 25 | 50,000,000 | Heavy methods (eth_getLogs, trace_*, debug_*, eth_query*) capped at 10 RPS. |
| Pro | 500 | 300,000,000 | Heavy methods capped at 100 RPS. |
| Scale | 1,500 | 2,500,000,000 | Custom caps available on request. |
| Anonymous | up to 200 per IP | n/a | Try-before-signup. See below. |
Per-chain limits apply on top of your plan. Monad currently runs on shared public nodes with limited total capacity, so every caller (anonymous or keyed) is capped at 20 requests per second per IP per method on Monad. Other chains have no per-chain cap today.
RPS limits are per api key, not per IP. Inside one plan, a key can burst to the listed RPS sustained. Brief overshoots are absorbed by a short token bucket.
Anonymous traffic
Unauthenticated requests fall into the anonymous tier with the following caps:
- Up to 200 requests per second per IP, across all methods and chains.
- A shared ceiling across all anonymous callers (5,000 RPS overall, 1,500
RPS for the bot-favourite reads
eth_gasPriceandeth_getBlockByNumber), so a distributed fan-out cannot crowd out everyone else. eth_query*range methods: 5 RPS per IP, 25 RPS overall.- The per-chain limits above (Monad: 20 RPS per IP per method).
Anonymous access exists for evaluation. Production traffic must use a key.
Tron anonymous limits
Tron's anonymous tier is more generous than EVM because Tron's upstream nodes are heavier and a lower cap would push too many evaluators to sign up before they finish their test:
- 60 requests per second per IP (2x the EVM anon limit).
- 20,000 requests per day per IP (2x EVM).
- Polling-bait methods (
wallet/getnowblock,eth_blockNumber) get a stricter 15 RPS per IP sub-cap, plus a 800 RPS global / 1.5M day global ceiling. Distributed scrapers run into the global limit before the upstream notices. - Write methods are hard-denied for anonymous traffic:
wallet/broadcasttransaction,wallet/broadcasthex,eth_sendRawTransaction. Writes require a key.
See Tron for the full reference.
What happens when you hit a limit
The gateway returns HTTP 429 Too Many Requests with a Retry-After: 1
header:
A Retry-After of 1 means: wait at least one second before retrying.
Treat it as a hint, not a contract. If you keep hammering, every
retry will hit the same limit.
Recommended client behavior
- On
429, sleep at leastRetry-Afterseconds. - Add small random jitter (50-250ms) so a fleet of clients doesn't thunder back at the same instant.
- After three consecutive
429s, back off exponentially up to 30s. - Surface the failure to your caller; don't retry forever silently.
Going over the monthly CU allowance
When monthly CU usage exceeds your plan's allowance:
- If your credit balance is positive, overage is billed against credit at $0.20 per million CU. Requests keep flowing.
- If your credit balance is zero, or you turned overage off, your keys are limited to 1 request per second until you top up, turn overage on, or the next month starts.
See billing for top-up and overage details.
Burst absorption
Brief bursts above your nominal RPS are usually absorbed by:
- Hot-path cache for read-heavy methods (e.g.
eth_chainId,eth_blockNumber). A cached response does not count against RPS. - Token bucket smoothing with a small headroom on top of the advertised RPS.
In practice this means: if your steady-state load is well within plan and you occasionally spike, you will not see 429s. Sustained traffic at the limit will.
Check your quota
Query your own limits and month-to-date usage with your RPC key — no
dashboard login needed. The key goes in the Authorization header (or
?api=, or X-OriginRPC-Token), same as any gateway call.
Field notes:
limits.tierOverride— non-null only if your key has a custom rate budget that overrides the plan tier.usage.cuRemaining/pctUsed—nullon unlimited plans.usage.periodResetsAt— when the monthly CU window rolls over (UTC).credit.payg—truewhen pay-as-you-go overage is enabled and you're not throttled;throttledistrueif a zero balance has dropped you to free-tier limits.chains—nullmeans the key is not chain-restricted; otherwise the allowedarch:chainIdlist.
The response is cached ~30s per key, so poll it at most every few seconds.
Asking for more
If you're consistently hitting RPS caps, the answer is one of:
- Upgrade your plan at endpoint.originstake.com/dashboard/billing.
- Split traffic across keys if you have logical separation (different apps, different environments). Each key has its own bucket.
- Email us for custom Scale caps. Standard Scale is 1,500 RPS; we'll go higher if your workload makes sense.