Skip to main content

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.