create_self_schedule_link
curl --request POST \
--url https://rest.hotfix.jobs/v1/employer/applications/{application_id}/interview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"host_user_id": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({host_user_id: '<string>'})
};
fetch('https://rest.hotfix.jobs/v1/employer/applications/{application_id}/interview', 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}/interview"
payload = { "host_user_id": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"pending": {
"id": "b1c2d3e4-f5a6-7890-1234-56789abcdef0",
"status": "pending",
"host_user_id": "user_2abc",
"host_email": "alex@acme.com",
"starts_at": null,
"ends_at": null,
"meet_url": null,
"booking_url": "https://apply.hotfix.jobs/book/example",
"stage": "Interview"
},
"booked": null,
"scheduled": [],
"past": [],
"hosts": [
{
"user_id": "user_2abc",
"email": "alex@acme.com"
}
]
}Interviews
create_self_schedule_link
Open a self-schedule link for one application. The candidate picks the time. Does not email the applicant. MCP tool: create_self_schedule_link. One pending booking link at a time. Put the booking URL in a letter yourself. A person still hits Send.
POST
/
v1
/
employer
/
applications
/
{application_id}
/
interview
create_self_schedule_link
curl --request POST \
--url https://rest.hotfix.jobs/v1/employer/applications/{application_id}/interview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"host_user_id": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({host_user_id: '<string>'})
};
fetch('https://rest.hotfix.jobs/v1/employer/applications/{application_id}/interview', 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}/interview"
payload = { "host_user_id": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"pending": {
"id": "b1c2d3e4-f5a6-7890-1234-56789abcdef0",
"status": "pending",
"host_user_id": "user_2abc",
"host_email": "alex@acme.com",
"starts_at": null,
"ends_at": null,
"meet_url": null,
"booking_url": "https://apply.hotfix.jobs/book/example",
"stage": "Interview"
},
"booked": null,
"scheduled": [],
"past": [],
"hosts": [
{
"user_id": "user_2abc",
"email": "alex@acme.com"
}
]
}Authorizations
Employer session JWT from Better Auth.
Path Parameters
Application UUID.
Body
application/json
Calendar owner. Must be on this Workspace.
Length of the meeting.
Gap after the meeting on the host calendar.
Local window start, 24-hour.
Local window end, 24-hour.
Minimum notice before a bookable slot.
How many days ahead to offer.
phone_screen, hiring_manager, technical, final, or interview.
Private note on the link. Not shown to the applicant.
meet, zoom, or phone. Phone is a hold with no video link.
Response
200 - application/json
Success
The response is of type object.