SSettlaDocs

Reference

Errors

Every API error — from every service — uses one canonical envelope. Branch on the stable type and code, not on the human-readable message.

The error envelope

{
  "error": {
    "type": "not_found_error",
    "code": "alias_not_found",
    "message": "No identity is registered for this alias.",
    "param": "alias",
    "request_id": "req_7k2...",
    "doc_url": "https://docs.settla.network/errors/alias_not_found"
  }
}
FieldTypeDescription
typeoptionalstringBroad category, aligned to the HTTP status (see below).
codeoptionalstringSpecific, stable machine code. Branch on this in your integration.
messageoptionalstringHuman-readable explanation. Do not parse it.
paramoptionalstringThe offending field, when the error is about one input.
request_idoptionalstringreq_… — also returned as the Settla-Request-Id response header. Quote it in support requests.
doc_urloptionalstringA link to documentation for the specific code.

Note

Every response — success or error — carries a Settla-Request-Id: req_<22 base62> header that matches request_id in the body. Log it.

HTTP status → type

StatustypeMeaning
400invalid_request_errorMalformed or missing parameters.
401authentication_errorMissing, malformed, or revoked credentials.
403permission_errorAuthenticated, but the key lacks the required scope.
404not_found_errorResource not found — or hidden by privacy/consent (uniform).
409conflict_errorDuplicate, or an idempotency-key body mismatch.
422unprocessable_errorValid request, but no result is possible (e.g. no compatible route).
429rate_limit_errorVelocity or breadth quota exceeded; see Retry-After.
5xxapi_errorAn unexpected server error. Safe to retry idempotent calls.

Common error codes

codeStatusWhen it happens
invalid_request400Body fails validation (missing alias, bad type, unparseable identifier).
authentication_error401No bearer token, or the key is unknown/revoked.
invalid_credentials401Human login: wrong email or password.
mfa_required401Human login: MFA is enabled and not yet satisfied.
permission_error403The key is valid but lacks the required scope.
alias_not_found404No resolvable identity for the alias (also returned for private / no-consent).
recipient_not_found404recommend-route: resolution disclosed no endpoints.
email_taken409Signup: the email is already registered.
idempotency_conflict409Same Idempotency-Key reused with a different body.
no_compatible_route422recommend-route: no disclosed capability matches the request.
rate_limited429Per-key velocity bucket drained.
scraping_quota_exceeded429Resolver distinct-alias breadth quota exceeded for the day.

Uniform not-found

For privacy, “does not exist” and “exists but you may not see it” return the same 404 alias_not_found in both shape and timing. Do not infer existence from a 404.