request_offer_signature
curl --request POST \
--url https://rest.hotfix.jobs/v1/employer/applications/{application_id}/offer/{offer_id}/signature \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://rest.hotfix.jobs/v1/employer/applications/{application_id}/offer/{offer_id}/signature', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://rest.hotfix.jobs/v1/employer/applications/{application_id}/offer/{offer_id}/signature"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"offer": {
"id": "7d4e3c2b-1a09-8765-4321-0fedcba98765",
"status": "pending",
"subject": "Your offer for Staff engineer at Beacon",
"body": "Hi Ada,\n\nWe're excited to offer you the Staff engineer role at Beacon.\n\nYour pay will be $185,000 a year, and you'll start on November 2, 2026. The offer letter is attached.\n\nPlease let us know by October 23, 2026. If you have any questions first, just reply to this email.\n\nTo accept, reply to this email with \"I accept\" and your full name.",
"pay": "$185,000 a year",
"start_date": "2026-11-02",
"respond_by": "2026-10-23",
"sent_at": "2026-10-16T15:04:05+00:00",
"sent_by_user_id": "user_2abc",
"sent_by_name": "Maya Chen",
"reply": null,
"acceptance": null,
"has_signed_copy": false,
"signature_status": "requested",
"created_at": "2026-10-16T15:04:05+00:00"
},
"signing": true
}Offers
request_offer_signature
Send an open offer’s PDF through SignWell: the candidate signs on SignWell’s page, then you countersign, and the signed copy marks the offer accepted. Also tries again after SignWell refused a request (signature_status failed). 409 when a signature is already requested. Only when get_offer’s signing is true. Answers with the same body as get_offer.
POST
/
v1
/
employer
/
applications
/
{application_id}
/
offer
/
{offer_id}
/
signature
request_offer_signature
curl --request POST \
--url https://rest.hotfix.jobs/v1/employer/applications/{application_id}/offer/{offer_id}/signature \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://rest.hotfix.jobs/v1/employer/applications/{application_id}/offer/{offer_id}/signature', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://rest.hotfix.jobs/v1/employer/applications/{application_id}/offer/{offer_id}/signature"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"offer": {
"id": "7d4e3c2b-1a09-8765-4321-0fedcba98765",
"status": "pending",
"subject": "Your offer for Staff engineer at Beacon",
"body": "Hi Ada,\n\nWe're excited to offer you the Staff engineer role at Beacon.\n\nYour pay will be $185,000 a year, and you'll start on November 2, 2026. The offer letter is attached.\n\nPlease let us know by October 23, 2026. If you have any questions first, just reply to this email.\n\nTo accept, reply to this email with \"I accept\" and your full name.",
"pay": "$185,000 a year",
"start_date": "2026-11-02",
"respond_by": "2026-10-23",
"sent_at": "2026-10-16T15:04:05+00:00",
"sent_by_user_id": "user_2abc",
"sent_by_name": "Maya Chen",
"reply": null,
"acceptance": null,
"has_signed_copy": false,
"signature_status": "requested",
"created_at": "2026-10-16T15:04:05+00:00"
},
"signing": true
}Authorizations
ApiKeyBearerAuth
Company API key minted at Settings → API. Prefix hf_. Accepted on hiring data routes. Not accepted on MCP.
Path Parameters
Application UUID.
Offer UUID, from get_offer.
Response
200 - application/json
Success
The response is of type object.