---
title: "PATCH Questionnaire Questions Bulk"
method: PATCH
path: "/v2/questionnaires/questions/bulk_update"
---

# PATCH Questionnaire Questions Bulk

`PATCH /v2/questionnaires/questions/bulk_update`

Apply the same update to multiple questionnaire questions at once. Provide question_ids and at least one update field: assignee_email, collaboration_group_id, unassign, or reusable.

## Request body

- object
  - `question_ids` string[], required — Array of question UUIDs to update.
  - `assignee_email` string, email — Email of the user to assign all questions to.
  - `collaboration_group_id` string, uuid — UUID of the collaboration group to assign all questions to.
  - `unassign` boolean — Set to true to remove the assignee from all questions.
  - `reusable` boolean — true marks questions as reusable for ConveyorAI. false excludes them from the AI answer pool.

## Response `200`

Bulk questionnaire question update result.

- object
  - `questions` object[], required — Array of updated question objects.
    - `id` string, uuid — Question identifier.
    - `question_type` 'free_response' | 'multiple_choice' — Question type.
    - `question_text` string — Question text.
    - `bot_answer_text` string, nullable — ConveyorAI's draft free-response answer.
    - `bot_structured_answer` string, nullable — ConveyorAI's structured answer.
    - `final_answer_text` string, nullable — Human-reviewed final free-response answer.
    - `final_structured_answer` string, nullable — Human-reviewed final structured answer.
    - `final_structured_answers` object, nullable — Human-reviewed final structured answers.
    - `status` 'ready' | 'accepted' | 'open' | 'not_applicable' — Question status.
    - `grading` object, nullable — Answer grading.
      - `overall_category` string — Overall grading category.
    - `conveyorai_answer_result` object, nullable — ConveyorAI answer result.
      - `result` string — Answer result.
      - `skipped_reason` string, nullable — Reason ConveyorAI skipped the question, if applicable.
    - `last_edited_by` object, nullable — User who last edited the answer.
      - `name` string — User display name.
      - `email` string, email — User email address.
    - `assignee` object, nullable — Current assignee. Null if unassigned.
      - `type` 'user' | 'group' — Assignee type.
      - `id` string, uuid — Assignee identifier.
      - `name` string — Assignee name.
      - `email` string, email — Assignee email address. Only present for user assignees.
    - `collaborators` object[] — Users who collaborated on this question.
      - `name` string — Collaborator display name.
      - `email` string, email — Collaborator email address.
    - `assigned_group` object, nullable — The collaboration group this question is assigned to. Null if not assigned to a group.
      - `id` string, uuid — Group identifier.
      - `name` string — Group name.
    - `cited_sources` object[] — Sources cited by the answer.
      - `title` string — Source title.
      - `source_type` string — Source type.
    - `questionnaire_id` string, uuid — Questionnaire identifier.
    - `questionnaire_type` 'Security Questionnaire' | 'RFP' | 'Past Answers Import', nullable — Questionnaire type.
    - `connection_domain` string, nullable — Connection domain.
    - `reusable` boolean — Whether this question's answer is eligible for reuse by ConveyorAI.
    - `created_at` string, date-time — When the question was created.
    - `questionnaire_completed_at` string, date-time, nullable — When the questionnaire was completed.
  - `updated_count` integer, required — Number of questions updated.

---

[API](https://skmtc.net/conveyor/apis/portal-api.md) · [All operations](https://skmtc.net/conveyor/apis/portal-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/conveyor/portal-api/versions/adc0da85b126/schema)
