Skip to main content
Every error response uses the same JSON envelope, with a status code that follows standard HTTP semantics.
Always log the requestId alongside the request that caused the error. It’s the fastest way for support to find the corresponding trace.

Structured errors

When a request fails validation or a business rule, the envelope carries an additional errors array with a per-field breakdown. Switch on each entry’s code to map the failure back to a specific input, instead of parsing the human-readable message.
The errors array is available from version 2026-05-27.curie onwards. On earlier versions the envelope omits it and only code, message, requestId, and docs are returned.
Each entry has these fields: The top-level code stays the coarse HTTP class (for example BAD_REQUEST); the errors[].code values are the granular reasons you switch on.

Validation codes

These cover schema validation failures and map to the underlying validator’s issue codes.

Business error codes

Beyond the validation codes above, errors[].code can carry a Nomos-specific business code:
Business error codes are available from version 2026-05-27.curie onwards. On earlier versions these failures surface only through the top-level code and message.

Retrying

Retry only when retrying could plausibly succeed. Use exponential backoff with jitter and cap the attempts.

Error reference