curl --request GET \
--url https://partner-api.taptalent.io/v1/partner/candidates/list \
--header 'Authorization: Bearer <token>'import requests
url = "https://partner-api.taptalent.io/v1/partner/candidates/list"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://partner-api.taptalent.io/v1/partner/candidates/list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://partner-api.taptalent.io/v1/partner/candidates/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://partner-api.taptalent.io/v1/partner/candidates/list"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://partner-api.taptalent.io/v1/partner/candidates/list")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.taptalent.io/v1/partner/candidates/list")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"candidates": [
{
"id": 12345,
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"phone": "+1234567890",
"currentJobTitle": "Software Engineer",
"currentCompany": "Tech Corp",
"city": "San Francisco",
"country": "United States",
"skills": [
"JavaScript",
"React",
"Node.js"
],
"resume": "https://storage.example.com/resumes/john-doe.pdf",
"majors": [
"Computer Science"
],
"summary": "Experienced software engineer...",
"languages": [
"English"
],
"educations": [
{
"degree": "Bachelor's",
"field": "Computer Science",
"institution": "University"
}
],
"workExperiences": [
{
"title": "Software Engineer",
"company": "Tech Corp",
"duration": "2 years"
}
],
"projectExperiences": [],
"certifications": [],
"githubUrl": "https://github.com/johndoe",
"linkedin": "https://linkedin.com/in/johndoe"
}
],
"pagination": {
"page": 0,
"perPage": 20,
"totalCandidates": 150,
"totalPages": 8,
"hasNextPage": true
}
}
}List candidates
Retrieve a paginated list of candidates in your company with advanced filtering options.
Pagination is 0-indexed on this endpoint: the first page is
pageNumber=0 (unlike most other endpoints, which start at page 1).
Check pagination.hasNextPage to determine whether more data is
available.
Filtering notes:
- For array filters (
jobIds,stageIds,skills,groupIds), use comma-separated values. - Skill searches are case-insensitive; other text filters may be case-sensitive.
- Use
searchTermfor broad text searches across multiple fields.
curl --request GET \
--url https://partner-api.taptalent.io/v1/partner/candidates/list \
--header 'Authorization: Bearer <token>'import requests
url = "https://partner-api.taptalent.io/v1/partner/candidates/list"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://partner-api.taptalent.io/v1/partner/candidates/list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://partner-api.taptalent.io/v1/partner/candidates/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://partner-api.taptalent.io/v1/partner/candidates/list"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://partner-api.taptalent.io/v1/partner/candidates/list")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.taptalent.io/v1/partner/candidates/list")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"candidates": [
{
"id": 12345,
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"phone": "+1234567890",
"currentJobTitle": "Software Engineer",
"currentCompany": "Tech Corp",
"city": "San Francisco",
"country": "United States",
"skills": [
"JavaScript",
"React",
"Node.js"
],
"resume": "https://storage.example.com/resumes/john-doe.pdf",
"majors": [
"Computer Science"
],
"summary": "Experienced software engineer...",
"languages": [
"English"
],
"educations": [
{
"degree": "Bachelor's",
"field": "Computer Science",
"institution": "University"
}
],
"workExperiences": [
{
"title": "Software Engineer",
"company": "Tech Corp",
"duration": "2 years"
}
],
"projectExperiences": [],
"certifications": [],
"githubUrl": "https://github.com/johndoe",
"linkedin": "https://linkedin.com/in/johndoe"
}
],
"pagination": {
"page": 0,
"perPage": 20,
"totalCandidates": 150,
"totalPages": 8,
"hasNextPage": true
}
}
}Authorizations
Company-scoped API key. Production keys are prefixed sk_live_,
sandbox keys sk_test_, each followed by 22 base62 characters
(pattern ^sk_(live|test)_[0-9A-Za-z]{22}$). Generate keys in the
TapTalent dashboard under Account Settings → Developers → API Key
Management; a key is shown once at generation and old keys are
invalidated immediately on regeneration.
Query Parameters
Comma-separated list of job IDs (integers) to filter candidates by.
Comma-separated list of stage IDs to filter candidates by.
Search term to filter candidates by name, email, or other fields.
Filter by candidate's current job title.
Filter by candidate's current company.
Filter by candidate's phone number.
Filter by candidate's email address.
Comma-separated list of skills to filter by (case-insensitive).
Comma-separated list of group IDs to filter by.
Set to "true" to include only rejected candidates. Note: the misspelling of "Rejeceted" in this parameter name is intentional and required — it is the actual wire format accepted by the API. Passed as a string, not a boolean.
true, false Filter by candidate source.
Items per page. Must be one of: 10, 20, 40, 80, 100.
10, 20, 40, 80, 100 Page number. 0-indexed — the first page is pageNumber=0
(unlike most other paginated endpoints, which are 1-indexed).
Was this page helpful?
.png?fit=max&auto=format&n=lKy84_BssSCy2hcz&q=85&s=ac7c949427cc2893306f6036415f087e)