---
title: "Get a research request"
method: GET
path: "/v1/research-requests/{id}"
---

# Get a research request

`GET /v1/research-requests/{id}`

## Request

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

A research request's progress: whether its data check is still running or waits on the user's answers to its questions (status needs_answer), its report (what Ploti already has, with each dataset's id, what is missing, how much of the question the data covers), the data requests filed for the missing pieces and how far each has got, and once it is answered, the answer. When the data the question needs is in Ploti, run the analysis yourself with find_data and execute_python on those datasets, then record your answer with answer_research_request.

## Path parameters

- `id` string, required

## 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
  - `checkRunning` boolean, required
  - `questionsTitle` string, nullable, required
  - `questions` object[], required: What the data check asks the user while the status is needs_answer: ask the user, then send their answers with answer_research_request_questions.
    - `id` string, required
    - `prompt` string, required
    - `options` object[], required
      - `id` string, required
      - `label` string, required
    - `allowMultiple` boolean, required
  - `report` object, nullable, required
    - `summary` string, required
    - `coveragePercent` number, required
    - `available` object[], required
      - `name` string, required
      - `datasetId` string, nullable, required
      - `reason` string, required
    - `gaps` object[], required
      - `title` string, required
      - `description` string, required
      - `filed` boolean, required
      - `declined` string, nullable, required
  - `dataRequests` object[], required
    - `id` string, required
    - `title` string, required
    - `status` string, nullable, required
    - `needsAnswer` boolean, required
    - `links` object, required
      - `view` string, required
  - `answer` string, nullable, required
  - `answeredBy` string, nullable, required: The assistant that answered it; null when Ploti's own research run did.
  - `completedAt` string, nullable, 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)
