---
title: "List openings"
method: GET
path: "/v3/openings"
tags: ["Openings"]
---

# List openings

`GET /v3/openings`

Openings are the individual headcount slots beneath a job — one opening per seat you intend to hire for. Each opening is filled when a candidate is hired against it (`status` becomes `closed` and `application_id` is populated) or closed without a hire (with a `close_reason_id`); closing the last open opening on a job automatically closes the job. Filter by parent (`job_id`, `application_id`, `close_reason_id`), by partner-supplied `opening_id`, by `open`/`closed` state, or by an `opened_at` / `closed_at` window for incremental HRIS-style syncs.

## 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
- `job_ids` integer[]
- `application_ids` integer[]
- `close_reason_ids` integer[]
- `fields` string[]
- `opened_at` object
  - `gte` string, date-time
  - `lte` string, date-time
  - `gt` string, date-time
  - `lt` string, date-time
- `closed_at` object
  - `gte` string, date-time
  - `lte` string, date-time
  - `gt` string, date-time
  - `lt` string, date-time
- `custom_field_option_id` integer
- `open` boolean
- `opening_id` string

## Response `200`

Successful

- object[]
  - `id` integer
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `job_id` integer — Id of the parent job (requisition) this opening belongs to. Each opening is a single headcount slot under the job; the job carries the role's configuration and is the source of truth for things like the interview plan and hiring team.
  - `opened_at` string, date-time, nullable — Timestamp the opening first transitioned to `open` (i.e. became available to be filled), in ISO 8601. `null` while the opening's job is still in `draft`.
  - `closed_at` string, date-time, nullable — Timestamp the opening was closed, in ISO 8601. `null` while the opening is still `open`. Closing the last open opening on a job automatically closes the job itself.
  - `sort_order` integer — Position of the opening within the job's openings list, used to preserve the order in which openings were created or arranged in Greenhouse.
  - `opening_id` string, nullable — Partner-supplied external identifier for the opening (e.g. an HRIS or ATS position id). Free-form string, not required to be unique across the organization, and `null` when no external id has been set. Distinct from the Greenhouse `id`.
  - `application_id` integer, nullable — Id of the application that filled this opening when it was closed as a hire. `null` for openings that are still `open` or that were closed without a hire.
  - `close_reason_id` integer, nullable — Id of the `close_reason` recorded when the opening was closed (e.g. `Hire - New Headcount`, `On Hold`, `Requisition Cancelled`). `null` when the opening is still `open` or when it was closed without a close reason. Resolve via `GET /v3/close_reasons`.
  - `target_start_on` string, date, nullable — Target start date for the hire that will fill this opening, in ISO 8601 (`YYYY-MM-DD`). `null` when no target start date has been set.
  - `open` boolean — Convenience flag — `true` while the opening is still available to be filled, `false` once it has been closed (filled or otherwise). Equivalent to `closed_at` being `null`.
  - `custom_fields` object, nullable

---

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