Rate limits
Requests a second per key, the headers that report them, and the money limits per plan.
Partner API rate limits
Each key may make a set number of requests a second, by plan: sandbox 5, Starter 10, Growth 25, Enterprise 50 (yours is limits.requests_per_second in GET /api/v1/account). Every keyed response carries:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed this second. |
X-RateLimit-Remaining | Left this second. |
X-RateLimit-Reset | Unix second when the window resets. |
Retry-After | On RATE_LIMITED only: seconds to wait. |
Recipient checks have their own limit of 30 a minute per key. Money limits (per payout, day and month) are separate; see Plans and limits.
For bulk work, send payouts from a queue at a steady rate below your limit rather than all at once, and back off on 429 with jitter.
Public and account API limits
Limits are counted per IP address and per endpoint, over a rolling window. Rate-limited endpoints tell you where you are on every response:
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7Limits
| Endpoint | Limit |
|---|---|
POST /api/v1/funding/* | 10 per minute |
POST /api/v1/p/{code}/pay | 10 per 5 minutes |
POST /api/v1/wallet/destinations | 20 per 5 minutes (shared with resolve-name) |
POST /api/auth/send-otp | 3 per 5 minutes per address, and 3 per 5 minutes per phone |
POST /api/auth/verify-otp | 5 per 5 minutes |
GET /api/v1/capabilities | Cached for 60 seconds: cache it on your side too |
GET /api/v1/fees/published | Cached for 60 seconds |
When you hit a limit
You get 429 with code: "RATE_LIMIT" and a message naming the limit. Wait for the window to pass, then retry with backoff. If your use needs more, tell us about it in partner access.