v1

latestOpenAPI 3.1.02026-07-261770816.7 KB
Openings

List 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.

get/v3/openings

Query parameters

cursorstring

Cursor link for pagination from previous page response header. Do not use any other parameters when using this.

per_pageinteger

Number of results per page

idsinteger[]

Comma separated list

gtestring date-time
ltestring date-time
gtstring date-time
ltstring date-time
gtestring date-time
ltestring date-time
gtstring date-time
ltstring date-time
job_idsinteger[]

Return only openings on these job (hiring plan) ids. Openings represent headcount on a job, so this filters to the openings belonging to those jobs.

application_idsinteger[]

Return only openings currently filled by these application ids. An opening's application_id is set when a candidate's application is moved onto the opening; null while the opening is still unfilled.

close_reason_idsinteger[]

Return only openings closed with one of these close_reason ids (e.g. Hire - New Headcount, On Hold, Requisition Cancelled). Resolve ids via GET /v3/close_reasons. Open openings have no close_reason_id and will not match.

fieldsstring[]

Comma separated list of fields to return

gtestring date-time
ltestring date-time
gtstring date-time
ltstring date-time

Filter by the timestamp the opening transitioned to open. Pass any combination of gte, lte, gt, lt as ISO-8601 date-times (e.g. opened_at[gte]=2026-01-01T00:00:00Z).

gtestring date-time
ltestring date-time
gtstring date-time
ltstring date-time

Filter by the timestamp the opening was closed. Pass any combination of gte, lte, gt, lt as ISO-8601 date-times. Useful for incrementally syncing recently filled or cancelled headcount.

custom_field_option_idinteger

Return only openings that have this custom_field_option id selected on any of their single- or multi-select opening custom fields.

openboolean

When true, return only openings that are still available to be filled; when false, only openings that have been closed. Omit to return both.

opening_idstring

Return only openings whose partner-supplied opening_id matches exactly. Not unique across the organization — multiple openings may share an opening_id.

Response

Successful

idinteger
created_atstring date-time
updated_atstring date-time
job_idinteger

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_atstring 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_atstring 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_orderinteger

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_idstring 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_idinteger 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_idinteger 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_onstring 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.

openboolean

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_fieldsobject nullable