Error Codes Reference
Hook0 uses RFC 7807 Problem Details for HTTP APIs format for structured error responses.
Error Response Format
All API errors follow this structure (RFC 7807):
- type: URL to error documentation
- id: Error identifier (enum variant name)
- title: Short human-readable summary
- detail: Explanation of the error
- status: HTTP status code
400 Bad Request
ApplicationNameMissing
{
"type": "https://hook0.com/documentation/errors/ApplicationNameMissing",
"id": "ApplicationNameMissing",
"title": "Application name cannot be empty",
"detail": "Application name length must have more than 1 character.",
"status": 400
}
AuthInvalidAuthorizationHeader
{
"type": "https://hook0.com/documentation/errors/AuthInvalidAuthorizationHeader",
"id": "AuthInvalidAuthorizationHeader",
"title": "`Authorization` header is invalid",
"detail": "`Authorization` header value could not be decoded as a valid UTF-8 string containing `Bearer {UUID}`.",
"status": 400
}
EventInvalidBase64Payload
{
"type": "https://hook0.com/documentation/errors/EventInvalidBase64Payload",
"id": "EventInvalidBase64Payload",
"title": "Invalid event base64 payload",
"detail": "Event payload is not encoded in valid base64 format: ",
"status": 400
}
EventInvalidJsonPayload
{
"type": "https://hook0.com/documentation/errors/EventInvalidJsonPayload",
"id": "EventInvalidJsonPayload",
"title": "Invalid event JSON payload",
"detail": "Event payload is not encoded in valid JSON format: .",
"status": 400
}
EventInvalidPayloadContentType
{
"type": "https://hook0.com/documentation/errors/EventInvalidPayloadContentType",
"id": "EventInvalidPayloadContentType",
"title": "Invalid event payload content type",
"detail": "The specified event payload content type is not handled. Valid content types are: text/plain, application/json, application/octet-stream+base64",
"status": 400
}
EventTypeDoesNotExist
{
"type": "https://hook0.com/documentation/errors/EventTypeDoesNotExist",
"id": "EventTypeDoesNotExist",
"title": "Invalid event type",
"detail": "Event type does not exist or was deactivated. You should (re)create it.",
"status": 400
}
InvalidRole
{
"type": "https://hook0.com/documentation/errors/InvalidRole",
"id": "InvalidRole",
"title": "Provided role does not exist",
"detail": "Valid roles are: viewer, editor.",
"status": 400
}
JsonPayload
{
"type": "https://hook0.com/documentation/errors/JsonPayload",
"id": "JsonPayload",
"title": "Provided body could not be decoded as JSON",
"detail": "",
"status": 400
}
LabelsAmbiguity
{
"type": "https://hook0.com/documentation/errors/LabelsAmbiguity",
"id": "LabelsAmbiguity",
"title": "Ambiguous labels specification",
"detail": "You must specify either the `labels` property as an object with a least one property (recommended) or separated `label_key` and `label_value` properties as strings (legacy), but not both.",
"status": 400
}
OrganizationNameMissing
{
"type": "https://hook0.com/documentation/errors/OrganizationNameMissing",
"id": "OrganizationNameMissing",
"title": "Organization name cannot be empty",
"detail": "Organization name length must have more than 1 character.",
"status": 400
}
PasswordTooShort
{
"type": "https://hook0.com/documentation/errors/PasswordTooShort",
"id": "PasswordTooShort",
"title": "Provided password is too short",
"detail": "Password must be at least 0 characters long.",
"status": 400
}
UnauthorizedWorkers
{
"type": "https://hook0.com/documentation/errors/UnauthorizedWorkers",
"id": "UnauthorizedWorkers",
"title": "Some of the provided dedicated workers are not authorized for your organization",
"detail": "You do not have access to the following workers: ",
"status": 400
}
401 Unauthorized
AuthEmailExpired
{
"type": "https://hook0.com/documentation/errors/AuthEmailExpired",
"id": "AuthEmailExpired",
"title": "Could not verify your link",
"detail": "The link you clicked might be expired. Please retry the whole process or contact support.",
"status": 401
}
AuthEmailNotVerified
{
"type": "https://hook0.com/documentation/errors/AuthEmailNotVerified",
"id": "AuthEmailNotVerified",
"title": "Email not verified",
"detail": "Your email has not been verified yet. Please check your inbox.",
"status": 401
}
AuthFailedLogin
{
"type": "https://hook0.com/documentation/errors/AuthFailedLogin",
"id": "AuthFailedLogin",
"title": "Login failed",
"detail": "The provided credentials do not match ones of a valid user.",
"status": 401
}
AuthFailedRefresh
{
"type": "https://hook0.com/documentation/errors/AuthFailedRefresh",
"id": "AuthFailedRefresh",
"title": "Refreshing access token failed",
"detail": "The provided refresh token is probably invalid or expired.",
"status": 401
}
AuthNoAuthorizationHeader
{
"type": "https://hook0.com/documentation/errors/AuthNoAuthorizationHeader",
"id": "AuthNoAuthorizationHeader",
"title": "No `Authorization` header was found in the HTTP request",
"detail": "`Authorization` header must be provided and must contain a bearer token.",
"status": 401
}
403 Forbidden
AuthInvalidApplicationSecret
{
"type": "https://hook0.com/documentation/errors/AuthInvalidApplicationSecret",
"id": "AuthInvalidApplicationSecret",
"title": "Invalid application secret",
"detail": "The provided application secret does not exist.",
"status": 403
}
AuthInvalidBiscuit
{
"type": "https://hook0.com/documentation/errors/AuthInvalidBiscuit",
"id": "AuthInvalidBiscuit",
"title": "Invalid Biscuit",
"detail": "The provided authentication token (Biscuit) is not valid, was not created using the current private key or is expired.",
"status": 403
}
Forbidden
{
"type": "https://hook0.com/documentation/errors/Forbidden",
"id": "Forbidden",
"title": "Insufficient rights",
"detail": "You don't have the right to access or edit this resource.",
"status": 403
}
404 Not Found
InvitedUserDoesNotExist
{
"type": "https://hook0.com/documentation/errors/InvitedUserDoesNotExist",
"id": "InvitedUserDoesNotExist",
"title": "Invited user does not exist",
"detail": "The user you are trying to invite does not exist. Please make sure the user is already register in Hook0.",
"status": 404
}
NotFound
{
"type": "https://hook0.com/documentation/errors/NotFound",
"id": "NotFound",
"title": "Item not found",
"detail": "Could not find the item. Check the identifier or that you have the right to access it.",
"status": 404
}
409 Conflict
EventAlreadyIngested
{
"type": "https://hook0.com/documentation/errors/EventAlreadyIngested",
"id": "EventAlreadyIngested",
"title": "Event already Ingested",
"detail": "This event was previously ingested and recorded inside Hook0 service.",
"status": 409
}
EventTypeAlreadyExist
{
"type": "https://hook0.com/documentation/errors/EventTypeAlreadyExist",
"id": "EventTypeAlreadyExist",
"title": "This event type already exist",
"detail": "An event type with this name is already present.",
"status": 409
}
InvitedUserAlreadyInOrganization
{
"type": "https://hook0.com/documentation/errors/InvitedUserAlreadyInOrganization",
"id": "InvitedUserAlreadyInOrganization",
"title": "Invited user is already in the organization",
"detail": "The user you are trying to invite has already access to the organization.",
"status": 409
}
OrganizationIsNotEmpty
{
"type": "https://hook0.com/documentation/errors/OrganizationIsNotEmpty",
"id": "OrganizationIsNotEmpty",
"title": "Organization is not empty",
"detail": "Organizations that contain at least an application cannot be deleted; applications must be deleted first. If you believe this is a mistake, please contact the Hook0 support team.",
"status": 409
}
UserAlreadyExist
{
"type": "https://hook0.com/documentation/errors/UserAlreadyExist",
"id": "UserAlreadyExist",
"title": "This user already exist",
"detail": "This email is already registered.",
"status": 409
}
410 Gone
RegistrationDisabled
{
"type": "https://hook0.com/documentation/errors/RegistrationDisabled",
"id": "RegistrationDisabled",
"title": "Registrations are disabled",
"detail": "Registration was disabled by an administrator.",
"status": 410
}
422 Unprocessable Entity
Validation
{
"type": "https://hook0.com/documentation/errors/Validation",
"id": "Validation",
"title": "Provided input is malformed",
"detail": "",
"status": 422
}
429 Too Many Requests
TooManyApplicationsPerOrganization
{
"type": "https://hook0.com/documentation/errors/TooManyApplicationsPerOrganization",
"id": "TooManyApplicationsPerOrganization",
"title": "Exceeded number of applications that can be created in this organization",
"detail": "This organization cannot have more than 0 applications. You might want to upgrade to a better plan.",
"status": 429
}
TooManyEventsToday
{
"type": "https://hook0.com/documentation/errors/TooManyEventsToday",
"id": "TooManyEventsToday",
"title": "Exceeded number of events that can be ingested in this organization today",
"detail": "This organization cannot ingest more than 0 events per day. You might want to upgrade to a better plan.",
"status": 429
}
TooManyEventTypesPerApplication
{
"type": "https://hook0.com/documentation/errors/TooManyEventTypesPerApplication",
"id": "TooManyEventTypesPerApplication",
"title": "Exceeded number of event types that can be created in this application",
"detail": "This application cannot have more than 0 event types. You might want to upgrade to a better plan.",
"status": 429
}
TooManyMembersPerOrganization
{
"type": "https://hook0.com/documentation/errors/TooManyMembersPerOrganization",
"id": "TooManyMembersPerOrganization",
"title": "Exceeded number of users that can be invited in this organization",
"detail": "This organization cannot have more than 0 users. You might want to upgrade to a better plan.",
"status": 429
}
TooManySubscriptionsPerApplication
{
"type": "https://hook0.com/documentation/errors/TooManySubscriptionsPerApplication",
"id": "TooManySubscriptionsPerApplication",
"title": "Exceeded number of subscriptions that can be created in this application",
"detail": "This application cannot have more than 0 subscriptions. You might want to upgrade to a better plan.",
"status": 429
}
500 Internal Server Error
AuthApplicationSecretLookupError
{
"type": "https://hook0.com/documentation/errors/AuthApplicationSecretLookupError",
"id": "AuthApplicationSecretLookupError",
"title": "Could not check database to verify the provided application secret",
"detail": "This is likely to be caused by database unavailability.",
"status": 500
}
AuthBiscuitLookupError
{
"type": "https://hook0.com/documentation/errors/AuthBiscuitLookupError",
"id": "AuthBiscuitLookupError",
"title": "Could not check database to verify if the provided Biscuit was revoked",
"detail": "This is likely to be caused by database unavailability.",
"status": 500
}
InternalServerError
{
"type": "https://hook0.com/documentation/errors/InternalServerError",
"id": "InternalServerError",
"title": "Something wrong happened",
"detail": "Hook0 server had issue handling your request. Our team was notified.",
"status": 500
}
Handling Errors
For implementation guidance on error handling in your client code, see Client-side Error Handling Best Practices.