---
title: "Approve Requirements"
method: POST
path: "/requirement-checks/approve"
tags: ["requirement-checks"]
---

# Approve Requirements

`POST /requirement-checks/approve`

Approve one or more requirement checks.

Accepts a list of requirement IDs and sets each to APPROVED. Requirements
that already have an associated issue are skipped — their resolution is
being tracked via the issue, and flipping them to APPROVED would orphan
the issue and put the row in a state where the reviewer can no longer
create a fresh issue from the UI. A follow-up does not close the check,
so those rows are still approvable.

## Request body

- BatchRequirementIdsBody
  - `requirement_ids` string[]

## Response `200`

Successful Response

- RequirementCheckResponse[]
  - `id` string, uuid, required
  - `evidence_packet_id` string, uuid, required
  - `evidence_packet_section_id` string, uuid, nullable
  - `risk_area_name` string, nullable
  - `template_id` string, uuid, nullable
  - `template_name` string, nullable
  - `question_id` string, uuid, required
  - `question` union, required
    - FreeResponseQuestion
      - `question` string, required
      - `additional_context` string, nullable
      - `score_compliance` boolean
      - `question_id` string, required
      - `type` 'free'
    - MultipleChoiceQuestion
      - `question` string, required
      - `options` string[], required
      - `additional_context` string, nullable
      - `score_compliance` boolean
      - `question_id` string, required
      - `type` 'multiple'
    - ChooseOneQuestion
      - `question` string, required
      - `options` string[], required
      - `additional_context` string, nullable
      - `score_compliance` boolean
      - `question_id` string, required
      - `type` 'one'
  - `answer` union
    - QuestionnaireAnswerChoiceAnswer
      - `question` string, required
      - `options` string[], nullable
      - `type` 'free' | 'one' | 'multiple', required
      - `answer` ChoiceAnswerOutput[], required
        - `choice` string, required
        - `explanation` string
        - `citations` BackendModelsPydanticDraftingCitation[], required
          - `type` string, required
          - `cited_text` string, required
          - `document_index` integer, required
          - `document_title` string, required
          - `end_page_number` integer, required
          - `start_page_number` integer, required
        - `conflicting` boolean
      - `compliant` 'compliant' | 'non_compliant' | 'partially_compliant' | 'not_applicable'
      - `vendor_answer` QuestionnaireVendorAnswer
        - `answer` string
        - `choices` string[], nullable
        - `notes` string, nullable
      - `label` string, nullable
    - QuestionnaireAnswerFreeAnswer
      - `question` string, required
      - `options` string[], nullable
      - `type` 'free' | 'one' | 'multiple', required
      - `answer` FreeAnswerOutput[], required
        - `answer` string, required
        - `citations` BackendModelsPydanticDraftingCitation[], required
          - `type` string, required
          - `cited_text` string, required
          - `document_index` integer, required
          - `document_title` string, required
          - `end_page_number` integer, required
          - `start_page_number` integer, required
      - `compliant` 'compliant' | 'non_compliant' | 'partially_compliant' | 'not_applicable'
      - `vendor_answer` QuestionnaireVendorAnswer
        - `answer` string
        - `choices` string[], nullable
        - `notes` string, nullable
      - `label` string, nullable
  - `compliance` 'compliant' | 'non_compliant' | 'partially_compliant' | 'no_evidence' | 'not_applicable' — Compliance status for an evidence requirement.
  - `ai_compliance` 'compliant' | 'non_compliant' | 'partially_compliant' | 'no_evidence' | 'not_applicable' — Compliance status for an evidence requirement.
  - `check_label` string, nullable
  - `ai_check_label` string, nullable
  - `classified_at` string, date-time, nullable
  - `note` QuestionnaireVendorAnswer
    - `answer` string
    - `choices` string[], nullable
    - `notes` string, nullable
  - `reviewer_note` string, nullable
  - `approval_status` 'pending' | 'approved' | 'issue_created' — Approval status for an evidence requirement check.
  - `issue_id` string, uuid, nullable
  - `collaborative_task_id` string, uuid, nullable
  - `closed_at` string, date-time, nullable
  - `closed_by` RequirementCloser — The user who closed out a requirement (approved it or created an issue).
    - `user_id` string, uuid, required
    - `name` string, required
    - `email` string, required
  - `feedback` RequirementCheckFeedbackResponse[]
    - `id` string, uuid, required
    - `feedback_type` 'compliance_inaccurate' | 'answer_inaccurate' | 'inherent_risk_inaccurate' | 'controls_inaccurate' | 'control_strength_inaccurate' | 'other', required
    - `note` string, nullable
    - `created_by_user_id` string, uuid, nullable
    - `created_at` string, date-time, required
  - `check_type` 'REQUIREMENT' | 'RISK_FACTOR' — Discriminator for the evidence_requirement_checks polymorphic hierarchy.
  - `inherent_risk_question` union
    - FreeResponseQuestion
      - `question` string, required
      - `additional_context` string, nullable
      - `score_compliance` boolean
      - `question_id` string, required
      - `type` 'free'
    - MultipleChoiceQuestion
      - `question` string, required
      - `options` string[], required
      - `additional_context` string, nullable
      - `score_compliance` boolean
      - `question_id` string, required
      - `type` 'multiple'
    - ChooseOneQuestion
      - `question` string, required
      - `options` string[], required
      - `additional_context` string, nullable
      - `score_compliance` boolean
      - `question_id` string, required
      - `type` 'one'
  - `inherent_risk_answer` union
    - QuestionnaireAnswerChoiceAnswer
      - `question` string, required
      - `options` string[], nullable
      - `type` 'free' | 'one' | 'multiple', required
      - `answer` ChoiceAnswerOutput[], required
        - `choice` string, required
        - `explanation` string
        - `citations` BackendModelsPydanticDraftingCitation[], required
          - `type` string, required
          - `cited_text` string, required
          - `document_index` integer, required
          - `document_title` string, required
          - `end_page_number` integer, required
          - `start_page_number` integer, required
        - `conflicting` boolean
      - `compliant` 'compliant' | 'non_compliant' | 'partially_compliant' | 'not_applicable'
      - `vendor_answer` QuestionnaireVendorAnswer
        - `answer` string
        - `choices` string[], nullable
        - `notes` string, nullable
      - `label` string, nullable
    - QuestionnaireAnswerFreeAnswer
      - `question` string, required
      - `options` string[], nullable
      - `type` 'free' | 'one' | 'multiple', required
      - `answer` FreeAnswerOutput[], required
        - `answer` string, required
        - `citations` BackendModelsPydanticDraftingCitation[], required
          - `type` string, required
          - `cited_text` string, required
          - `document_index` integer, required
          - `document_title` string, required
          - `end_page_number` integer, required
          - `start_page_number` integer, required
      - `compliant` 'compliant' | 'non_compliant' | 'partially_compliant' | 'not_applicable'
      - `vendor_answer` QuestionnaireVendorAnswer
        - `answer` string
        - `choices` string[], nullable
        - `notes` string, nullable
      - `label` string, nullable
  - `suggested_inherent_risk_label` string, uuid, nullable
  - `suggested_inherent_risk_rationale` string, nullable
  - `suggested_control_strength_label` string, nullable
  - `suggested_control_strength_rationale` string, nullable
  - `manual_inherent_risk_label` string, uuid, nullable
  - `manual_control_strength_label` string, nullable
  - `agent_run_id` string, uuid, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/kobaltlabs/apis/fastapi.md) · [All operations](https://skmtc.dev/kobaltlabs/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kobaltlabs/fastapi/revisions/3ff4c0bd276b/schema)
