---
title: "Test Classify Requirement Check"
method: POST
path: "/tuning/requirement-checks/{requirement_id}/test-classify"
tags: ["tuning"]
---

# Test Classify Requirement Check

`POST /tuning/requirement-checks/{requirement_id}/test-classify`

## Path parameters

- `requirement_id` string, uuid, required

## Request body

- TestClassifyRequest
  - `question_override` string, nullable
  - `criteria_override` string, nullable
  - `choices_override` string[], nullable
  - `inherent_risk_question_override` string, nullable
  - `inherent_risk_criteria_override` string, nullable

## Response `200`

Successful Response

- TestClassifyResult
  - `requirement_id` string, uuid, required
  - `check_type` 'REQUIREMENT' | 'RISK_FACTOR' — Discriminator for the evidence_requirement_checks polymorphic hierarchy.
  - `input_tokens` integer, required
  - `output_tokens` integer, required
  - `check_label` string, nullable
  - `thinking_text` string
  - `test_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
  - `inherent_risk` TestClassifySide — One re-classified side of a risk-factor test (inherent risk or control strength).
    - `label` string, nullable
    - `rationale` string
    - `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
  - `control_strength` TestClassifySide — One re-classified side of a risk-factor test (inherent risk or control strength).
    - `label` string, nullable
    - `rationale` string
    - `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
  - `steps` StepView[]
    - `step_id` string, uuid, required
    - `ordinal` integer, required
    - `kind` 'thinking' | 'tool_call' | 'verdict', required — One `agent_run_steps` row per unit of agent activity. VERDICT is a terminal `submit_*` step (the risk-factor subagent's rating, or a control-assessment's check label + answer); the research agent only emits THINKING/TOOL_CALL rows. A tool declares its own kind via `AgentTool.step_kind`, so the loop knows it before the row is written.
    - `group_id` string, uuid, required
    - `tool_use_id` string, nullable, required
    - `tool_name` string, nullable, required
    - `input` object, nullable, required
    - `content` string, nullable, required
    - `result_preview` unknown, required
    - `result_state` 'ok' | 'empty' | 'error' | 'timeout', required — Outcome of a TOOL_CALL step. NULL on the row means still in flight. EMPTY is distinct from ERROR: a tool that ran successfully and found nothing (e.g. an empty web search) is not a failure.
    - `result_summary` string, nullable, required
    - `result_bytes` integer, nullable, required
    - `model` string, nullable, required
    - `input_tokens` integer, nullable, required
    - `output_tokens` integer, nullable, required
    - `started_at` string, date-time, nullable, required
    - `duration_ms` integer, nullable, required
    - `cited_in_verdict` boolean
    - `risk_factor_id` string, uuid, 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/425d5b8a3c17/schema)
