---
title: "Create candidate employment"
method: POST
path: "/v3/candidate_employments"
tags: ["Candidate Employments"]
---

# Create candidate employment

`POST /v3/candidate_employments`

Add a new work history entry to a candidate's profile. `candidate_id`, `company_name`, `title`, and `start_date` are required; `company_name` and `title` are free-text strings (no custom-field option lookup is needed). Omit `end_date` to record the entry as the candidate's current job — Greenhouse will then recompute the `latest` flag across the candidate's employments, with the current job winning over any historical entries.

## Request body

- object
  - `candidate_id` integer, required — Id of the candidate (person) the employment entry belongs to.
  - `company_name` string, required — Free-text name of the employer.
  - `title` string, required — Free-text job title held at this employer.
  - `start_date` string, date, required — Start date of this employment, as an ISO 8601 date (`YYYY-MM-DD`). Only the month and year are surfaced on the candidate profile.
  - `end_date` string, date — End date of this employment, as an ISO 8601 date (`YYYY-MM-DD`). Omit when the candidate currently holds this job — Greenhouse treats an entry with no `end_date` as the candidate's current employment.

## Response `201`

Successful

- object
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `candidate_id` integer — Id of the candidate (person) this employment entry belongs to.
  - `company_name` string — Free-text name of the employer, as entered on the candidate's profile.
  - `title` string — Free-text job title held at this employer.
  - `start_date` string, date — Start date of this employment, as an ISO 8601 date. The Greenhouse UI displays only the month and year.
  - `end_date` string, date, nullable — End date of this employment, as an ISO 8601 date. `null` indicates the employment is current (ongoing). The Greenhouse UI displays only the month and year.
  - `latest` boolean, nullable — `true` when this is the candidate's most recent employment. Greenhouse maintains this flag automatically — the current job (`end_date: null`) wins, otherwise the entry with the latest `end_date` — and at most one employment per candidate has `latest: true`. Mirrors the `company` and `title` shown on the parent candidate record.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `422` — Unprocessable Content

---

[API](https://skmtc.dev/greenhouse/apis/auth-api.md) · [All operations](https://skmtc.dev/greenhouse/apis/auth-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/greenhouse/auth-api/revisions/9517a2e54640/schema)
