Errors

All endpoints share a consistent error payload shape. Use the outer message for coarse category, and the inner error.message for the detailed reason.

Error response format

CustomExceptionFilter

Typical structure for error responses.

error.json
{
  "success": false,
  "statusCode": 400,
  "message": "Forbidden",
  "error": {
    "message": "Access Denied"
  }
}

Common cases

403 Access Denied (missing headers)

`FingerprintMiddleware` and `PartnerMiddleware` return 403 if required headers are absent.

403.sh
# If the middleware can't find required headers,
# the API returns 403 Access Denied.
curl "<BASE_URL>/api/v1/cars" -H "client: <CLIENT_HASH>"