---
title: "Answer the domain's questions about a report"
method: POST
path: "/api/v1/replays/{id}/answers"
tags: ["Replays"]
---

# Answer the domain's questions about a report

`POST /api/v1/replays/{id}/answers`

## Request

- Base URL: `https://session-replay.com`
- URL: `https://session-replay.com/api/v1/replays/{id}/answers`
- Auth: none declared

What the reporter answered to the questions the domain's owner asks, posted after the report they belong to rather than with it - the panel asks them once the share link is already on screen. Two ways to be allowed: anonymously, with the replay id in the path AND the extension id the report was filed with, both matching the stored report; or signed in, as the report's own submitter. The share token is not a key here - it exists to be forwarded. A report filed through the integration library carries no extension id, so it can only be answered by a signed-in submitter. Posting again replaces the previous answers, so a retry is harmless. Every refusal of the poster is the same 404, whatever was wrong. The whole request may not exceed 64 KB; one that does, or one that declares no length, is refused with 413 and the error code 'answers_too_large'.

## Path parameters

- `id` string, required

## Request body

- object
  - `extension_id` string: The installation that filed the report. Required unless signed in as its submitter.
  - `answers` object[], required: In the order the questions were asked. A question that was skipped is left out rather than sent empty - an entry with no values stores no row. Required: leaving it out is refused rather than read as an empty list, so a retry whose body was truncated cannot erase what was already stored. An explicit empty list does clear them, which is how an answer is taken back.
    - `site_question_id` string, nullable: The question answered. Null on the generic question, and kept only when it still names a question this domain asks - a question removed since leaves the answer readable and drops the link.
    - `question_text` string, required: The question as it was put to the reporter. Stored on the answer, so an owner rewriting a question does not change what an older report appears to have been asked.
    - `value` union, required: The answer. A list for checkboxes, and either a list or a bare string for the types that take one.
      - string[]
      - string

## Response `200`

answers stored, replacing anything posted before

## Other responses

- `404`: not this report's to answer - or no such report, which answers the same way
- `413`: answers larger than the size ceiling
- `422`: a body that is not a set of answers - no answers list at all, an entry that is not an answer, a value that is not text, or more answers than a domain is allowed to ask for

---

[API](https://skmtc.dev/session-replay/apis/session-replay-api.md) · [All operations](https://skmtc.dev/session-replay/apis/session-replay-api/llms.txt) · [OpenAPI document](https://skmtc.dev/session-replay/apis/session-replay-api/revisions/120e5613bf95?raw)
