---
title: "Record a research request's answer"
method: POST
path: "/v1/research-requests/{id}/answer"
---

# Record a research request's answer

`POST /v1/research-requests/{id}/answer`

## Request

- Base URL: `https://api.ploti.ai`
- URL: `https://api.ploti.ai/v1/research-requests/{id}/answer`
- Auth: HTTP bearer

Record the answer you found yourself for a research request, once you have run the analysis on Ploti's data. This closes the request: Ploti shows your answer on the request, says you gave it, and does not run its own research on it. Data requests already filed for it still deliver their datasets. Record it when you have answered the user's question, whether all the data was there or you answered with what was; write the answer as the user should read it later in Ploti, with the figures and the datasets it rests on. Pass the id of the session you did the analysis in, so the checkpoints, tables and files you saved there show on the request beside your answer. The request's owner is told in their Ploti inbox, by email when another member's assistant answered, and on their webhooks, which receive the answer. Refused while Ploti's own research run is answering it already.

## Path parameters

- `id` string, required

## Request body

- object
  - `answer` string, required: Your answer to the question, written in Markdown for the user to read on the request in Ploti, with the figures and datasets it rests on.
  - `sessionId` string: The id start_session returned for the session you ran the analysis in; its checkpoints, tables and files then show on the request beside the answer. Left out, the answer is recorded on its own.

## Response `200`

Done

- object
  - `request` object, required
    - `id` string, required
    - `title` string, required
    - `status` 'checking' | 'needs_answer' | 'report_ready' | 'data_requested' | 'researching' | 'complete', required
    - `statusText` string, required
    - `links` object, required
      - `view` string, required

## Other responses

- `401`: The credential is missing or not valid.
- `413`: payload_too_large: the body is over 256 KB (2 MB for /v1/tools).
- `415`: unsupported_media_type: a body was sent without Content-Type: application/json.
- `429`: rate_limited: this credential is over its rate. Retry after the Retry-After header's seconds.
- `500`: internal: Ploti failed. Retry; if it keeps happening, contact support.
- `default`: Refused: nothing was done. The code says why and the links say where the person acts on it.

---

[API](https://skmtc.dev/ploti/apis/ploti-api.md) · [All operations](https://skmtc.dev/ploti/apis/ploti-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ploti/apis/ploti-api/revisions/8c2c91c72d52?raw)
