---
title: "Save answers to one questionnaire answer request"
method: POST
path: "/api/questionnaires/requests/{requestId}/responses"
tags: ["Questionnaire Responses"]
---

# Save answers to one questionnaire answer request

`POST /api/questionnaires/requests/{requestId}/responses`

Writes a batch of answers against a single answer request — the write behind every answer a supplier saves, the "not available" toggle, the bulk auto-fill from the company profile and the SLCP prefill. Only the company the request was addressed to may write to it; anyone else gets 404 `request_not_found`, so the existence of another company's request is never confirmed. A missing question answers 404 `question_not_found`, and an answer that fails its Retraced datapoint answers 400 `invalid_answer_for_datapoint`. On a CERTIFICATE question a newly linked certificate must be the one its option asks for — linking a certificate recorded against a different standard answers 400 `certificate_does_not_match_option`, naming both standards and what to do. Only pairings the request *introduces* are checked: one already stored is left alone, so a rule added after the fact can never stop a supplier saving. The check also only fires when the option and the certificate are both known and disagree, so an option this question does not have, an option carrying no standard, or a missing certificate all pass. Every answer is validated before any is written, so a batch containing one bad answer stores nothing; past that point the batch is not transactional, and an answer that fails after earlier ones have committed leaves those in place. Re-answering the same question **updates** the stored answer rather than adding a second one, keeping its id and any reviewer verdict, so re-submitting is a silent no-op by design. Answers omitting `status` default to `IN_REVIEW`. Answers to photo, video and audit questions also register their uploaded files and move them into private storage. An answer that links an audit or a document also grants the brand that issued the request read access to it, so an asset the supplier picked from its existing ones is visible to the brand on the supplier profile — previously only assets *created* through the questionnaire were shared, and a linked one was reachable inside the questionnaire but nowhere else. Only assets genuinely belonging to the company the request is about can be shared this way, and the grant never fails the answer: a share that errors is logged and retried by the next save. Responds 201 with an empty body.

## Path parameters

- `requestId` string, required

## Request body

- object
  - `verificationMeta` object, nullable
    - `id` string
    - `name` string
    - `issuedOn` string
    - `version` string
  - `payload` object[], required
    - `questionId` string, required
    - `answer` union, required
      - string
      - number
      - unknown[]
        - unknown
      - object
      - unknown
    - `isNotAvailable` integer, required
    - `status` 'APPROVED' | 'DENIED' | 'IN_REVIEW' | 'NOT_SUBMITTED'
    - `autoAnswered` boolean

## Response `201`

No content

- 'null', nullable — No content

## Other responses

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

## Changes

> 45 revisions in range; 1 not diffed.

- **2026-08-31** `97e51f27dc77` — 4 breaking, 8 info
  - removed `subschema #1, subschema #2` from the `verificationMeta` request property `anyOf` list
  - request property `payload/items/answer/anyOf[subschema #5]/` was restricted to a list of enum values
  - the `payload/items/answer/anyOf[subschema #5]/` request property type changed from `null` to `string`
  - the `verificationMeta` request property type changed from no type to `object`
  - …8 more
- **2026-08-20** `2f11192a4402` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/retraced/apis/api-reference/changes/api/questionnaires/requests/:requestId/responses/post.md)

---

[API](https://skmtc.dev/retraced/apis/api-reference.md) · [All operations](https://skmtc.dev/retraced/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc.dev/retraced/apis/api-reference/revisions/1045637f5ec0?raw)
