---
title: "Update Service Ira Response"
method: PUT
path: "/reviews/{review_id}/service-ira/task/{task_id}/response"
tags: ["reviews"]
---

# Update Service Ira Response

`PUT /reviews/{review_id}/service-ira/task/{task_id}/response`

## Request

- Base URL: `https://api.kobaltlabs.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.kobaltlabs.com/reviews/{review_id}/service-ira/task/{task_id}/response`
- Auth: none declared

Reviewer edit of a submitted IRA response. Unlike the recipient-facing
PUT /forms/response/{id}, this is allowed after submission (internal
reviewers only) and appends to form_response_versions, an append-only audit
log where each row is a complete authored state and the newest row mirrors
the live answers.

## Path parameters

- `review_id` string, uuid, required
- `task_id` string, uuid, required

## Request body

- UpdateFormResponseRequest
  - `response` FormAnswerInput[], required
    - `question_id` string, required
    - `answers` ChoiceAnswerInput[], required
      - `choice` string, required
      - `explanation` string
      - `citations` CitationInput[], 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

## Response `200`

Successful Response

- ServiceIRAReviewTaskResponse
  - `task_id` string, uuid, required
  - `review_id` string, uuid, required
  - `task_type` 'service_ira' | 'service_form' | 'vendor_ira' | 'evidence_packet_review' | 'evidence_review' | 'review_reporting' | 'review_metadata', required
  - `status` 'pending' | 'completed', required
  - `created` string, date-time, nullable
  - `modified` string, date-time, nullable
  - `service_id` string, uuid, required
  - `service_name` string, required
  - `starting_inherent_risk` string, uuid, nullable
  - `starting_inherent_risk_label` string, nullable
  - `suggested_inherent_risk` string, uuid, nullable
  - `suggested_inherent_risk_label` string, nullable
  - `set_inherent_risk` string, uuid, nullable
  - `set_inherent_risk_label` string, nullable
  - `inherent_risk_rationale` string, nullable
  - `starting_service_criticality` string, uuid, nullable
  - `starting_service_criticality_label` string, nullable
  - `suggested_service_criticality` string, uuid, nullable
  - `suggested_service_criticality_label` string, nullable
  - `set_service_criticality` string, uuid, nullable
  - `set_service_criticality_label` string, nullable
  - `service_criticality_rationale` string, nullable
  - `form_id` string, uuid, nullable
  - `form_response_id` string, uuid, nullable
  - `active_form_response_id` string, uuid, nullable
  - `form_status` 'WAITING_FOR_RESPONSE' | 'SUBMITTED' | 'CANCELED'
  - `form_recipient_user_id` string, uuid, nullable
  - `form_recipient_email` string, nullable
  - `form_recipient_name` string, nullable
  - `due_date` string, date-time, nullable
  - `overdue_last_notified_at` string, date-time, nullable
  - `form_changes_requested_at` string, date-time, nullable
  - `agent_run_id` string, uuid, nullable
  - `agent_run_status` 'pending' | 'running' | 'completed' | 'failed'
  - `run_id` string, uuid, nullable
  - `run_status` 'archived' | 'available' | 'deleted' | 'pending' | 'failed'
  - `custom_field_changeset` CustomFieldsChangeset
    - `before` CustomFieldWithValueOutput[], required
      - `definition` union, required
        - CustomFieldDropdownDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'DROPDOWN'
          - `options` CustomFieldOptionDefinition[]
            - `option_id` string, uuid, nullable
            - `label` string, nullable
            - `hex_color` string, nullable
            - `order_index` integer, nullable
        - CustomFieldFreeTextDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'FREE_TEXT'
        - CustomFieldNumberDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'NUMBER'
        - CustomFieldDateDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'DATE'
        - CustomFieldBooleanDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'BOOLEAN'
        - CustomFieldMultiselectDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'MULTISELECT'
          - `options` CustomFieldOptionDefinition[]
            - `option_id` string, uuid, nullable
            - `label` string, nullable
            - `hex_color` string, nullable
            - `order_index` integer, nullable
        - CustomFieldUserDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'USER'
        - CustomFieldMultiUserDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'MULTI_USER'
      - `value` union
        - CustomFieldDropdownValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'DROPDOWN'
          - `option_id` string, uuid, nullable
          - `label` string, nullable
          - `hex_color` string, nullable
          - `order_index` integer, nullable
        - CustomFieldFreeTextValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'FREE_TEXT'
          - `text_value` string, nullable
        - CustomFieldNumberValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'NUMBER'
          - `number_value` integer, nullable
        - CustomFieldDateValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'DATE'
          - `date_value` string, date, nullable
        - CustomFieldBooleanValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'BOOLEAN'
          - `boolean_value` boolean, nullable
        - CustomFieldMultiselectValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'MULTISELECT'
          - `selected_options` CustomFieldMultiselectOptionValue[]
            - `option_id` string, uuid, nullable
            - `label` string, nullable
            - `hex_color` string, nullable
            - `order_index` integer, nullable
        - CustomFieldUserValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'USER'
          - `user_id` string, uuid, nullable
          - `user_first_name` string, nullable
          - `user_last_name` string, nullable
          - `email_address` string, nullable
        - CustomFieldMultiUserValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'MULTI_USER'
          - `selected_users` CustomFieldUserRef[]
            - `user_id` string, uuid, nullable
            - `user_first_name` string, nullable
            - `user_last_name` string, nullable
            - `email_address` string, nullable
    - `after` CustomFieldWithValueOutput[], required
      - `definition` union, required
        - CustomFieldDropdownDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'DROPDOWN'
          - `options` CustomFieldOptionDefinition[]
            - `option_id` string, uuid, nullable
            - `label` string, nullable
            - `hex_color` string, nullable
            - `order_index` integer, nullable
        - CustomFieldFreeTextDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'FREE_TEXT'
        - CustomFieldNumberDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'NUMBER'
        - CustomFieldDateDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'DATE'
        - CustomFieldBooleanDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'BOOLEAN'
        - CustomFieldMultiselectDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'MULTISELECT'
          - `options` CustomFieldOptionDefinition[]
            - `option_id` string, uuid, nullable
            - `label` string, nullable
            - `hex_color` string, nullable
            - `order_index` integer, nullable
        - CustomFieldUserDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'USER'
        - CustomFieldMultiUserDefinition
          - `custom_field_id` string, uuid, nullable
          - `name` string, nullable
          - `description` string, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `entity_type` 'VENDOR' | 'CANONICAL' | 'SERVICE' | 'ISSUE' | 'DISCLOSURE' | 'CONTRACT' | 'CONTACT'
          - `order_index` integer, nullable
          - `archived_at` string, date-time, nullable
          - `custom_field_definition_type` 'MULTI_USER'
      - `value` union
        - CustomFieldDropdownValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'DROPDOWN'
          - `option_id` string, uuid, nullable
          - `label` string, nullable
          - `hex_color` string, nullable
          - `order_index` integer, nullable
        - CustomFieldFreeTextValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'FREE_TEXT'
          - `text_value` string, nullable
        - CustomFieldNumberValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'NUMBER'
          - `number_value` integer, nullable
        - CustomFieldDateValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'DATE'
          - `date_value` string, date, nullable
        - CustomFieldBooleanValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'BOOLEAN'
          - `boolean_value` boolean, nullable
        - CustomFieldMultiselectValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'MULTISELECT'
          - `selected_options` CustomFieldMultiselectOptionValue[]
            - `option_id` string, uuid, nullable
            - `label` string, nullable
            - `hex_color` string, nullable
            - `order_index` integer, nullable
        - CustomFieldUserValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'USER'
          - `user_id` string, uuid, nullable
          - `user_first_name` string, nullable
          - `user_last_name` string, nullable
          - `email_address` string, nullable
        - CustomFieldMultiUserValue
          - `custom_field_id` string, uuid, nullable
          - `custom_field_type` 'INHERENT_RISK_LEVEL' | 'RESIDUAL_RISK_LEVEL' | 'CRITICALITY' | 'LIFECYCLE_STATUS'
          - `name` string, nullable
          - `type` 'MULTI_USER'
          - `selected_users` CustomFieldUserRef[]
            - `user_id` string, uuid, nullable
            - `user_first_name` string, nullable
            - `user_last_name` string, nullable
            - `email_address` string, nullable
  - `answers_stale` boolean
  - `ira_template_configured` boolean

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-08** `9fe2fb8a3631`: 16 info
  - added the optional property `custom_field_changeset/anyOf[subschema #1: CustomFieldsChangeset]/after/items/definition/anyOf[subschema #1: CustomFieldDropdownDefinition]/archived_at` to the response with the `200` status
  - added the optional property `custom_field_changeset/anyOf[subschema #1: CustomFieldsChangeset]/after/items/definition/anyOf[subschema #2: CustomFieldFreeTextDefinition]/archived_at` to the response with the `200` status
  - added the optional property `custom_field_changeset/anyOf[subschema #1: CustomFieldsChangeset]/after/items/definition/anyOf[subschema #3: CustomFieldNumberDefinition]/archived_at` to the response with the `200` status
  - added the optional property `custom_field_changeset/anyOf[subschema #1: CustomFieldsChangeset]/after/items/definition/anyOf[subschema #4: CustomFieldDateDefinition]/archived_at` to the response with the `200` status
  - …12 more

[Operation history](https://skmtc.dev/kobaltlabs/apis/fastapi/changes/reviews/:review_id/service-ira/task/:task_id/response/put.md)

---

[API](https://skmtc.dev/kobaltlabs/apis/fastapi.md) - [All operations](https://skmtc.dev/kobaltlabs/apis/fastapi/llms.txt) - [OpenAPI document](https://skmtc.dev/kobaltlabs/apis/fastapi/revisions/8587332d5e43?raw)
