Skip to main content

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 Requests error

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

TierMonthly CU PoolThroughput (CUPs)Trace CU Pool
Free150M CUs500 CUs/secNo access
Paid tiers with higher limits available at app.axol.io
Understanding the Table
  • Monthly CU Pool: Total standard API calls per month
  • Trace CU Pool: Separate allocation for trace_* and debug_* 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 TypeCoversPurpose
Standard Pooleth_*, net_*, web3_*, WebSocketNormal API operations
Trace Pooltrace_*, debug_*High-compute trace operations
Trace Methods Are Expensive

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
HeaderDescription
X-RateLimit-CU-LimitYour monthly standard CU pool
X-RateLimit-CU-RemainingStandard CUs remaining this month
X-RateLimit-CU-ResetUnix 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:

  1. Wait until billing cycle resets
  2. Enable overage billing (charged at tier-specific rates)
  3. 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.