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
- APPLIED
- IN_PROCESS
- REJECTED
- ACCEPTED
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 thejobIds 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
Bulk Delete
Common Patterns
Candidate Import from ATS
Duplicate Detection
Candidate Analytics
Resume Processing
Validation Rules
Candidate’s first name (1-100 characters)
Candidate’s last name (1-100 characters)
GDPR expiry date in ISO 8601 format (must be in the future, e.g.,
“2026-11-16”)
Valid email address (at least email or phoneNumber required)
Phone number in E.164 format (+1234567890) (at least email or phoneNumber
required)
UUID of the job to associate with (optional - must exist and belong to your
company if provided)
Array of job UUIDs for multi-job assignments (used in update operations)
Custom key-value pairs for extensibility (max 10KB, max 5 levels deep, max 50
keys). Store additional fields like resumeUrl, skills, education, etc.
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.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.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
Invalid Job ID
Invalid Job ID
Duplicate Email
Duplicate Email
Invalid Phone Number
Invalid Phone Number
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