Skip to main content

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

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
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 with archivedAt 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

Job Families

Browse the job family taxonomy associated with your jobs

Interviews

Create and manage interviews to attach to jobs