Create job

Create a new job from an existing template. template_job_id and number_of_openings are required; the template supplies the interview plan, scorecards, hiring team, and approval workflow, since Greenhouse Recruiting remains the source of truth for those configurations. One opening is created for each requested slot, optionally tagged with a partner opening_ids entry. Department and offices can be set either by Greenhouse id (department_id, office_ids) or by partner external_id (external_department_id, external_office_ids) — the id and external-id forms are mutually exclusive. The legacy confidential flag cannot be set through this endpoint.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
integer
required

Id of an existing job (typically a template) used as the source for this job's interview plan, scorecards, hiring team, and approval workflow. Required — Greenhouse Recruiting remains the source of truth for these configurations, so new jobs always inherit them from a template.

integer
required

Number of openings to create on the new job. Each opening can be filled by a single hire. The total open openings across the job cannot exceed Greenhouse's internal limit of 100; requests that would exceed it are rejected.

string

External-facing title for the job's initial internal job post (the listing shown on the company's careers site). Defaults to job_name when omitted.

string

Internal HTML notes about the job, surfaced to the hiring team in the Greenhouse UI.

string

Internal job title shown to the hiring team (e.g. Senior Backend Engineer). When omitted, the template job's name is used.

integer | null

Id of the department to assign the job to. Mutually exclusive with external_department_id.

string | null

Partner-supplied external_id of the department to assign the job to. Resolved to a Greenhouse department_id in the caller's organization; unknown values are rejected. Mutually exclusive with department_id.

office_ids
array of integers | null

Ids of the offices to assign the job to. A job can span multiple offices. Mutually exclusive with external_office_ids.

office_ids
external_office_ids
array of strings | null

Partner-supplied external_id values of the offices to assign the job to. Each entry is resolved to a Greenhouse office_id in the caller's organization; unknown values are rejected. Mutually exclusive with office_ids.

external_office_ids
string | null

Partner-supplied external identifier for the requisition (e.g. an HRIS or ATS code). Free-form string and not required to be unique across the organization.

opening_ids
array of strings | null

Optional partner-supplied identifiers for the openings being created — one entry per new opening, paired positionally with number_of_openings. Each value is stored on the resulting opening as its opening_id (a free-form string, not the Greenhouse opening id) and may be null. Greenhouse enforces an internal limit of 100 open openings per job; requests that would exceed it fail.

opening_ids
custom_fields
array of objects

Values to set on this job's job custom fields. Each entry identifies the field by custom_field_id or name_key and supplies a value whose shape matches the field's value_type (see GET /v3/custom_fields?field_type=job).

custom_fields
Responses

401

Unauthorized

403

Forbidden

422

Unprocessable Content

Language
Credentials
Missing 1 required scope
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json