List offers

Offers are the formal job offers extended to a candidate's application. Each offer belongs to one application and carries a status (Created, Accepted, Rejected, or Deprecated), a proposed start date, an optional opening_id, and a custom_fields map that holds compensation components (base pay, equity, bonus, etc.) alongside any other offer custom fields configured on the hiring plan. Greenhouse versions offers — changing the start date, opening, or a version-triggering custom field creates a new offer row with an incremented version for the same application; pass current_only=true to filter the list down to the latest version per application. Filter by parent with application_ids, job_ids, candidate_ids, or opening_ids; combine status=Accepted with the resolved_at filter as a hire-date filter. Offer approvals flow through a separate approval_flow — see /v3/approval_flows for status.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Query Params
string

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

integer
1 to 500
Defaults to 100

Number of results per page

ids
array of integers
length ≤ 50

Comma separated list

ids
created_at
object
updated_at
object
application_ids
array of integers
length ≤ 50

Comma separated list

application_ids
job_ids
array of integers
length ≤ 50

Return only offers extended on applications attached to these job (hiring plan) ids. Matches the application's current job at the time the offer was generated.

job_ids
candidate_ids
array of integers
length ≤ 50

Comma separated list

candidate_ids
opening_ids
array of integers
length ≤ 50

Return only offers tied to these opening (headcount slot) ids. An offer is made against a specific opening on the job — use GET /v3/openings?job_ids=... to look ids up.

opening_ids
fields
array of strings
length ≤ 50

Comma separated list of fields to return

fields
boolean

When true, returns only the latest version of each offer per application — superseded prior versions are excluded. Combine with application_ids or candidate_ids to retrieve the current offer for a specific application or candidate.

integer

Return only offers whose offer custom field value selects this single-select or multi-select option id.

string
enum

Filter by offer status. Exact match against the values from the status enum on the response.

Allowed:
resolved_at
object

Filter by the timestamp the offer was resolved (Accepted or Rejected). Pass any combination of gte, lte, gt, lt as ISO-8601 date-times (e.g. resolved_at[gte]=2026-01-01T00:00:00Z&resolved_at[lte]=2026-04-01T00:00:00Z). Useful as a hire-date filter alongside status=Accepted.

sent_on
object

Filter by the date the offer was sent to the candidate. Pass any combination of gte, lte, gt, lt as ISO-8601 dates (e.g. sent_on[gte]=2026-01-01&sent_on[lte]=2026-04-01).

starts_on
object

Filter by the candidate's proposed start date on the offer. Pass any combination of gte, lte, gt, lt as ISO-8601 dates (e.g. starts_on[gte]=2026-01-01&starts_on[lte]=2026-04-01).

Response

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