Skip to main content
When a request cannot be completed, the Chrono API returns a structured error response rather than a plain message. Every error uses the RFC 9457 Problem Details format, which gives you a consistent, machine-readable error shape across all endpoints.

Error response structure

All error responses share the following fields: Example error response:

HTTP status codes

Application-specific exceptions

The following exceptions are thrown by the Chrono application and map to specific HTTP status codes.

ResourceNotFoundException — 404

Thrown when a requested record cannot be found by its identifier. The detail field follows the pattern:
What to check: Verify that the ID or slug in your request path is correct and that the resource has not been deleted.

DuplicateEmailException — 409

Thrown when you attempt to register a license or user with an email address that is already in use. The detail field follows the pattern:
What to check: Use a different email address, or retrieve the existing resource instead of creating a new one.

DuplicateSlugException — 409

Thrown when a resource is created with a slug that is already taken by another object of the same type. The detail field follows the pattern:
What to check: Choose a unique slug, or query existing resources to find one with the slug you want.

DuplicateSimulatorCarException — 409

Thrown when you try to link a car to a simulator that already has that car associated with it. The detail field follows the pattern:
What to check: Query the simulator’s existing car associations before adding a new one.

DuplicateSimulatorLayoutException — 409

Thrown when you try to link a track layout to a simulator that already has that layout associated. The detail field follows the pattern:
What to check: Query the simulator’s existing track layout associations before adding a new one.

Handling 400 validation errors

When the request body fails validation, the API returns a 400 Bad Request with an additional errors property containing field-level details.
The errors map contains one entry per invalid field. Each key is the field name and each value is the constraint violation message. Fix all reported fields before retrying the request.

Handling 401 and 403 errors

A 401 Unauthorized response means the API could not identify you — either the X-API-Key header is missing entirely or the key has been revoked. A 403 Forbidden response means the key is valid, but the role associated with it does not permit the operation you attempted.
If you rotate or delete an API key that is in active use, all requests using that key will immediately start returning 401. Make sure you update all integrations before removing a key.

Handling 500 errors

A 500 Internal Server Error indicates an unexpected condition on the server. The detail field will contain:
The full error is logged server-side. If the error is reproducible, include the instance path and the request body when contacting support.