Skip to main content
POST
Search candidates across jobs

Authorizations

Authorization
string
header
required

Authenticate with a Bearer token: API key, OAuth token, or session token.

Body

application/json
offset
integer | null
default:0

Records to skip for pagination. Defaults to 0.

Required range: x >= 0
limit
integer
default:100

Max records per page (1–100). Defaults to 100.

Required range: 1 <= x <= 100
job_ids_included
string<uuid>[]

Only candidates on these jobs (up to 100). Get IDs from POST /v1/jobs/search.

Maximum array length: 100
pipeline_stage_ids_included
string<uuid>[]

Only candidates whose current stage is one of these pipeline stages (up to 100). Get IDs from GET /v1/jobs/pipeline-stages.

Maximum array length: 100
pipeline_stage_ids_excluded
string<uuid>[]

Leave out candidates whose current stage is one of these pipeline stages (up to 100).

Maximum array length: 100
stage_categories_included
enum<string>[]

Only candidates whose current stage is in any of these categories: interviewing, offer, placement, rejection. Categories are set per stage in pipeline settings.

Available options:
interviewing,
offer,
placement,
rejection
stage_categories_excluded
enum<string>[]

Leave out candidates whose current stage is in any of these categories.

Available options:
interviewing,
offer,
placement,
rejection
owner_ids
string<uuid>[]

Only candidates owned by these team members (up to 100). Get IDs from GET /v1/team-members.

Maximum array length: 100
sourced_by_ids
string<uuid>[]

Only candidates sourced by these team members (up to 100). Get IDs from GET /v1/team-members.

Maximum array length: 100
exclude_archived_jobs
boolean
default:false

Leave out candidates on archived jobs. Defaults to false.

created_at_gte

Only candidates added to their job at or after this ISO 8601 date or timestamp. A date without a time means midnight UTC at the start of that day, so a date-only upper bound leaves that day out. For a day in a local timezone pass full timestamps with the offset, such as 2026-11-05T00:00:00-05:00 to 2026-11-05T23:59:59-05:00.

created_at_lte

Only candidates added to their job at or before this ISO 8601 date or timestamp. A date without a time means midnight UTC at the start of that day, so a date-only upper bound leaves that day out. For a day in a local timezone pass full timestamps with the offset, such as 2026-11-05T00:00:00-05:00 to 2026-11-05T23:59:59-05:00.

stage_date_gte

Only candidates who entered their current stage at or after this ISO 8601 date or timestamp. Only candidates whose current stage has this date are returned. A date without a time means midnight UTC at the start of that day, so a date-only upper bound leaves that day out. For a day in a local timezone pass full timestamps with the offset, such as 2026-11-05T00:00:00-05:00 to 2026-11-05T23:59:59-05:00.

stage_date_lte

Only candidates who entered their current stage at or before this ISO 8601 date or timestamp. Only candidates whose current stage has this date are returned. A date without a time means midnight UTC at the start of that day, so a date-only upper bound leaves that day out. For a day in a local timezone pass full timestamps with the offset, such as 2026-11-05T00:00:00-05:00 to 2026-11-05T23:59:59-05:00.

custom_stage_date_gte

Only candidates whose current stage has a Stage Date (on interview stages, usually the interview time) at or after this ISO 8601 date or timestamp. Only candidates whose current stage has this date are returned. A date without a time means midnight UTC at the start of that day, so a date-only upper bound leaves that day out. For a day in a local timezone pass full timestamps with the offset, such as 2026-11-05T00:00:00-05:00 to 2026-11-05T23:59:59-05:00.

custom_stage_date_lte

Only candidates whose current stage has a Stage Date at or before this ISO 8601 date or timestamp. Only candidates whose current stage has this date are returned. A date without a time means midnight UTC at the start of that day, so a date-only upper bound leaves that day out. For a day in a local timezone pass full timestamps with the offset, such as 2026-11-05T00:00:00-05:00 to 2026-11-05T23:59:59-05:00.

sort_by
enum<string>
default:created_at

created_at (default): when the candidate was added to the job. stage_date: when they entered their current stage. custom_stage_date: the Stage Date of their current stage, leaving out candidates without one. Sorting by stage_date leaves out the few candidates with no recorded stage history; with no stage date filter, meta.total still counts them.

Available options:
created_at,
stage_date,
custom_stage_date
sort_order
enum<string>
default:desc

Sort direction. Defaults to desc.

Available options:
asc,
desc

Response

Candidates found

success
enum<boolean>
required
Available options:
true
data
object[]
required
meta
object
required