---
title: "List candidate educations"
method: GET
path: "/v3/candidate_educations"
tags: ["Candidate Educations"]
---

# List candidate educations

`GET /v3/candidate_educations`

Candidate educations are the school/degree/discipline entries on a candidate's profile — one row per education entry. V3 flattens what V1 nested under `/v1/candidates/{id}/educations`; filter with `candidate_ids` to retrieve a single candidate's full education history. School, degree, and discipline are stored as references to custom-field option ids — resolve the display names via `/v3/custom_field_options`. Use `latest=true` to retrieve only each candidate's most recent education.

## Query parameters

- `cursor` string
- `per_page` integer
- `ids` integer[]
- `created_at` object
  - `gte` string, date-time
  - `lte` string, date-time
  - `gt` string, date-time
  - `lt` string, date-time
- `updated_at` object
  - `gte` string, date-time
  - `lte` string, date-time
  - `gt` string, date-time
  - `lt` string, date-time
- `candidate_ids` integer[]
- `fields` string[]
- `start_at` object
  - `gte` string, date-time
  - `lte` string, date-time
  - `gt` string, date-time
  - `lt` string, date-time
- `end_at` object
  - `gte` string, date-time
  - `lte` string, date-time
  - `gt` string, date-time
  - `lt` string, date-time
- `latest` boolean

## Response `200`

Successful

- object[]
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `candidate_id` integer — Id of the candidate (person) this education entry belongs to.
  - `school_name_custom_field_option_id` integer, nullable — Id of the custom-field option representing the school. Resolve the display name via `GET /v3/custom_field_options?ids=<id>`; the school dictionary lives under the org's `school_name` custom field.
  - `degree_custom_field_option_id` integer, nullable — Id of the custom-field option representing the degree (e.g. `Bachelor's`, `Master's`). Resolve the display name via `GET /v3/custom_field_options?ids=<id>`; the degree dictionary lives under the org's `degree` custom field.
  - `discipline_custom_field_option_id` integer, nullable — Id of the custom-field option representing the field of study (e.g. `Computer Science`). Resolve the display name via `GET /v3/custom_field_options?ids=<id>`; the discipline dictionary lives under the org's `discipline` custom field.
  - `start_at` string, date-time, nullable — Start date the education entry covers, in ISO 8601. Only the month and year are surfaced on the candidate profile; any day/time component is stored but ignored by the Greenhouse UI.
  - `end_at` string, date-time, nullable — End date the education entry covers, in ISO 8601. `null` for in-progress education. Only the month and year are surfaced on the candidate profile.
  - `latest` boolean — `true` when this is the candidate's most recent education (by `end_at`). Greenhouse maintains this flag automatically — at most one education per candidate has `latest: true`.
  - `start_date_month` integer, nullable — Month component (1-12) of the education's start, when only month/year granularity is known.
  - `start_date_year` integer, nullable — Year component (e.g. `2014`) of the education's start, when only month/year granularity is known.
  - `end_date_month` integer, nullable — Month component (1-12) of the education's end, when only month/year granularity is known.
  - `end_date_year` integer, nullable — Year component (e.g. `2018`) of the education's end, when only month/year granularity is known.

---

[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)
