Skip to main content

Overview

Job Workflows are multi-step screening pipelines (e.g., questionnaire → standard interview → AI interviewer → meeting) attached to a job. Steps can also include AI practice interviewer and AI career coach — see Step Types for the full set. A workflow template (isTemplate: true) is a reusable definition you apply to one or more jobs or job families; applying it creates an assignment. A job’s effective workflow resolves the template that actually governs it (direct override > directly-applied template > job-family assignment > none). When you invite a candidate to a job, they are enrolled in the effective workflow and an enrollment with per-step state is created.
All workflow endpoints require the jobWorkflow organization feature. Requests for organizations without it return 403 FORBIDDEN.

Create Workflow Template

Create a reusable workflow template with an ordered list of steps. Endpoint: POST /qsi/gather/workflow-templates

List Workflow Templates

List all active workflow templates for the resolved team. Not paginated. Endpoint: GET /qsi/gather/workflow-templates
string
Override the team derived from the API key

Get Workflow Template

Retrieve a single workflow template with its steps and assignments. Endpoint: GET /qsi/gather/workflow-templates/{id}
string
required
UUID of the workflow template

Update Workflow Template

Update the name, description, messaging, or steps of an existing workflow template. Endpoint: PATCH /qsi/gather/workflow-templates/{id}
string
required
UUID of the workflow template to update

Archive Workflow Template

Archive (soft-delete) a workflow template. Archived templates are no longer returned in list responses. Endpoint: DELETE /qsi/gather/workflow-templates/{id}
string
required
UUID of the workflow template to archive
string
required
UUID of the acting user

Apply Workflow Template

Apply a workflow template to one or more jobs or job families, creating assignments. Endpoint: POST /qsi/gather/workflow-templates/{id}/apply
string
required
UUID of the workflow template to apply

Remove Workflow Template Assignment

Remove a workflow template assignment from a job or job family. Endpoint: DELETE /qsi/gather/workflow-template-assignments/{id}
string
required
UUID of the workflow template assignment to remove

Get Effective Workflow

Resolve the workflow that actually governs a job (direct override > directly-applied template > job-family assignment > none). Endpoint: GET /qsi/gather/jobs/{jobId}/effective-workflow
string
required
UUID of the job
When no workflow governs the job, the response still returns 200 with source: "none" and template: null (and no assignmentId). Check source before reading template.

Set Workflow Override

Override a job’s workflow with a specific template, bypassing any job-family assignment. Endpoint: POST /qsi/gather/jobs/{jobId}/workflow-override
string
required
UUID of the job

Clear Workflow Override

Remove a job’s workflow override, reverting to the job-family assignment or no workflow. Endpoint: DELETE /qsi/gather/jobs/{jobId}/workflow-override
string
required
UUID of the job

Get Workflow Progress

List candidate enrollments and their per-step progress for a job, with pagination. Endpoint: GET /qsi/gather/jobs/{jobId}/workflow-progress
string
required
UUID of the job
number
Page number (default: 1)
number
Items per page (default: 25, max: 100)

List Workflow Resources

List all available artifacts (interviews, meetings, message groups, jobs, job families) that can be referenced when building workflow templates. Endpoint: GET /qsi/gather/workflow-resources
string
Override the team derived from the API key

Invite Candidate to Job

Enroll a candidate in a job’s effective workflow and send the first step’s invite. This endpoint creates or reuses a candidate record and creates a workflow enrollment. Endpoint: POST /qsi/gather/jobs/{jobId}/invite-candidate
string
required
UUID of the job to invite the candidate to
Identify the candidate one of two ways: either pass candidateId to reuse an existing candidate, or omit it and provide firstName, lastName, and at least one of email or phone to create a new one. A request that satisfies neither returns 400.
firstInviteUrl is the invite link for the candidate’s first workflow step. It is included when an invite URL is available and is omitted otherwise, so treat it as optional.

Resend Workflow Step Invite

Resend the invite for a specific workflow enrollment step, advancing the inviteSentAt timestamp. This endpoint takes no request body. Endpoint: POST /qsi/gather/workflow-enrollment-steps/{id}/resend-invite
string
required
UUID of the workflow enrollment step

Step Types

Workflow steps are one of: questionnaire, standard_interview, ai_interviewer, ai_practice_interviewer, ai_career_coach, meeting.

Workflow Sources

Two response fields share the name source but describe different things — don’t conflate them when cross-referencing an assignment against an effective-workflow response:
  • assignment.source (on assignment objects in the Get Workflow Template and Apply Workflow Template responses) records how the assignment was created: job_template (template applied directly to a job), job_family (template applied to a job family), or job_override (a job-level override).
  • effectiveWorkflow.source (on the Get Effective Workflow response) records which rule won when resolving the job, in precedence order: job_override, job_template, job_family, or none (no workflow governs the job).

Enrollment & Step Status

Enrollment status: active, completed, failed, stopped. Enrollment-step status: pending, invited, in_progress, completed, waiting_for_evaluation, passed, failed.
Clients should be prepared to handle any documented status value. The full valid sets are listed above; additional values may be introduced in future API versions.

Jobs

Create and manage jobs

Candidates

Create candidates to invite into workflows