---
title: "Update a candidate"
method: PUT
path: "/candidates/{candidateId}"
tags: ["Candidate API:Candidates"]
---

# Update a candidate

`PUT /candidates/{candidateId}`

## Path parameters

- `candidateId` integer, required

## Headers

- `X-Allow-Duplicates` string

## Request body

- UpdateCandidateCommand
  - `firstName` string, nullable
  - `lastName` string, nullable
  - `email` string, nullable
  - `phone` string, nullable
  - `mobile` string, nullable
  - `salutation` string, nullable — Salutation/honorific/title
  - `statusId` integer, nullable — Candidate status
  - `rating` string, nullable
  - `seeking` 'Yes' | 'Maybe' | 'No', string
  - `unsubscribed` boolean
  - `summary` string, nullable
  - `dateOfBirth` string, date, nullable
  - `emergencyContact` string, nullable
  - `emergencyPhone` string, nullable
  - `social` object, nullable
  - `address` SubmitAddressModel
    - `street` string[], nullable
    - `city` string, nullable
    - `state` string, nullable
    - `postalCode` string, nullable
    - `countryCode` string, nullable
  - `skillTags` string[], nullable
  - `employment` SubmitEmploymentModel
    - `current` SubmitCurrentEmploymentModel
      - `employer` string, nullable
      - `position` string, nullable
      - `workTypeId` integer, nullable
      - `salary` SubmitSalaryModel
        - `ratePer` 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', string
        - `rate` number, double
        - `currency` string, nullable — Optional ISO 4217 3-letter alphabetic currency code
    - `ideal` SubmitIdealEmploymentModel
      - `position` string, nullable
      - `workTypeId` integer, nullable
      - `salary` SubmitSalaryRangeModel
        - `ratePer` 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', string
        - `rateLow` number, double
        - `rateHigh` number, double, nullable
        - `currency` string, nullable — Optional ISO 4217 3-letter alphabetic currency code
      - `other` SubmitIdealSalaryModel[], nullable
        - `workTypeId` integer, nullable
        - `salary` SubmitSalaryRangeModel
          - `ratePer` 'Hour' | 'Day' | 'Week' | 'Month' | 'Year', string
          - `rateLow` number, double
          - `rateHigh` number, double, nullable
          - `currency` string, nullable — Optional ISO 4217 3-letter alphabetic currency code
    - `history` CandidateEmploymentHistoryModel[], nullable
      - `employer` string, nullable — Name of the employer
      - `position` string, nullable
      - `start` string, nullable — Year, month or date employment started.<br /> Year must be formatted as [ISO date-fullyear](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6), the 4 digit year the course was completed, e.g. 2017<br /> Month must be formatted as [ISO date-fullyear](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6) "-" [ISO date-month](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6), e.g. 2017-07<br /> Date must be formatted as [ISO full-date](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6), e.g. 2017-07-31
      - `end` string, nullable — Year, month or date employment finished, or "Present" for a current role.<br /> Year must be formatted as [ISO date-fullyear](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6), the 4 digit year the course was completed, e.g. 2017<br /> Month must be formatted as [ISO date-fullyear](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6) "-" [ISO date-month](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6), e.g. 2017-07<br /> Date must be formatted as [ISO full-date](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6), e.g. 2017-07-31
      - `description` string, nullable — Description of responsibilities and achievements.
  - `availability` SubmitCandidateAvailabilityModel — The date the candidate is available to start. Specify ONE OF immediate, relative or date.
    - `immediate` boolean — The candidate is available for an immediate start
    - `relative` SubmitRelativeStartModel
      - `period` integer
      - `unit` 'Week' | 'Month', string
    - `date` string, date, nullable — The specific date that a job starts or a candidate is available
  - `education` SubmitCandidateEducationModel[], nullable
    - `institution` string, nullable
    - `course` string, nullable
    - `date` string, nullable — Year, month or date completed.<br /> Year must be formatted as [ISO date-fullyear](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6), the 4 digit year the course was completed, e.g. 2017<br /> Month must be formatted as [ISO date-fullyear](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6) "-" [ISO date-month](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6), e.g. 2017-07<br /> Date must be formatted as [ISO full-date](https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6), e.g. 2017-07-31
  - `custom` SubmitCustomFieldValueModel[], nullable
    - `fieldId` integer, required
    - `value` unknown
  - `recruiterUserId` integer[], nullable
  - `customSkills` string[], nullable — A maximum of 500 custom skills can be submitted per request

## Response `200`

Candidate was successfully updated

## Other responses

- `404` — Candidate was not found
- `409` — Candidate with this email already exists
- `422` — Validation error

---

[API](https://skmtc.net/jobadder/apis/jobadder-api.md) · [All operations](https://skmtc.net/jobadder/apis/jobadder-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/jobadder/jobadder-api/versions/9f43f6a6ee6e/schema)
