Overview
Jobs represent open positions that candidates can be screened for. You can create jobs, attach interviews and screening questionnaires, assign ATS jobs, and manage job status. Job Families (read-only) provide a taxonomy layer that groups related jobs. Base URL:https://api.prod.qualifi.hr
Authentication: All requests require an x-api-key header.
All responses follow the envelope:
{ "data": { ... }, "meta": { "requestId": "uuid", "timestamp": "ISO-8601" } }.Create Job
Create a new job posting. Endpoint:POST /qsi/gather/jobs
- cURL
- JavaScript
- Python
List Jobs
List jobs with optional filtering and pagination. Endpoint:GET /qsi/gather/jobs
string
Filter by team UUID
number
Page number (default: 1)
number
Items per page (default: 50, max: 100)
string
Filter by job type
string
Filter by job status
string
Filter by department
string
Filter by location string
string
Full-text search on job title and description
Pagination: Use
page and pageSize query params. The response includes a pagination object with page, pageSize, total, and totalPages fields.Get Job
Retrieve a single job by ID. Endpoint:GET /qsi/gather/jobs/{id}
string
required
UUID of the job
string
Team UUID (used for access scoping)
jobFamilyIds and knowledgeBaseIds are only returned on the single-get response, not the list endpoint.Update Job
Update job fields (whole-body patch — any subset of optional fields). Endpoint:PATCH /qsi/gather/jobs/{id}
string
required
UUID of the job to update
Mutating an ATS-imported job via PATCH returns
409 Conflict. Use the ATS assign endpoint to manage ATS jobs.Archive Job
Archive (soft-delete) a job. The job remains retrievable witharchivedAt set.
Endpoint: DELETE /qsi/gather/jobs/{id}
string
required
UUID of the job to archive
string
Team UUID (used for access scoping)
string
UUID of the user performing the archive
Unarchive Job
Restore a previously archived job. Endpoint:POST /qsi/gather/jobs/{id}/unarchive
string
required
UUID of the job to restore
Attach Interview
Attach an interview to a job. Endpoint:PATCH /qsi/gather/jobs/{id}/interview
string
required
UUID of the job
Attach Screening Questionnaire
Attach a screening questionnaire to a job. Endpoint:PATCH /qsi/gather/jobs/{id}/screening-questionnaire
string
required
UUID of the job
Assign ATS Job
Assign an ATS job to the current team. Endpoint:POST /qsi/gather/jobs/assign-ats
Unassign Team from Job
Remove the team assignment from a job. Endpoint:DELETE /qsi/gather/jobs/{id}/team-assignment
string
required
UUID of the job
string
Team UUID to unassign
string
UUID of the user performing the unassignment
JobResponse Field Reference
The following fields may be returned on a job object. Fields marked optional (?) may be absent when not set.
ATS Metadata (ats object)
The ats field is read-only and populated from the external ATS. It contains up to 8 sub-fields:
Status Limitation
Status transitions are validated by a state-machine. Updating
status is only permitted along allowed transitions; an invalid transition returns 400 Bad Request with a message of the form Invalid status transition from '...' to '...'. At creation, only draft, pending_approval, and active are accepted — advanced and terminal states (such as open, on_hold, closed, filled, cancelled, paused, archived) are reachable only via subsequent update transitions.API keys cannot approve jobs. On create, setting status: "approved" always returns 403 Forbidden. On update, transitioning a pending_approval job to approved returns 403 Forbidden. Job approvals must be performed through the Humanly dashboard.Error Reference
Related Resources
Job Families
Browse the job family taxonomy associated with your jobs
Interviews
Create and manage interviews to attach to jobs

