Skip to navigation

Errors

Error responses and codes returned by the JazzHQ APIs
View as MarkdownOpen in Claude

JazzHQ APIs use standard HTTP status codes to indicate whether a request was successful.

Error responses are returned as JSON and include a machine-readable message that can be used to identify the error.

Error response

{
"message": "VALIDATION_FAILED",
"status": 400,
"success": false,
"errors": [
{
"field": "companyName",
"error": "COMPANY_NAME_MANDATORY"
}
],
"timestamp": "2026-08-01T09:15:00"
}

For validation errors, the errors array contains details about the fields that caused the request to fail.

Error codes

HTTP statusCodeDescription
400VALIDATION_FAILEDOne or more request fields are invalid or missing.
400INVALID_REQUESTThe request could not be processed.
400DUPLICATE_ENTRYThe request conflicts with an existing resource.
401API_KEY_MISSINGThe API key was not provided.
401INVALID_API_KEYThe provided API key is invalid.
401UNKNOWN_API_NAMESPACEThe request path is outside the namespace this key is authorized for.
404RESOURCE_NOT_FOUNDThe requested resource could not be found.
409INVALID_STATE_TRANSITIONThe request conflicts with the resource’s current state.
500INTERNAL_SERVER_ERRORAn unexpected error occurred.

Examples

Authentication errors

No X-API-KEY header sent
{
"success": false,
"message": "API_KEY_MISSING",
"data": null,
"timestamp": "2026-08-01T09:15:00"
}
Invalid API key
{
"success": false,
"message": "INVALID_API_KEY",
"data": null,
"timestamp": "2026-08-01T09:15:00"
}

Validation errors

Required fields are missing
{
"message": "VALIDATION_FAILED",
"status": 400,
"success": false,
"errors": [
{
"field": "companyName",
"error": "COMPANY_NAME_MANDATORY"
},
{
"field": "contactEmailAddress",
"error": "CONTACT_EMAIL_MANDATORY"
}
],
"timestamp": "2026-08-01T09:15:00"
}

State conflicts

Some actions are only valid from certain states. Approving a lead that was already rejected, or rejecting one that has already been converted into a contact, returns 409 rather than 400 — the request itself is fine, but the resource has moved on.

Approving a lead that was already rejected
{
"message": "INVALID_STATE_TRANSITION",
"status": 409,
"success": false,
"errors": [
{
"field": "approvalStatus",
"error": "A rejected lead cannot be approved."
}
],
"timestamp": "2026-08-01T09:15:00"
}

Retrying a request that already succeeded does not produce this error. Archiving an already-archived lead, re-approving an approved one, or re-rejecting a rejected one all succeed and change nothing.

Resource errors

Requested resource was not found
{
"message": "RESOURCE_NOT_FOUND",
"status": 404,
"success": false,
"errors": [
{
"field": "resource",
"error": "The requested resource was not found."
}
],
"timestamp": "2026-08-01T09:15:00"
}

For validation errors, check the errors array for field-level details.