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 and reservation endpoints return 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) and on a reserve request (POST /v1/reservations).
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
| 0371 | Limit Name Invalid Chars | Limit name contains invalid characters. |
| 0372 | Limit Description Invalid Chars | Limit description contains invalid characters. |
| 0373 | Limit Invalid ID | Limit ID is invalid or nil. |
| 0378 | Limit Check Failed | Limit check failed. |
| 0379 | Limit Nil Input | Limit input cannot be nil. |
| 0380 | Limit Immutable Field | Cannot modify immutable field (limitType, asset). |
| 0438 | Limit Time Window Mismatch | ActiveTimeStart and activeTimeEnd must both be set or both be nil. |
| 0442 | Limit Name Already Exists | Limit name already exists. |
| 0447 | Limit Invalid Custom Start Format | Invalid customStartDate format, expected RFC3339. |
| 0448 | Limit Invalid Custom End Format | Invalid customEndDate format, expected RFC3339. |
| 0449 | Limit Custom Dates Required | CustomStartDate and customEndDate required for CUSTOM limitType. |
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 errors
The usage-reservation endpoints (
/reservations) return these errors. They form the two-phase reserve / confirm / release surface. Reservation requests can also return the general and validation-request errors listed above.
| 0487 | Reservation Tenant Required | Reservation: tenant id is required on the multi-tenant reservation surface. |
Multi-tenant 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.
Multi-tenant bootstrap errors
These codes surface only at service startup, when
MULTI_TENANT_ENABLED=true and a required configuration is absent or incompatible. They appear in startup logs and prevent the service from starting. They never reach /v1/* API consumers.
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 five dependencies. It always probes postgres and rule_cache. It probes redis and tenant_manager only in multi-tenant mode, and skips them otherwise. streaming is advisory. It appears in the checks and metrics but never forces a 503.

