Errors

The standard error envelope, HTTP status codes, and error codes.

When a request fails, the API returns a standard JSON error envelope with an
appropriate HTTP status code.

Error envelope

{
	"code": "NOT_FOUND",
	"message": "No theft case was found for the supplied id."
}
FieldDescription
codeMachine-readable error code. Branch on this in your integration.
messageHuman-readable explanation. Intended for logs and diagnostics — do not parse it.

Always drive programmatic handling off code; treat message as informational.

HTTP status codes

StatusMeaning
200 OKThe request succeeded.
201 CreatedA record (or link between records) was created.
204 No ContentThe request succeeded with no response body (for example, a detach).
400 Bad RequestThe request was malformed or violated a business rule.
403 ForbiddenThe caller lacks access to one or more requested fields (field-level security).
404 Not FoundNo record matches the supplied identifier.
409 ConflictThe request conflicts with the current state of a record.
500 Internal Server ErrorAn unexpected error occurred.

Error codes

CodeTypical statusWhen it occurs
BAD_REQUEST400The request body or parameters are invalid or missing.
INVARIANT_VIOLATION400The request would break a domain rule.
INVALID_TRANSITION400The requested state change is not allowed from the current state.
RECORD_TYPE_MISSING400A required record type is not configured.
CLOSED_CASE_LOCKED400The case is closed; only law-enforcement details may be updated.
IMMUTABLE_FIELD400A field that cannot be changed after creation was included in an update.
UNDER_SPECIFIED_SEARCH400A search was submitted without the minimum required filter criteria.
PLATE_REQUIRED400A license plate is required to persist a vehicle.
SKU_REQUIRED400A SKU is required to persist an item.
TOO_MANY_MATCHES400A search matched more records than the endpoint will return; refine it.
FLS_DENIED403The caller cannot access one or more requested fields (field-level security).
NOT_FOUND404No record matches the supplied identifier.
DUPLICATE_UUID409A record with the supplied unique identifier already exists.
INTERNAL_SERVER_ERROR500An unexpected server error occurred.

The status shown is the usual pairing. Always read the HTTP status and the
code field together, since a single status can carry more than one code.

Insights (case linkage) codes

The /insights/… endpoints reuse BAD_REQUEST, FLS_DENIED, NOT_FOUND, and
INTERNAL_SERVER_ERROR above, and add these:

CodeTypical statusWhen it occurs
INVALID_CASE_PAYLOAD400The case details embedded in a create-from-transactions request are invalid.
EMPTY_TRANSACTION_SET400No transaction ids were supplied to link.
BATCH_TOO_LARGE400More transactions were supplied than a single request allows.
REFERENCE_NOT_FOUND404A referenced record (transaction or related record) does not exist.
ALREADY_LINKED409One or more of the supplied transactions are already linked to a case.
MISCONFIGURED500Required Insights configuration (permission set or custom metadata) is missing.

Handling tips

  • A 401 (rather than an envelope above) means your access token is missing,
    expired, or invalid — request a new one. See
    Authentication.
  • Retry only 500 responses, with backoff. 4xx responses indicate a problem
    with the request that a retry will not fix.

Did this page help you?