- Success:
error_codeandmessagearenull;dataholds the payload. - Error:
error_codeandmessageare populated;dataisnullunless there are multiple field-level validation errors (see 400 — Bad request).
Note: field-level context in data
For multi-field validation errors (e.g. a form submission with several invalid inputs), data carries the full error structure so the client can map each error back to the right input field. For all other errors data is null.
Generic error codes
These codes are used as fallbacks when the upstream service does not return a specific error code. Upstream-specific codes (e.g.TXN_0420, CVU_1005) are passed through unchanged and always take precedence.
| Code | HTTP Status | Description |
|---|---|---|
ERR_0001 | 500 | Internal error |
ERR_0002 | — | Database error |
ERR_0003 | 400 | Bad request |
ERR_0004 | 404 | Not found |
ERR_0005 | 409 | Conflict |
ERR_0006 | 503 | Service unavailable |
ERR_0008 | 401 | Unauthorized |
ERR_0009 | 403 | Forbidden |
ERR_0010 | 405 | Method not allowed |
ERR_0011 | — | Generic / unmapped |
ERR_0012 | 429 | Too many requests |
400 — Bad request
Returned when something is missing or wrong with a request.Missing or wrong serializer fields
When multiple fields are invalid,error_code and message are taken from the first field error. All field errors are preserved in data.
Single field error
When only one field is invalid,data is null.
Non-serializer error (generic)
Errors not associated with a specific input field (e.g. business-logic validation).data is null.
401 — Unauthorized
Returned when the request cannot be authenticated.User not found
The token is valid but the user referenced by it does not exist.403 — Forbidden
Returned when the token is valid but lacks the permissions required by the endpoint. Every endpoint requires at least thegeneral_data_read permission. Additional permissions may be required per endpoint (e.g. balance_read for the balance endpoint).