Skip to main content

Introduction

When a response from the Payroll Integrations API would include many results, the data is paginated and a subset is returned. For example, /v1/connections/{connection}/employees by default only returns the first 20 employees even if there are more employees available. This page outlines how the response is structured for all paginated endpoints and how to configure the amount and order of the results.

Request

Query Parameters

number
default:"20"
The maximum number of records provided in the current response.
number
default:"0"
The starting point for retrieving records with respect to the beginning of the list.The resulting list is inclusive and zero-indexed with respect to the offset value.
string
The current sort order and direction.sort is a single string value following the regular expression format of ^(-?\w+)(,-?\w+)*$.See the Sort section below for more information.

Response

Data

All returned records are located in the data property in the response.

Metadata

Pagination metadata is provided in the meta property in the response. It contains the following properties:
number
default:"20"
The maximum number of records provided in the current response.
number
default:"0"
The starting point for retrieving records with respect to the beginning of the list.The resulting list is inclusive and zero-indexed with respect to the offset value.
string
The current sort order and direction.See the Sort section below for more information.
number
The number of records in the current response.Note: This is not the same as limit. For example, a request can be configured to return a maximum of 20 records (limit) and only return 3 records (currentCount).
number
The total number of records available.
object
The filters applied to the request. This object contains key-value pairs where each key is a field name and each value is either a simple equality value or an object with operator-based filters.When filters are applied, the totalCount reflects the total number of records matching the filter criteria, not the total number of all records.

Sort

The default sort property and direction varies depending on the endpoint. If the provided value is not a valid sortable property for the records, the endpoint returns 400 Bad Request, detailing which fields can be used for sorting. Even if the provided value is a valid property of the record schema, it does not guarantee that sorting is supported for that property. If the first character of sort is - (e.g. -sortProperty), the list of records is returned in descending order. To sort by multiple properties, separate the values by commas. The descending order syntax is also allowed for individual properties (e.g. sort=sortProperty,-anotherProperty). Note: This returns a 400 Bad Request if the multi-sort configuration is not supported.

Examples

Ascending Sort

Descending Sort

Each response also includes a Link header that contains the previous, next, first, and last “page” URLs that will need to be iterated through. limit is preserved for all relevant links provided while offset is changed depending on the page. Listed below are the link headers generated for a request with query parameters limit=30&offset=60 and a total of 160 records:
The Link header provides the URL for the previous, next, first, and last page of results:
  • The URL for the current page is followed by rel="self".
  • The URL for the previous page is followed by rel="prev".
  • The URL for the next page is followed by rel="next".
  • The URL for the last page is followed by rel="last".
  • The URL for the first page is followed by rel="first".
In some cases, only a subset of these links are available. For example, the link to the previous page is not be included on the first page of results, and the link to the next page is not be included on the last page of results.

Filtering

Many endpoints in the Payroll Integrations API support filtering to retrieve a subset of records that match specific criteria. For example, /v1/payroll-connections/:payroll_connection/employee-data?updatedAt[gt]=2026-01-01 returns only employee data which has been updated after January 1st, 2026. This section outlines the filtering syntax, supported operators, and how to combine multiple filters.

Query Parameters

Filters are applied using query parameters with the following syntax:
string
Simple equality filter. Returns records where the field exactly matches the value.
string
Operator-based filter. Returns records where the field matches the value according to the specified operator.See the Operators section below for the full list of supported operators.

Operators

The following operators are supported for filtering. Not all operators are available for every field; the allowed operators depend on the field’s data type.

Combining Multiple Filters

Multiple filters can be applied in a single request by including multiple query parameters. All filters are combined using AND logic, meaning records must match all specified conditions.

Array Operators

The in and not_in operators accept comma-separated values:

Null Checking

Use the empty and not_empty operators to filter on null values. These operators accept true or false as values:
  • [empty]=true or [not_empty]=false — field is null
  • [empty]=false or [not_empty]=true — field is not null

Filter Error Handling

The API returns 400 Bad Request in the following cases:
  • Unknown filter field: Attempting to filter on a field that does not support filtering
  • Invalid operator: Using an operator that is not allowed for the specified field
  • Invalid value: Providing a value that does not match the expected field type (e.g., non-UUID value for a UUID field)

Response Metadata

When filters are applied to a request, the response metadata includes a filters object that reflects the active filters:

Combining Filtering with Pagination

Filters can be combined with pagination parameters. Filters are applied first, then pagination is applied to the filtered results:
In this example, the totalCount reflects the total number of records matching the filter criteria (156 records with updatedAt >= 2024-01-01), not the total number of all records.