v1

latestOpenAPI 3.1.02026-07-261770816.7 KB
Jobs

List jobs

Jobs are the open requisitions and hiring plans your organization is recruiting against. A job carries the role's department, offices, hiring team, interview plan, and custom fields, and is the parent of the openings (headcount slots), job posts (public listings), and applications attached to it. In V3 these related collections live on their own resource endpoints — /v3/openings, /v3/job_posts, /v3/applications, /v3/job_hiring_managers, etc. — rather than inlined on the job. Filter by status (open, closed, draft), department, office, requisition id, or custom field selection; the response is scoped to jobs the caller's permissions can see.

get/v3/jobs

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
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 job first 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 job most recently transitioned to closed. Pass any combination of gte, lte, gt, lt as ISO-8601 date-times.

requisition_idstring

Return only jobs whose partner-supplied requisition_id matches exactly. Not unique across the organization — multiple jobs may share a requisition_id.

department_idinteger

Return only jobs assigned to this department.

office_idinteger

Return only jobs assigned to this office. A job that spans multiple offices matches when any one of them is the supplied id.

custom_field_option_idinteger

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

confidentialboolean

Filter by the confidential flag. Set false to exclude legacy confidential jobs; omit to return both.

status'open' | 'draft' | 'closed'

Filter by job lifecycle status.

Response

Successful

idinteger
created_atstring date-time
updated_atstring date-time
namestring

Internal job title shown to the hiring team in Greenhouse (e.g. Senior Backend Engineer). Distinct from the external-facing title on each job_post.

requisition_idstring nullable

Partner-supplied external identifier for the requisition (e.g. an HRIS or ATS code). Free-form string, not unique across the organization, and null when no external id has been set.

notesstring nullable

Internal HTML notes about the job, surfaced to the hiring team in the Greenhouse UI. Not exposed on public job posts.

confidentialboolean

If true, the job is restricted to users explicitly granted access on the Hiring Team. The legacy Confidential Jobs feature has been sunset — this flag cannot be set on new jobs and is preserved for jobs that already had it enabled.

status'open' | 'draft' | 'closed'

Lifecycle status of the job. draft while it is being scaffolded, open once it has at least one open opening, and closed after every opening is closed. A job moves to closed automatically when its last open opening is closed via PATCH /v3/openings/{id}.

opened_atstring date-time nullable

Timestamp the job first transitioned to open, in ISO 8601. null while the job is still in draft.

closed_atstring date-time nullable

Timestamp the job most recently transitioned to closed, in ISO 8601. null for jobs that are still open or draft.

is_templateboolean nullable

If true, this job is a template used as the source for new jobs rather than a real requisition. Templates do not accept applications; reference them via template_job_id on POST /v3/jobs.

copied_from_idinteger nullable

Id of the job (typically a template) this job was copied from on creation. null when the job was not created from another job.

department_idinteger nullable

Id of the department this job is assigned to. null when no department is set.

office_idsinteger[] nullable

Ids of the offices this job is assigned to. A job can span multiple offices; empty array or null when no offices are set.

custom_fieldsobject nullable