application/problem+json content type:
type: A URI that identifies the error type, built ashttps://errors.lerian.studio/v1/followed by the error code.title: A brief summary of the issue.status: The HTTP status code of the response.detail: Detailed guidance for resolving the error. The tables below list this content in themessagecolumn.code: A unique, stable identifier for the error. It is usually a four-digit numeric string drawn from the shared platform error registry (for example,0347). Authentication failures are the exception and use the literal stringUnauthenticated(see the note below).entityType: The entity the error relates to (for example,Rule). Only present when applicable.message: The human-readable reason, exposed verbatim as a top-level field. Only present on413 Payload Too Largeand504 Gateway Timeoutresponses. All other errors omit it.
For server-side errors (HTTP 5xx),
title and detail carry generic values so internal causes never leak. Use code and type to identify the error. For 504 timeouts, the top-level message field still carries the specific reason.0009 with the title Validation Error and a detail that names the specific field and constraint, for example transactionType must be one of [CARD WIRE PIX CRYPTO].
Examples:
Two response families keep a legacy flat
{"code", "title", "message"} shape instead of the problem details object. Middleware that runs before the API layer emits them. Authentication failures: a missing or invalid API key returns HTTP 401 with "code": "Unauthenticated", "title": "Unauthorized", and "message": "API Key missing or invalid". Match on the literal Unauthenticated string. A Bearer token that parses but lacks the required sub claim returns HTTP 401 with "code": "0474". Tenant capacity: code 0466 returns HTTP 503 in the same flat shape.General errors
Any Tracer API endpoint can return these errors.
Code
0009 also appears with the title Validation Error when field-level validation rejects a request. See the note above.
The validation endpoint returns code 0143 with HTTP 413 when a request body exceeds the 100KB limit. The reason also appears in the top-level message field. The Tracer API returns code 0497 with HTTP 431 when the request headers are too large. It returns code 0484 with HTTP 404 for a path the service does not serve. It returns code 0485 with HTTP 405 for a method the path does not accept.
Date and time errors
Pagination errors
Metadata errors
These errors come from the
metadata map on a validation request (POST /v1/validations).
The API returns HTTP
400 for a metadata key longer than 64 characters, or for more than 50 metadata entries on one request.
CEL expression errors
You write rules as CEL (Common Expression Language) expressions. These errors appear during rule expression creation, update, or evaluation.
Rule errors
Limit errors
Audit event errors
Validation request errors
The transaction-validation endpoints (
POST /v1/validations and the validation queries) return these errors.
The API returns codes
0422 and 0433 with HTTP 504 Gateway Timeout: 0422 when a validation evaluation exceeds its deadline, 0433 when a list-validations query does. As with all 5xx responses, detail carries a generic value. The top-level message field carries the specific reason.
Reservation seam errors
Tracer returns these codes to the Midaz ledger on the gRPC reservation seam. The Tracer HTTP API does not return them. A Ledger API client receives Midaz codes instead. See the Midaz error list.
Capacity and authentication errors
The instance returns HTTP 503 with a
Retry-After header when it reaches its per-pod tenant worker cap. Clients should back off and retry. A Bearer token that parses but lacks the required sub claim returns HTTP 401.
Readiness probe errors
The operational
/readyz endpoint and the worker-supervisor lifecycle surface these codes. They appear in the error field of the /readyz JSON response (which carries the code only), not in /v1/* API responses. The title and message below describe each code for operator reference.
The /readyz cycle probes postgres, rule_cache, and streaming. streaming is advisory. It appears in the checks and metrics but never forces a 503.

