Skip to main content

Overview

The Candidates API allows you to create, manage, and track candidates throughout your recruitment process. Candidates can optionally be associated with one or more jobs, or exist in your candidate pool without job assignments. They serve as the foundation for scheduling interviews.

Resource Structure

Custom Fields: Additional candidate information (resume URL, LinkedIn profile, skills, etc.) can be stored in the metadata field as key-value pairs.

Required Scopes

Creating Candidates

Basic Candidate Creation

Candidates can be created with or without an associated job. When created without a job, they exist in your candidate pool and can be assigned to jobs later.

Comprehensive Candidate Profile

Listing Candidates

List All Candidates

Filter by Job

Filter by Status

Search Candidates

Best Practice: For production integrations, always implement request timeouts.

Updating Candidates

Partial Update

Update Status

Update Job Assignments

Candidate Status Management

Available Statuses

Initial application status - Candidate has applied - Awaiting initial review
  • Default status for new candidates

Status Workflow

Multiple Job Applications

Managing Multi-Job Candidates

Candidates can be associated with multiple jobs through the jobIds field, allowing you to track a single candidate across different positions.
Job Associations: Use the jobIds array for managing multiple job assignments. The jobId field (singular) is maintained for backward compatibility and represents the first job.

Deleting Candidates

Soft Delete

GDPR Compliance: Deleted candidates are soft-deleted and retained for audit purposes. For permanent deletion (GDPR “right to be forgotten”), contact support.

Bulk Delete

Common Patterns

Candidate Import from ATS

Duplicate Detection

Candidate Analytics

Resume Processing

Validation Rules

firstName
string
required
Candidate’s first name (1-100 characters)
lastName
string
required
Candidate’s last name (1-100 characters)
gdprExpiryDate
string
required
GDPR expiry date in ISO 8601 format (must be in the future, e.g., “2026-11-16”)
email
string
Valid email address (at least email or phoneNumber required)
phoneNumber
string
Phone number in E.164 format (+1234567890) (at least email or phoneNumber required)
jobId
string
UUID of the job to associate with (optional - must exist and belong to your company if provided)
jobIds
array
Array of job UUIDs for multi-job assignments (used in update operations)
metadata
object
Custom key-value pairs for extensibility (max 10KB, max 5 levels deep, max 50 keys). Store additional fields like resumeUrl, skills, education, etc.
gender
string
Candidate’s gender ("male" or "female"). Used for gender-aware addressing in interviews (e.g., Slovak/Czech formal titles). If not provided, gender is auto-detected from the candidate’s name.
anonymizedCvText
string
The candidate’s anonymized CV in plain text. When provided in a create or update request via the cvText field, it is automatically anonymized using Google Gemini.
workHistory
array
Array of candidate’s professional work history items:
  • id (string, optional): UUID of the work history record
  • companyName (string, required): Name of the company/employer
  • candidatePosition (string, required): Candidate’s role/job title
  • referenceName (string, optional): Name of the reference contact
  • referencePhone (string, required): Phone number of reference contact in E.164 format (e.g. +1234567890)
  • startDate (string, optional): Job start date in calendar format (yyyy-MM-dd)
  • endDate (string, optional): Job end date in calendar format (yyyy-MM-dd)

Error Scenarios

Best Practices

Validate Data

Validate email and phone formats before submission

Handle Duplicates

Implement duplicate detection logic

Update Status

Keep candidate status current throughout pipeline

Secure Resume URLs

Use signed URLs with expiration for resume access

Next Steps

Interviews

Schedule interviews for candidates

Jobs

Learn about job management

API Reference

View complete Candidates API reference

Best Practices

Production integration patterns