Skip to main content
PATCH
Update a job

Authorizations

Authorization
string
header
required

Company API key minted at Settings → API. Prefix hf_. Accepted on hiring data routes. Not accepted on MCP.

Path Parameters

job_id
string
required

Job UUID.

Body

application/json
title
string
required

Public job title.

description
string
required

Markdown job description.

department
string

Required to publish, not for a draft: engineering, data_ai, product, design, sales, marketing, customer, people, operations, or finance_and_legal.

team
string

Optional team inside the department, such as backend under engineering. Null when none of its teams fits; a team alone implies its department.

yoe_min
integer

Optional minimum years of experience, 0 to 50. Left out, Hotfix fills it from the description once and never overwrites it.

skills
string[]

Optional, up to 15. Left out, Hotfix fills them from the description once and never overwrites them.

education
string

Optional: none, bachelor, master, or doctorate. Left out, Hotfix fills it from the description once and never overwrites it.

locations
string

City or place labels the applicant sees.

countries
string

Country names. Same closed list the app uses.

work_type
string

remote, hybrid, or onsite.

employment_type
string

FULL_TIME, PART_TIME, CONTRACT, or INTERN.

salary_min
integer

Low end of the stated range. Currency is salary_currency.

salary_max
integer

High end of the stated range.

salary_currency
string

ISO currency the posting stated. Do not convert it. Required with a salary; there is no default.

draft
boolean

true keeps a draft a draft. false publishes it onto the careers page. A live job cannot go back to draft.

apply_form
object

The job's apply form: resume, phone, linkedin, github, website, and cover_letter each required, optional, or off; and up to 20 questions plus company fields (field_id, required). A yes/no or number question can be a knockout (knockout with knockout_on or knockout_below). Name and email are always asked. Get a job's form_schema is what candidates see.

Response

200 - application/json

Success

id
string
title
string
status
enum<string>

open, draft, or paused. Paused means your plan ended; buying a plan again reopens it.

Available options:
open,
draft,
paused
draft
boolean
is_active
boolean

True for an open job.

department
string | null
team
string | null
locations
string[] | null
countries
string[]
work_type
string | null

remote, hybrid, or onsite.

employment_type
string | null

FULL_TIME, PART_TIME, CONTRACT, or INTERN.

salary_min
integer | null
salary_max
integer | null
salary_currency
string | null

The currency the job states. Never converted.

posted_at
string<date-time> | null

When it was published; null for a draft.

on_careers_page
boolean

True when the job is on your company page. Every open job is.

listed_on_hotfix
boolean

True when the job is on Hotfix job search, which an open job joins once it has a department.

description
string

The job description in markdown.

apply_form
object

The apply form settings: which standard fields are required, optional, or off, its questions (knockouts among them), and company fields.

form_schema
object

The fields a candidate sees on the apply form, as your company page and Hotfix job search render them.

yoe_min
integer | null

Minimum years of experience.

skills
string[]
education
string | null

none, bachelor, master, or doctorate.