API
Errors and limits
What comes back when something is wrong, and how hard you can push before it does.
#Shape
json
{
"error": {
"type": "invalid_request",
"code": "wallet_not_watched",
"message": "0x7a1c…4f9e is not on this account",
"docs": "https://docs.accuren.xyz/docs/add-a-wallet"
}
}| Status | Type | What to do |
|---|---|---|
400 | invalid_request | Fix the payload; the code says which field |
401 | authentication_error | Key missing, revoked, or malformed |
403 | insufficient_scope | The key lacks the scope for this call |
404 | not_found | Unknown wallet, event, or export |
409 | replay_in_progress | History is being rebuilt; retry shortly |
429 | rate_limited | Back off using Retry-After |
5xx | server_error | Retry with backoff; safe for reads |
#Rate limits
| Endpoint group | Limit |
|---|---|
Reads (positions, events, basis, multiplier) | 120 requests / minute |
Writes (wallets, exports) | 20 requests / minute |
| Export generation | 10 per day per account |
409 is normal, not broken
Adding a wallet or changing a country rule triggers a replay. Reads stay available; figures that would change mid-replay return 409 rather than a number that is about to be wrong.
Do not poll for income
Multiplier accruals are rare and irregular. Subscribe to the webhook instead of polling events on a timer — you will hit the limit and still hear about it later than the webhook would have told you.