Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.humanly.io/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Batch-modify multiple interviews in a single API call. Useful for applying consistent settings across interviews, updating keywords in bulk, or cloning configuration from a template. Endpoint: PATCH /qsi/gather/interviews/bulk-update

Mode Behavior

The mode parameter controls how supplied values interact with existing data.
Supplied values completely replace existing values.For example, if an interview has keywords ["java", "python"] and you send keywords: ["go"], the interview will only have ["go"] after the update.

Parameters

Response

{
  "data": {
    "success": true,
    "updatedCount": 3,
    "errors": [],
    "templateInterviewId": null
  }
}

Examples

1. Update Title and Display Name (Overwrite)

Set the same title and display name across multiple interviews.
curl -X PATCH https://api.prod.qualifi.hr/qsi/gather/interviews/bulk-update \
  -H "x-api-key: ${API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "interviewIds": ["int-uuid-1", "int-uuid-2", "int-uuid-3"],
    "mode": "overwrite",
    "title": "Senior Engineer Interview",
    "displayName": "Senior Engineer Phone Screen"
  }'

2. Add Keywords to Existing Interviews (Merge)

Add new keywords without removing existing ones.
{
  "interviewIds": ["int-uuid-1", "int-uuid-2"],
  "mode": "merge",
  "keywords": ["remote", "senior", "full-stack"]
}

3. Replace All Keywords (Overwrite)

Completely replace the keywords on multiple interviews.
{
  "interviewIds": ["int-uuid-1", "int-uuid-2"],
  "mode": "overwrite",
  "keywords": ["go", "kubernetes", "microservices"]
}

4. Remove Specific Keywords (Merge)

Remove specific keywords while keeping all others intact.
{
  "interviewIds": ["int-uuid-1", "int-uuid-2", "int-uuid-3"],
  "mode": "merge",
  "removedKeywords": ["outdated-skill", "deprecated-tech"]
}

5. Clone from Template Interview (Overwrite)

Apply a template interview’s configuration to multiple interviews.
curl -X PATCH https://api.prod.qualifi.hr/qsi/gather/interviews/bulk-update \
  -H "x-api-key: ${API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "interviewIds": ["int-uuid-1", "int-uuid-2", "int-uuid-3"],
    "mode": "overwrite",
    "templateInterviewId": "template-int-uuid"
  }'

6. Add Survey Questions with Knockout (Merge)

Add survey questions to existing interviews, including knockout configuration.
{
  "interviewIds": ["int-uuid-1", "int-uuid-2"],
  "mode": "merge",
  "surveyQuestions": [
    { "id": "sq-uuid-1", "knockout": false },
    { "id": "sq-uuid-2", "knockout": true }
  ]
}

7. Remove Specific Questions (Merge)

Remove specific questions from interviews while preserving all others.
{
  "interviewIds": ["int-uuid-1", "int-uuid-2"],
  "mode": "merge",
  "removedQuestionIds": ["q-uuid-old-1", "q-uuid-old-2"],
  "removedSurveyQuestionIds": ["sq-uuid-old-1"],
  "removedAITextQuestionIds": ["aitq-uuid-old-1"]
}

8. Set Score Card Topics (Overwrite)

Apply a standardized score card across multiple interviews.
curl -X PATCH https://api.prod.qualifi.hr/qsi/gather/interviews/bulk-update \
  -H "x-api-key: ${API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "interviewIds": ["int-uuid-1", "int-uuid-2"],
    "mode": "overwrite",
    "scoreCardTopics": [
      {
        "topic": "Technical Skills",
        "weight": 40,
        "description": "Evaluate depth of technical knowledge",
        "lookingFor": "Strong understanding of core concepts and practical experience",
        "scoreDescriptions": {
          "1": "No relevant technical knowledge",
          "2": "Basic understanding but limited experience",
          "3": "Solid knowledge with some practical experience",
          "4": "Strong expertise with extensive experience",
          "5": "Expert-level mastery with deep practical experience"
        }
      },
      {
        "topic": "Communication",
        "weight": 30,
        "description": "Evaluate clarity and effectiveness of communication",
        "lookingFor": "Clear, concise, and structured responses",
        "scoreDescriptions": {
          "1": "Unable to communicate ideas clearly",
          "2": "Somewhat clear but disorganized",
          "3": "Clear and reasonably well-structured",
          "4": "Very clear, well-structured, and engaging",
          "5": "Exceptionally clear, persuasive, and articulate"
        }
      },
      {
        "topic": "Problem Solving",
        "weight": 30,
        "description": "Evaluate approach to solving problems",
        "lookingFor": "Structured thinking and creative solutions",
        "scoreDescriptions": {
          "1": "No evidence of structured problem solving",
          "2": "Some structure but limited creativity",
          "3": "Good structured approach with reasonable solutions",
          "4": "Strong analytical thinking with creative solutions",
          "5": "Exceptional problem-solving with innovative approaches"
        }
      }
    ]
  }'

9. Update Interview Settings (Overwrite)

Set language, web-only, and resume settings across interviews.
{
  "interviewIds": ["int-uuid-1", "int-uuid-2", "int-uuid-3"],
  "mode": "overwrite",
  "language": "es",
  "webOnly": true,
  "resume": true
}

10. Set Notification Subscribers and Message Group (Overwrite)

Assign notification subscribers and a message group to multiple interviews.
{
  "interviewIds": ["int-uuid-1", "int-uuid-2"],
  "mode": "overwrite",
  "notificationSubscribers": ["user-uuid-1", "user-uuid-2", "user-uuid-3"],
  "messageGroupId": "msg-group-uuid"
}

11. Combined Merge (Questions + Keywords + Subscribers)

A realistic example that adds questions, keywords, and notification subscribers in a single merge operation.
curl -X PATCH https://api.prod.qualifi.hr/qsi/gather/interviews/bulk-update \
  -H "x-api-key: ${API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "interviewIds": ["int-uuid-1", "int-uuid-2", "int-uuid-3"],
    "mode": "merge",
    "audioQuestionAndMessageIds": ["q-uuid-new-1", "q-uuid-new-2"],
    "surveyQuestions": [
      { "id": "sq-uuid-new-1", "knockout": false },
      { "id": "sq-uuid-new-2", "knockout": true }
    ],
    "keywords": ["leadership", "management", "strategy"],
    "removedKeywords": ["entry-level"],
    "notificationSubscribers": ["user-uuid-hiring-mgr"]
  }'

Error Handling

Status CodeCause
400Missing interviewIds or empty array
400Missing or invalid mode (must be "overwrite" or "merge")
401Invalid or missing API key
500Internal server error
Partial failures are possible — some interviews may update successfully while others fail. Always check the errors array in the response.

Interviews

Create and manage individual interviews

Questions

Create and manage interview questions

Best Practices

API integration best practices