Skip to main content
POST
Search persons
The JSON request body may be omitted. When supplied, companyId and name filters must be nonempty. Phone input may include punctuation or an optional leading 1, but must normalize to exactly 10 digits. externalIdSystems accepts payroll_system and hhaexchange and selects returned IDs without filtering people. Filters combine with AND. Company, name, and phone filters must match the same authorized employment. They select people without trimming a matching person’s returned employments array. An unsupported externalIdSystems value returns 400 invalid_input with a message naming the value. Other invalid filters and request bodies over 1 MiB also return 400 invalid_input; an unauthorized company filter returns 403 forbidden. Results return each person once with all their employments in credential-authorized companies, including terminated records. Each employment is a complete Employee object with top-level participation and coverage. Pagination applies to people, not employments, and sorts by Person createdAt then id. Employee records without a Person link remain available through Search employees.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

JSON request body. Bodies over 1 MiB return 400 invalid_input.

companyId
string

Optional authorized company filter.

Minimum string length: 1
phone
string

Digits must normalize to exactly 10; an optional leading 1 is removed.

firstName
string

Case-insensitive partial match on an authorized employment.

Minimum string length: 1
lastName
string

Case-insensitive partial match on an authorized employment.

Minimum string length: 1
personId
string<uuid>

Exact Person UUID match.

externalIdSystems
enum<string>[]

Selects returned external IDs; does not filter records.

Available options:
payroll_system,
hhaexchange
createdFrom
string<date-time>

Inclusive Person creation-time lower bound.

createdBefore
string<date-time>

Exclusive Person creation-time upper bound.

limit
integer
default:50
Required range: 1 <= x <= 100
offset
integer
default:0
Required range: x >= 0

Response

Person search results.

asOf
string<date-time>
required
persons
object[]
required
pagination
object
required