Skip to main content
Search hits give you triage data only — no name, email, or phone. To contact a candidate you found in search, call GET /candidates/{talentCardId}. If the candidate is still locked for your workspace, this call unlocks them automatically — spending one unlock credit — and returns the full detail in the same response. There is no separate unlock endpoint.
Available to eval and production keys (candidates:read). Eval workspaces get 10 unlock credits per cycle by default; production workspaces get higher grants. Check GET /usage.

Typical flow

  1. Search — pick talentCardId values from Search candidates.
  2. Shortlist using triage data — use profileSignals and redactedResumeText on search hits; do not fetch details speculatively.
  3. Check creditsGET /usageapiUnlocks (used vs limit).
  4. Fetch detailsGET /candidates/{talentCardId} for each candidate you want to contact. Locked candidates are unlocked on the spot (irreversible, one credit each).

GET /candidates/

Scope: candidates:read Rate limits: 30 sensitiveRead + 120 global requests per 60s per API key.

Response

Resume file URLs expire after 1 hour. Re-call the endpoint for fresh links — repeat calls on unlocked candidates are free.

Unlock credits

Each new unlock counts against your workspace’s apiUnlocks meter for the current cycle. Already-unlocked candidates never re-charge. Check remaining credits:
When API credits are exhausted, GET /candidates/{id} on a locked candidate returns 429 with error_code: api_unlock_limit_reached. Already-unlocked candidates keep working. If the API quota still shows remaining credits but unlock fails, the workspace’s product plan unlock pool may be exhausted. This returns 429 plan_unlock_limit_reached — a separate limit from the API quota.

Example — search, then fetch

Best practices

  • Shortlist from search first — use Profile signals and redactedResumeText; only fetch details for candidates you intend to contact.
  • Confirm before fetching in bulk — each new candidate spends a credit and unlocking cannot be undone.
  • Check apiUnlocks before batch fetches.
  • Fetch sequentially — not in parallel — to stay within rate limits and make quota errors easier to handle.