curl --request GET \
--url https://cutshort.io/api/v1/candidates/{talentCardId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://cutshort.io/api/v1/candidates/{talentCardId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://cutshort.io/api/v1/candidates/{talentCardId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"talentCardId": "<string>",
"lockStatus": "locked",
"unlockedNow": true,
"displayName": "<string>",
"email": "<string>",
"phone": "<string>",
"originalResumeFileName": "<string>",
"originalResumeDownloadUrl": "<string>",
"profile": {}
}{
"error_code": "<string>",
"error_description": "<string>"
}{
"error_code": "<string>",
"error_description": "<string>"
}{
"error_code": "<string>",
"error_description": "<string>"
}{
"error_code": "<string>",
"error_description": "<string>"
}Get candidate detail (auto-unlock)
Returns full candidate identity, the actual resume (text + signed file download URL), and structured profile. If the candidate is locked for your workspace, this call unlocks them first — spending one unlock credit against the workspace unlock quota (check GET /usage). Already-unlocked candidates are never re-charged.
Requires scope candidates:read (eval + production keys). Rate limits: 30 sensitiveRead + 120 global requests per 60s per API key.
curl --request GET \
--url https://cutshort.io/api/v1/candidates/{talentCardId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://cutshort.io/api/v1/candidates/{talentCardId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://cutshort.io/api/v1/candidates/{talentCardId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"talentCardId": "<string>",
"lockStatus": "locked",
"unlockedNow": true,
"displayName": "<string>",
"email": "<string>",
"phone": "<string>",
"originalResumeFileName": "<string>",
"originalResumeDownloadUrl": "<string>",
"profile": {}
}{
"error_code": "<string>",
"error_description": "<string>"
}{
"error_code": "<string>",
"error_description": "<string>"
}{
"error_code": "<string>",
"error_description": "<string>"
}{
"error_code": "<string>",
"error_description": "<string>"
}Authorizations
Workspace-scoped API key. Prefix: cs_live_. Eval keys (self-serve from Cutshort → Settings → Integrations → API Key) can search and get candidate details within small quotas; production keys add job posting and candidate messaging with higher limits.
Path Parameters
Response
Unlocked candidate detail
Unlocked candidate detail (GET /candidates/{talentCardId} auto-unlocks locked candidates).
locked, unlocked true when this call spent an unlock credit; false when the candidate was already unlocked
Signed URL to download the candidate's actual resume file. Expires after 1 hour — re-fetch for a fresh link (free once unlocked).
Structured profile: full resume text (~8k chars), past companies with work summaries, education, skills
