v1

latestOpenAPI 3.1.02026-07-261770816.7 KB
Openings

Create opening

Add a new headcount slot to an existing job. job_id is required; opening_id is an optional partner-supplied external identifier (e.g. an HRIS or ATS position id) and custom_fields set values on the organization's opening custom fields. Greenhouse enforces an internal limit of 100 open openings per job — requests that would exceed it are rejected. To create a batch of openings alongside a new job, use POST /v3/jobs with number_of_openings instead.

post/v3/openings

Request body

job_idinteger required

Id of the parent job (requisition) to add this opening to. Required. Greenhouse enforces an internal limit of 100 open openings per job; requests that would exceed it are rejected.

opening_idstring

Partner-supplied external identifier for the new opening (e.g. an HRIS or ATS position id). Free-form string, not required to be unique across the organization. Distinct from the Greenhouse 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