Skip to main content
GET
List candidates

Authorizations

Authorization
string
header
required

Supabase JWT — Authorization: Bearer <token>.

Query Parameters

merchant_id
string<uuid>

Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.

Example:

"28106cba-1c27-4e53-b149-32113e5e8e31"

tab
enum<string>

Filter candidates by recent activity. Omit (or empty) to include all.

Available options:
interview,
pre-screening,
no-action,
leads,
Example:

"interview"

source
enum<string>

Filter by how the candidate entered: invited or self-registered. Omit for both.

Available options:
invited,
registered
Example:

"registered"

order_by
enum<string>
default:created_at_newest

Sort order of the result set. With rules or segment_id the search is ordered by last activity, and any order other than the default is refused (422).

Available options:
name_accending,
name_decending,
created_at_newest,
created_at_oldest
Example:

"created_at_newest"

filter_text
string

Search on candidate name, email, external id, phone and CV skills. Every word must match (case and accents ignored; longer words tolerate typos). Without order_by, the best matches come first. With rules or segment_id it is one more search rule: name, e-mail, phone, external id or skills contain the text.

filter_emoji
string

Filter by the candidate emoji marker. With rules: added as the emoji rule.

owner
string

Candidates with an application or interview owned by this recruiter (profile.id), or 'unassigned' for those without an owner. Needs the candidate_assignment feature (403 otherwise).

kind
enum<string>

prospect: sourced candidates who never applied; applicant: the others. Needs the prospects feature (403 otherwise).

Available options:
prospect,
applicant
channel
enum<string>

The candidate's first-touch channel; 'untracked' for candidates without one.

Available options:
linkedin,
indeed,
facebook,
instagram,
social,
email,
job_board,
referral,
agency,
internal,
sourced,
search,
website,
other,
direct,
untracked
mentioned_me
enum<string>

true: only candidates you were mentioned about in a note. Needs the mentions feature (403 otherwise).

Available options:
true,
false
rules
string

Search with the segment builder's rules: a JSON object {"match": "all" | "any", "rules": [...]} with at most 20 rules, for example {"match":"all","rules":[{"field":"tag","op":"any","values":[""]},{"field":"applied","op":"within_days","value":30}]}. The fields, operators and accepted ids are listed by merchant-candidate-filter-options. With rules the list is ordered by last activity: tab, order_by, owner, kind, channel and mentioned_me are refused (422), limit is at most 200, filter_text is the search rule, filter_emoji and source become rules (with match all only).

Maximum string length: 20000
segment_id
string<uuid>

The members of a saved segment (profile_interview_segment.id), as with rules: ordered by last activity, limit at most 200, filter_text searches within them; not together with rules, filter_emoji or source.

limit
integer
default:50

Maximum number of records to return (1–1000).

Required range: 1 <= x <= 1000
Example:

50

offset
integer | null
default:0

Number of records to skip from the start of the result set.

Required range: x >= 0
Example:

0

Response

A page of candidates with pagination metadata.

data
object[]
required

The merchant's candidates for this page.

pagination
object
required