v1
latestOpenAPI 3.1.02026-07-261770816.7 KBList 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.
Query parameters
Cursor link for pagination from previous page response header. Do not use any other parameters when using this.
Number of results per page
Comma separated list
Comma separated list
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.
Comma separated list
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.
Comma separated list of fields to return
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.
Return only offers whose offer custom field value selects this single-select or multi-select option id.
Filter by offer status. Case-insensitive match against one of Created, Accepted, Rejected, or Deprecated (the status enum on the response).
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.
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).
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
Successful