Rate Limits
Axol uses Compute Unit (CU) based rate limiting for fair pricing. This page explains how rate limits work.
Two Types of Limits
1. Throughput (CUPs)
Compute Units Per Second - Controls how fast you can make requests.
- Prevents bursts that could overload infrastructure
- Measured in CUs consumed per second
- If exceeded, you'll receive a
429 Too Many Requestserror
Example: Business tier has 15,000 CUPs limit
- Average request = 25 CUs
- 15,000 CUPs ÷ 25 CUs = ~600 requests/second
2. Monthly CU Pool
Total CUs available per billing cycle.
- Controls total volume usage per month
- Separate pools for standard and trace methods
- Resets on your billing date
- If exceeded, requests are throttled or billed at overage rates
Rate Limit Tiers
| Tier | Monthly CU Pool | Throughput (CUPs) | Trace CU Pool |
|---|---|---|---|
| Free | 150M CUs | 500 CUs/sec | No access |
| Paid tiers with higher limits available at app.axol.io | |||
- Monthly CU Pool: Total standard API calls per month
- Trace CU Pool: Separate allocation for
trace_*anddebug_*methods - Throughput (CUPs): Maximum CUs per second
Standard vs Trace CU Pools
Trace and debug methods consume 50-5000x more compute than standard calls. To prevent accidental overages, they use a separate CU pool:
| Pool Type | Covers | Purpose |
|---|---|---|
| Standard Pool | eth_*, net_*, web3_*, WebSocket | Normal API operations |
| Trace Pool | trace_*, debug_* | High-compute trace operations |
A single debug_traceBlockByNumber call (50,000 CUs) could cost more than 5,000 standard eth_call requests (26 CUs each). Always use trace methods sparingly.
Rate Limit Headers
Every API response includes rate limit information:
X-RateLimit-CU-Limit: 2000000000
X-RateLimit-CU-Remaining: 1950000000
X-RateLimit-CU-Reset: 1704153600
X-RateLimit-Trace-CU-Limit: 200000000
X-RateLimit-Trace-CU-Remaining: 195000000
X-RateLimit-Trace-CU-Reset: 1704153600
| Header | Description |
|---|---|
X-RateLimit-CU-Limit | Your monthly standard CU pool |
X-RateLimit-CU-Remaining | Standard CUs remaining this month |
X-RateLimit-CU-Reset | Unix timestamp when pool resets |
X-RateLimit-Trace-CU-* | Same info for trace CU pool |
When Limits Are Exceeded
Throughput Exceeded (429 Error)
{
"error": "Rate limit exceeded",
"retryAfter": 2,
"cupsLimit": 10000,
"currentCups": 10500
}
Solution: Implement exponential backoff and retry logic
Monthly Pool Exhausted (402 Error)
{
"error": "Monthly CU pool exhausted",
"cuLimit": 2000000000,
"cuUsed": 2000000000,
"resetDate": "2026-02-01T00:00:00Z"
}
Options:
- Wait until billing cycle resets
- Enable overage billing (charged at tier-specific rates)
- Upgrade to higher tier
Usage Alerts
Automatic email alerts sent at:
- 80% usage: Warning notification
- 90% usage: Urgent notification
- 100% usage: Critical notification + throttling begins
- 110% usage: Hard limit (or overage billing if enabled)
Configure alert preferences at app.axol.io/settings/alerts.