v2023-09-01 is in the deprecation process and all prior versions have been deprecated. Click this banner to review our version upgrade guide.

Starting from version 2023-02-01, error messages will have consistent JSON structures. The shape may differ between the error types. Below are the 3 error types with examples of their shape.

Basic Error Shape

All errors start with the basic error shape and can be expanded upon.

When a request results in an error, the response JSON contains an array of errors with the following fields
error_key: specifies where the error occurs. Typically this key identifies the attribute/parameter related to the error. In the example below, the error is a request error.
category: specifies the type of error. The category provides error groupings and can be used to build custom error handling in your integration. For a complete list of all error categories please review the error categories guide.
message : provides details about the error. Except for a few types of errors, the message can be surfaced directly to the end user.
metadata: contains relevant data to identify the resource in question when applicable. In the majority of cases, entity_uuid and entity_type will be provided, but the data may change based on the domain of the endpoint.

{ "errors": [ { "error_key": "base", "category": "payroll_blocker", "message": "Company or employee address could not be verified. Please ensure all addresses are valid.", "metadata": { "key": "geocode_error" } } ] }

Resource Error Shape

When working with a specific resource (employee, company, payroll, etc), multiple errors can be returned.

{ "errors": [ { "error_key": "first_name", "category": "invalid_attribute_value", "message": "First name is required" }, { "error_key": "date_of_birth", "category": "invalid_attribute_value", "message": "Date of birth is not a valid date" } ] }

Some endpoints perform bulk operations on multiple resources. When there are multiple errors on multiple resources, the error object in the response will include a metadata hash. This metadata can be used to help identify the entities associated with the errors.

{ "errors": [ { "error_key": "base", "category": "invalid_attribute_value", "message": "Balance must be less than or equal to max balance (150.0)", "metadata": { "entity_uuid": "ac597ee9-93c5-4153-9b10-f7d230eee506", "entity_type": "Employee" } }, { "error_key": "base", "category": "invalid_attribute_value", "message": "Balance must be less than or equal to max balance (150.0)", "metadata": { "entity_uuid": "34af0140-9b55-41a3-8ee0-0f27ad0c51d9", "entity_type": "Employee" } } ] }

Nested Error Shape

When the error attribute is nested inside a parent attribute, the errors are nested inside a wrapping error with “nested_error” category. Use the category (nested_error) to programmatically identify and parse nested errors.

{ "errors": [ { "error_key": "fields", "category": "nested_errors", "errors": [ { "error_key": "signature", "category": "invalid_attribute_value", "message": "Field is required." }, { "error_key": "phone", "category": "invalid_attribute_value", "message": "Field is required." } ] } ] }

Did this page help you?