Skip to main content

Four endpoints accept the same request body, so once you can query one of them you can query all four: Each request returns only the records belonging to the subscriber the API key was issued to. There is no way to widen a query past your own data.

Start with the fields endpoint

Every dataset publishes its own catalog of fields. Read it once and use it to build your filters, rather than guessing field names:
The id is what you name in filters, sort and fields. The operators list is exactly what that field accepts — anything else is rejected with a 400.

Building a filter

A filter is a group of clauses joined by and (the default) or or. Each clause names a field, an operator and a value:
Groups can nest one level to mix and with or. This matches tasks that are either overdue or unassigned, in both cases only on the Northern site:
Omit filters entirely to list everything the key’s subscriber owns.

Operators

Which operators a field accepts depends on its type: in and notIn take an array. between needs an endValue and includes both ends. isEmpty and isNotEmpty take no value at all.

Values

  • Dates are strings, either a plain date ("2026-01-31") or a full timestamp. A plain date covers the whole day, so eq on "2026-01-31" matches anything that day. Dates with no time zone are read as UTC.
  • Status fields (type: "enum") accept either the numeric code or the label from the catalog, so 1 and "Completed" are the same filter. Responses always return the code.
  • Text matches without regard to case. In contains and startsWith, a % or _ in your value matches itself rather than acting as a wildcard.
  • Booleans are true or false.
isEmpty on a text field also matches an empty string, not just a missing value.Some older records store an unset date as a placeholder such as 1901-01-01 rather than leaving it empty, so treat a date at or before 1901 as “not set” rather than relying on isEmpty.

Time range

timeRange is a shorthand for filtering on the dataset’s defaultDateFieldId, so you do not have to know which date field that is. Use a preset:
Or supply your own window, which includes from and excludes to:
Supply one or the other, never both. Presets are resolved in UTC. Inventory has no date field, so it rejects timeRange — filter on a field instead.

Sorting and paging

Up to two sort rules are allowed, and the record’s own id always breaks ties, so paging never repeats or skips a row. Read the next page by advancing start by rows. rows defaults to 100 and caps at 1000; count in the response is the total number of matches, so you know when to stop.

Reading the response

items holds one object per record, keyed by the same field ids you filtered on. Ask for fields to keep the payload small; omit it to get every field in the catalog. A field with no value is null.

Errors

A rejected filter tells you what to change:

Limits