Update Candidate
Updates a candidate that belongs to the API key’s company. Only basic profile/contact/status fields are supported.
Overview
The update candidate endpoint allows you to modify candidate information without recreating the candidate. This supports partial updates, meaning you only need to provide the fields you want to change. Useful for updating contact information, changing status, or adding metadata.Use Cases
- Status Updates: Move candidates through recruitment pipeline
- Contact Updates: Update email, phone, or other contact information
- Gender Override: Set or clear candidate gender for accurate interview addressing
- Job Assignment Management: Assign candidates to jobs or manage multiple job associations
- Metadata Updates: Add or modify custom fields and links
- Profile Refinement: Update candidate profile as more information becomes available
Partial Updates
You can update any combination of fields:Managing Job Assignments
ThejobIds field allows you to manage which jobs a candidate is associated with:
jobIds array must reference existing
jobs that belong to your API key’s company. Invalid job IDs will result in a
validation error.Status Workflow
Candidates progress through statuses:APPLIED→IN_PROCESS→INTERVIEWED→HIRED- Or:
APPLIED→REJECTED/WITHDRAWN
Company Isolation
You can only update candidates that belong to your API key’s company. The API validates company ownership before allowing updates, ensuring complete data isolation between companies.Error Scenarios
- 404 Not Found: Candidate doesn’t exist or has been deleted
- 403 Forbidden: Candidate belongs to a different company, or job IDs reference jobs from other companies
- 400 Bad Request: Invalid field values, validation errors, or non-existent job IDs
Related Resources
Candidates Resource Guide
Get Candidate
Create Candidate
Authorizations
API key for authentication using Bearer scheme
Path Parameters
Query Parameters
Required for ATS API keys to specify which company to access. Ignored for standard company API keys.
Body
Candidate's first name
1 - 100"John"
Candidate's last name
1 - 100"Doe"
Candidate's email address
"john.doe@example.com"
Candidate's phone number in E.164 format
^\+[1-9]\d{1,14}$"+421901234567"
GDPR expiry date in ISO 8601 format (must be in the future)
"2026-11-16"
Candidate status
UNDEFINED, APPLIED, IN_PROCESS, REJECTED, ACCEPTED "IN_PROCESS"
Array of job IDs to assign the candidate to (replaces existing assignments)
[
"123e4567-e89b-12d3-a456-426614174000",
"987e6543-e21b-12d3-a456-426614174001"
]Custom metadata (replaces existing metadata, max 10KB, 5 levels deep, 50 keys)
{
"source": "LinkedIn",
"referredBy": "John Smith"
}Candidate's gender. Set to 'male' or 'female' to override auto-detection, or null to clear and revert to auto-detection.
male, female "female"
The candidate's CV in plain text. This will be automatically anonymized.
50000"Jane Doe\nSoftware Engineer\nExperience: ..."
Response
Candidate ID
"123e4567-e89b-12d3-a456-426614174000"
Candidate's first name
"John"
Candidate's last name
"Doe"
Candidate status
UNDEFINED, APPLIED, IN_PROCESS, REJECTED, ACCEPTED "APPLIED"
Created timestamp (UTC)
"2025-11-20T10:30:00Z"
Updated timestamp (UTC)
"2025-11-20T10:30:00Z"
[Deprecated] Single job ID; use jobIds instead.
"987e6543-e21b-12d3-a456-426614174000"
Jobs the candidate is assigned to.
50Candidate's email address
"john.doe@example.com"
Candidate's phone number
"+421915123456"
GDPR expiry date. Currently returned as a date (no time). NOTE: We plan to migrate to a timestamp with timezone (timestamptz) for global correctness.
"2026-11-16"
Overall rating/match score (0-100)
0 <= x <= 10085
Custom metadata
{
"source": "LinkedIn",
"externalId": "CAND-12345"
}Number of analyses for this candidate (for quick overview)
2
Number of interviews for this candidate (for quick overview)
3
Convenience links to related collections. Endpoints may be added incrementally.
{
"analyses": "/v1/public/candidates/123e4567-e89b-12d3-a456-426614174000/analyses",
"interviews": "/v1/public/candidates/123e4567-e89b-12d3-a456-426614174000/interviews"
}Candidate's gender. Used for gender-aware addressing in interviews. Null if not explicitly set (auto-detected from name).
male, female "female"
The candidate's anonymized CV in plain text.
"[NAME]\nSoftware Engineer\nExperience: ..."