/api/v0). It is the same key on the same plan, so its traffic counts against the same monthly quota and the same per-second limit as native traffic. There is no separate compatibility allowance.
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
Nexus has no free tier. Requests authenticated against an expired, cancelled-and-lapsed, or suspended subscription, and any request that can’t be tied to an active plan, are refused with HTTP 402subscription_required (see Add-on gating).
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.On
/api/v0 the 429 body is Blockfrost’s, not the shape above. The limits are the same; only the envelope differs. It uses Blockfrost’s status_code / error / message fields, with error set to Project Over Limit, and it still sends Retry-After, so a Blockfrost SDK’s built-in backoff works unchanged. See Blockfrost compatibility.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, IPFS) return HTTP 402 when the add-on isn’t active on your plan, either on its own or through a bundle that covers it: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