Limits by plan
Burst is the token-bucket depth: the maximum number of requests you can fire in an instant before the per-second rate limit throttles you.
Without an active subscription
Requests authenticated against an expired, cancelled, or suspended subscription, and any request that can’t be tied to an active plan, are degraded to a restrictive floor:Rate limit headers
Metered responses carry three headers describing your monthly quota:These headers describe the monthly quota only. The per-second rate limit is not reported in headers - on a per-second 429, read
Retry-After instead (see below).- The headers appear on metered REST responses - the blockchain data endpoints that count against your quota. Dashboard and account-management endpoints (auth, billing,
/api/user,/api/keys) are not metered and don’t carry them. - They are not sent for MCP traffic (
/mcp/**reports quota errors inside the JSON-RPC envelope) or on WebSocket streams. - Plans with an unlimited request allowance (Enterprise arrangements without a monthly cap) get no
X-RateLimit-*headers at all. Absence is not an error - it just means no monthly cap applies.
When you hit a limit
Nexus returns HTTP 429 with a JSON body. There are two cases, and you can tell them apart by their headers: Monthly quota exhausted - the response carries theX-RateLimit-* headers (X-RateLimit-Remaining: 0), a Retry-After header with the seconds until your quota refills, and reset_at in the body (the same instant as X-RateLimit-Reset, as an ISO timestamp):
X-RateLimit-* headers, just Retry-After: 1. Slow down and retry shortly:
Branch on header presence: a 429 with
X-RateLimit-Reset (or reset_at in the body) means your monthly quota is exhausted until the reset - don’t retry in a loop. A 429 with only Retry-After: 1 means you’re sending too fast right now.Counters reset at 00:00 UTC on the 1st of each month. The reset job runs at - or moments after - that instant, so a request fired exactly at the boundary can still see one final 429. Tolerate a single extra retry right at reset time rather than treating it as an error.
Add-on gating (402)
Endpoints behind a paid add-on (Market Data, Wallet Analytics, Transaction Builder) return HTTP 402 when the add-on isn’t active on your plan:error and no addon:
Handling 429s
ReadRetry-After first - both 429 variants send it:
Best practices
Cache responses
Cache responses
Cache frequently accessed, slow-changing data (block / tx / asset metadata) to cut request volume against your monthly quota.
Spread bursts
Spread bursts
Keep sustained throughput under your tier’s per-second limit; the burst bucket absorbs short spikes, not steady overload.
Monitor usage
Monitor usage
Watch
X-RateLimit-Remaining on your responses so you can adjust before hitting the monthly cap.Upgrading
Need higher limits? Contact nexus@gerowallet.io.Next steps
Error Handling
How Nexus reports API errors
Pagination
Working with paginated responses