v1

latestOpenAPI 3.1.02026-07-261770816.7 KB
Offers

Update offer

Patch fields on an existing offer. Only the keys included in the request body are modified; omitted keys are left untouched. Updates to starts_on, the offer's opening_id, or version-triggering custom fields create a new offer version for the same application rather than mutating the prior row — fetch the updated offer with current_only=true to find the new current version. The date-typed created_at, sent_on, and resolved_at fields are intended for backfilling offers managed outside Greenhouse; resolved_at updates are normalized to noon UTC on the supplied date. custom_fields entries set values for the offer's offer custom fields (including compensation components); only fields configured on the application's hiring plan apply.

patch/v3/offers/{id}

Path parameters

idinteger required

Request body

starts_onstring date

Candidate's proposed start date, in ISO 8601 (YYYY-MM-DD). Changing this on an existing offer typically creates a new offer version.

sent_onstring date

Date the offer was sent to the candidate, in ISO 8601 (YYYY-MM-DD). Use to backfill the sent date for offers handled outside of Greenhouse.

created_atstring date

Date the offer was created, in ISO 8601 (YYYY-MM-DD). Use to backfill the original creation date for offers migrated from another system.

resolved_atstring date-time

Timestamp the offer was resolved (Accepted or Rejected), in ISO 8601. Updates are normalized to noon UTC on the date provided.

Response

Successful

idinteger
created_atstring date-time
updated_atstring date-time
versioninteger

Revision number of this offer within its application. Greenhouse creates a new offer row (incrementing version) whenever a tracked field on an existing offer changes — typically starts_on, opening_id, or a custom field configured to trigger a new version. Pair with current_only=true to filter the list endpoint down to the latest version per application.

application_idinteger

Id of the application this offer is extended on. Every offer belongs to exactly one application; the offer is voided if the application is rejected or deleted.

job_idinteger

Id of the job this offer's application is on.

candidate_idinteger

Id of the candidate (person) receiving this offer. Resolved through the offer's application.

opening_idinteger nullable

Id of the specific opening this offer is being extended for. null when the offer has not yet been linked to an opening.

status'Created' | 'Accepted' | 'Rejected' | 'Deprecated'

Lifecycle status of the offer. Created for offers still being drafted or pending approval, Accepted once the candidate accepts, Rejected if declined or withdrawn, and Deprecated for superseded prior versions (a new offer version replaces an earlier one with this status).

starts_onstring date nullable

Candidate's proposed start date, in ISO 8601 (YYYY-MM-DD). null when no start date has been set on the offer.

sent_onstring date nullable

Date the offer was sent to the candidate, in ISO 8601 (YYYY-MM-DD). null until the offer has been sent.

resolved_atstring date-time nullable

Timestamp the offer was resolved (Accepted or Rejected), in ISO 8601. Date updates submitted through PATCH /v3/offers/{id} are normalized to noon UTC on the supplied date. null while the offer is still Created or has been superseded as Deprecated without a resolution.

custom_fieldsobject nullable