xcaDocs
Getting started

Errors

Error format, status codes and when to retry.

Errors use regular HTTP status codes and always return the same JSON envelope with a stable machine-readable code.

Error format#

{
  "error": {
    "code": "rateLimited",
    "message": "Rate limit exceeded",
    "retryAfter": 12
  }
}

error.code is stable and safe to branch on. error.message is a human-readable hint that may change. Some errors add fields: retryAfter for rate limits, reason for quotas and plan gates, issues for validation errors.

Error codes#

StatusCodeMeaningRetry?
400validationA parameter or the body is invalid; see error.issues.No
401unauthorizedThe API key is missing, malformed or revoked.No
402planRequiredYour plan doesn't include API access or this feature.No
403forbiddenThe request isn't allowed.No
404notFoundThe token wasn't scanned or the wallet wasn't profiled yet.Later
409conflictThe request conflicts with the current state.No
429rateLimitedToo many requests per minute, or the monthly quota is used up.Yes
500genericSomething failed on our side.Yes
503unavailableMaintenance or the data provider is out of capacity.Later

Validation errors#

Invalid parameters return 400 with a list of issues that point to the offending field.

400
{
  "error": {
    "code": "validation",
    "message": "Invalid input",
    "issues": [
      {
        "path": "pageSize",
        "message": "Invalid input"
      }
    ]
  }
}