Candidates
List candidates
Returns paginated candidates for a sourcing.
GET
List candidates
First time? Set up Authentication
Learn how to authenticate your API requests with your API key.
Path parameters
string
required
Sourcing id in the authenticated workspace.
Query parameters
integer
default:"0"
Zero-based page index.
integer
default:"25"
Page size (max 50).
string
Free-text search on candidate/talent fields.
string
Repeatable status filter. When omitted, defaults to all statuses except
NOT_RETAINED.string
Repeatable city filter.
string
Repeatable job title filter.
string
Repeatable current company filter.
string
One of
name, companyName, statusHandle, city, jobTitle, userRating, contacts, createdAt, history.history is not a true activity sort: the page is selected by talent creation date (talent.createdAt, in the requested sortOrder), then the candidates of that page are re-ordered in memory by their latest outreach activity (with desc, candidates without any activity come first, then the most recent activity first). To find who replied, read replyStatus on each item rather than relying on this sort.string
asc or desc.Response
Whensuccess is true, data contains:
candidates— list of{ candidate, talent, lastActivityAt, lastActivityDirection, lastActivityChannel, lastActivityContent, replyStatus }summaries:candidate.idcandidate.statusHandlecandidate.createdAtcandidate.sourcingIdcandidate.talentIdtalent.idtalent.firstnametalent.lastnametalent.jobTitletalent.citytalent.linkedinUrllastActivityAt,lastActivityDirection,lastActivityChannel,lastActivityContent,replyStatus— see Outreach activity
pagination—pageIndex,pageSize,total,hasNextPage
Outreach activity
Each item carries the latest outreach activity between the talent and the user who owns the API key, aggregated across every channel (LinkedIn, email, WhatsApp, SMS) and across legacy and dynamic sequences. This is the same scope as the candidates table this user sees in Kalent: messages and invitations sent by other members of the workspace are not taken into account.replyStatus stays REPLIED even if you sent a follow-up after the talent replied (lastActivityDirection then becomes OUTBOUND). An accepted LinkedIn invitation counts as an inbound activity but not as a reply.

