Skip to main content

Overview

Interviews define the structure and content of phone interviews. You can create standard interviews with audio questions or questionnaire-type interviews with survey questions.
Interview status is represented as a numeric value: 0 = Active, 1 = Paused, 2 = Closed, 3 = Archived.
Need to update multiple interviews at once? See the Bulk Update Interviews endpoint.

Create Interview

Create a new interview (supports standard type only via the API). Endpoint: POST /qsi/gather/interviews
The Create endpoint only supports interviewType: "standard". Questionnaire-type interviews must be created through the Qualifi dashboard.
curl -X POST https://api.prod.qualifi.hr/qsi/gather/interviews \
  -H "x-api-key: ${API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Software Engineer Interview",
    "displayName": "Software Engineer Interview",
    "interviewType": "standard",
    "questionIds": ["uuid1", "uuid2"],
    "surveyQuestions": [
      { "id": "survey-q-uuid", "knockout": false }
    ],
    "keywords": ["javascript", "react"],
    "language": "en"
  }'
{
  "title": "Software Engineer Interview",
  "displayName": "Software Engineer Interview",
  "interviewType": "standard",
  "description": "Technical interview for software engineering role",
  "language": "en",
  "questionIds": ["uuid1", "uuid2"],
  "surveyQuestions": [
    { "id": "survey-q-uuid", "knockout": false }
  ],
  "keywords": ["javascript", "react"]
}

Get Interview

Retrieve interview details including questions. Endpoint: GET /qsi/gather/interviews/{interviewId}
interviewId
string
required
UUID of the interview
teamId
string
Override the team context for this request
{
  "data": {
    "interview": {
      "id": "interview-uuid",
      "title": "Software Engineer Interview",
      "displayName": "Software Engineer Interview",
      "interviewType": "standard",
      "status": 0,
      "description": "Technical interview for software engineering role",
      "descriptionUrl": "https://example.com/job-description",
      "language": "en",
      "resume": true,
      "webOnly": false,
      "messageGroupId": "msg-group-uuid",
      "narratorId": "narrator-uuid",
      "organizationId": "org-uuid",
      "teamId": "team-uuid",
      "createdById": "user-uuid",
      "createdAt": "2026-01-15T00:00:00Z",
      "updatedAt": "2026-01-15T00:00:00Z"
    }
  },
  "meta": {
    "requestId": "req-uuid",
    "timestamp": "2026-01-15T00:00:00Z"
  }
}

List Interviews

List all interviews with pagination and filtering. Endpoint: GET /qsi/gather/interviews
page
number
Page number (default: 1)
pageSize
number
Items per page
Search interviews by title
archived
boolean
Include archived interviews (default: false)
interviewType
string
Filter by type: "standard" or "questionnaire"
{
  "data": {
    "interviews": [
      {
        "id": "interview-uuid",
        "title": "Software Engineer Interview",
        "displayName": "Software Engineer Interview",
        "interviewType": "standard",
        "status": 0,
        "description": "Technical interview for software engineering role",
        "language": "en",
        "resume": false,
        "webOnly": false,
        "messageGroupId": "msg-group-uuid",
        "organizationId": "org-uuid",
        "teamId": "team-uuid",
        "createdById": "user-uuid",
        "createdAt": "2026-01-15T00:00:00Z",
        "updatedAt": "2026-01-15T00:00:00Z"
      }
    ],
    "pagination": {
      "total": 42,
      "page": 1,
      "pages": 5,
      "pageSize": 10
    }
  },
  "meta": {
    "requestId": "req-uuid",
    "timestamp": "2026-01-15T00:00:00Z"
  }
}

Update Interview

Update interview properties including questions, keywords, and settings. Endpoint: PATCH /qsi/gather/interviews/{interviewId}
interviewId
string
required
UUID of the interview to update
{
  "title": "Updated Interview Title",
  "questionIds": ["uuid1", "uuid2", "uuid3"],
  "surveyQuestions": [
    { "id": "survey-q-uuid", "knockout": true }
  ],
  "keywords": ["python", "django"],
  "removedKeywords": ["php"]
}

Delete Interview

Archive an interview. Endpoint: DELETE /qsi/gather/interviews/{interviewId}
interviewId
string
required
UUID of the interview to archive
teamId
string
Override the team context for this request
userId
string
User performing the archive action
{
  "data": {
    "interview": {
      "id": "interview-uuid",
      "title": "Software Engineer Interview",
      "displayName": "Software Engineer Interview",
      "interviewType": "standard",
      "status": 3,
      "language": "en",
      "resume": false,
      "webOnly": false,
      "organizationId": "org-uuid",
      "teamId": "team-uuid",
      "createdById": "user-uuid",
      "createdAt": "2026-01-15T00:00:00Z",
      "updatedAt": "2026-02-01T00:00:00Z",
      "archivedAt": "2026-02-01T00:00:00Z"
    }
  },
  "meta": {
    "requestId": "req-uuid",
    "timestamp": "2026-02-01T00:00:00Z"
  }
}

Copy Interview

Copy an interview template to a different team (or the same team with a “(copy)” suffix). The copied interview includes all questions, survey questions, AI text questions, keywords (optional), score card templates, and AI interview configurations. Endpoint: POST /qsi/gather/interviews/{interviewId}/copy
interviewId
string
required
UUID of the interview to copy
curl -X POST https://api.prod.qualifi.hr/qsi/gather/interviews/{interviewId}/copy \
  -H "x-api-key: ${API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "teamId": "target-team-uuid",
    "copyKeywords": false
  }'
{
  "teamId": "target-team-uuid",
  "copyKeywords": false,
  "messageGroupId": "message-group-uuid"
}

Copy Behavior

Questions:
  • Different Team: Questions are copied as new questions in the target team
  • Same Team: Questions are reused (not duplicated)
Survey Questions:
  • Different Team: Survey questions are copied with all options and preferred options
  • Same Team: Survey questions are reused
AI Text Questions:
  • Different Team: AI text questions are copied as new questions
  • Same Team: AI text questions are reused
Keywords:
  • Only copied if copyKeywords: true
  • Creates new keyword associations for the copied interview
Score Card Templates:
  • All score card templates are copied to the new interview
AI Interview Configuration:
  • For AI interviews, a new Tavus persona is created
  • AI configuration is copied with the new persona ID
  • Original persona is not modified
MessageGroup:
  • If messageGroupId is provided, it will be used
  • If not provided, the default message group for the interview type will be used
When copying to the same team, the interview title will automatically have “(copy)” appended to avoid conflicts.

Interview Types

Standard Interviews

Standard interviews use audio questions that are played to candidates during phone calls.

Questionnaire Interviews

Questionnaire interviews use survey questions that candidates answer via web interface.
You can mix question types in standard interviews, but questionnaire-type interviews are specifically designed for survey-style questions.