curl --request POST \
--url https://api.hotfix.jobs/v1/employer/jobs/requirements/extract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({description: '<string>'})
};
fetch('https://api.hotfix.jobs/v1/employer/jobs/requirements/extract', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.hotfix.jobs/v1/employer/jobs/requirements/extract"
payload = { "description": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"requirements": [
{
"requirement": "Shipped Go code that runs in production",
"line": "- 5+ years of Go",
"rewritten": "years"
}
],
"left_out": [
{
"line": "- Strong communicator",
"reason": "trait"
}
]
}Extract requirements
The requirements a job description lists, read the same way Hotfix reads an ingested posting’s. Nothing is saved; edit them, then send requirements on Create a job or Update a job.
A count of years comes back as the work it stands for (rewritten: years), and several things in one as one each (rewritten: split). A line the description lists that can’t be a requirement comes back in left_out with why: trait, vague, submitted, circumstance, protected, or too_long when its requirement runs past 140 characters. Nice-to-haves and responsibilities are neither.
Shares the 20 calls a minute per company of Suggest requirements. 503 when no extraction is available.
curl --request POST \
--url https://api.hotfix.jobs/v1/employer/jobs/requirements/extract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({description: '<string>'})
};
fetch('https://api.hotfix.jobs/v1/employer/jobs/requirements/extract', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.hotfix.jobs/v1/employer/jobs/requirements/extract"
payload = { "description": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"requirements": [
{
"requirement": "Shipped Go code that runs in production",
"line": "- 5+ years of Go",
"rewritten": "years"
}
],
"left_out": [
{
"line": "- Strong communicator",
"reason": "trait"
}
]
}Authorizations
Company API key minted at Settings → API. Prefix hf_. Accepted on hiring data routes. Not accepted on MCP.