Skip to main content
GET
List candidates

First time? Set up Authentication

Learn how to authenticate your API requests with your API key.
Returns candidates for a sourcing using the same pagination, filters, and ordering as the Kalent candidates table.

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).
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

When success is true, data contains:
  • candidates — list of { candidate, talent, lastActivityAt, lastActivityDirection, lastActivityChannel, lastActivityContent, replyStatus } summaries:
    • candidate.id
    • candidate.statusHandle
    • candidate.createdAt
    • candidate.sourcingId
    • candidate.talentId
    • talent.id
    • talent.firstname
    • talent.lastname
    • talent.jobTitle
    • talent.city
    • talent.linkedinUrl
    • lastActivityAt, 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.

Errors