---
title: "Move an answer request to a new status"
method: PATCH
path: "/api/questionnaires/{id}/requests/{requestId}/status"
tags: ["Questionnaire request"]
---

# Move an answer request to a new status

`PATCH /api/questionnaires/{id}/requests/{requestId}/status`

Drives the whole review lifecycle of a single answer request: the answering company submits with IN_REVIEW, and the questionnaire's owner starts the review, asks for changes or marks it complete. Only the owner may set anything other than IN_REVIEW; anyone who is neither the owner nor the company being asked gets 404 rather than 403, so the endpoint never confirms a request they cannot see. Submitting for review is refused with 422 while a compulsory question is unanswered — a check that applies to the answering company, not the owner. IN_REVIEW also moves every answer that has not already been approved or denied into review, and COMPLETED approves whatever is still under review. The answering or requesting company is notified by email depending on the direction of the move, and the questionnaire's progress statistics are recomputed asynchronously.

## Path parameters

- `id` string, required
- `requestId` string, required

## Request body

- object
  - `status` 'OPEN' | 'IN_REVIEW' | 'COMPLETED' | 'REQUEST_CHANGES' | 'DELETED', required

## Response `200`

Default Response

- object
  - `metadata` object, required
    - `success` boolean, required — True when the request succeeded.
  - `data` object, required
    - `id` string, required
    - `questionnaireId` string, required
    - `forCompanyId` string
    - `onBehalfOfCompanyId` string
    - `createdByCompanyId` string
    - `status` string
    - `statistics` object
      - `totalApprovedResponses` number
      - `totalInReviewResponses` number
      - `totalDeniedResponses` number
      - `totalMissingResponses` number
      - `totalResponses` number
      - `totalQuestions` number
      - `totalComments` number
      - `approvedResponsesPercentage` number
      - `inReviewResponsesPercentage` number
      - `deniedResponsesPercentage` number
      - `missingResponsesPercentage` number
      - `responsesPercentage` number
    - `isRemoved` number
    - `updatedByUserName` string
    - `updatedByUserId` string
    - `questionnaireName` string
    - `supplierConnected` boolean, required
    - `answeredByConnected` boolean, required

## Other responses

- `400` — Default Response
- `401` — Default Response
- `403` — Default Response
- `404` — Default Response
- `422` — Default Response

---

[API](https://skmtc.net/retraced/apis/api-reference.md) · [All operations](https://skmtc.net/retraced/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/retraced/api-reference/revisions/60d6c901bc4e/schema)
