curl --request POST \
--url https://rest.hotfix.jobs/v1/employer/jobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"description": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: '<string>', description: '<string>'})
};
fetch('https://rest.hotfix.jobs/v1/employer/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://rest.hotfix.jobs/v1/employer/jobs"
payload = {
"title": "<string>",
"description": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "9a1b2c3d-4e5f-6789-abcd-ef0123456789",
"title": "Staff engineer",
"category": "engineering",
"locations": [
"New York"
],
"work_type": "hybrid",
"employment_type": "FULL_TIME",
"on_board": true,
"listed_on_hotfix": false,
"posted_at": "2026-09-21T15:04:05+00:00",
"applicants_count": 3
}create_job
Post a job on the company board. It is not on Hotfix search until extract is confirmed, then call set_job_listed. MCP tool: create_job. Publish spends a live-job slot. The job stays off Hotfix search until extract confirms it is tech, then POST list.
curl --request POST \
--url https://rest.hotfix.jobs/v1/employer/jobs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"description": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({title: '<string>', description: '<string>'})
};
fetch('https://rest.hotfix.jobs/v1/employer/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://rest.hotfix.jobs/v1/employer/jobs"
payload = {
"title": "<string>",
"description": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "9a1b2c3d-4e5f-6789-abcd-ef0123456789",
"title": "Staff engineer",
"category": "engineering",
"locations": [
"New York"
],
"work_type": "hybrid",
"employment_type": "FULL_TIME",
"on_board": true,
"listed_on_hotfix": false,
"posted_at": "2026-09-21T15:04:05+00:00",
"applicants_count": 3
}Authorizations
Employer session JWT from Better Auth.
Body
Public job title.
Markdown job description.
engineering, data_ai, product_and_design, sales, marketing, customer, people, operations, finance_and_legal, or leadership.
City or place labels the applicant sees.
Country names. Same closed list the dashboard uses.
remote, hybrid, or onsite.
FULL_TIME, PART_TIME, CONTRACT, or INTERN.
Low end of the stated range. Currency is salary_currency.
High end of the stated range.
ISO currency the posting stated. Do not convert it.
Short public summary.
Optional department under the category.
Response
Success
The response is of type object.