---
title: "Read the raw answers of one engine"
method: GET
path: "/trackers/{id}/responses"
tags: ["Results"]
---

# Read the raw answers of one engine

`GET /trackers/{id}/responses`

## Request

- Base URL: `https://api.epovest.com/v1`
- URL: `https://api.epovest.com/v1/trackers/{id}/responses`
- Auth: HTTP bearer

The answers that succeeded, in surveys that completed. Each one carries the text the engine
wrote, the sources it cited, `uncited_sources`, the pages it read to write the answer, and
`searched`, whether it went to the web (`null` when undetermined, for answers measured before
the field existed).

## Query parameters

- `engine` 'chatgpt' | 'claude' | 'gemini' | 'perplexity' | 'mistral' | 'grok', required: The AI assistants the questions are asked to.
- `q` string
- `question` string
- `survey` string, uuid
- `tone` 'positive' | 'neutral' | 'negative'
- `include` 'raw'
- `page` integer
- `per_page` integer

## Response `200`

One page of answers.

- object
  - `responses` EngineResponse[], required
    - `id` string, uuid, required
    - `survey_id` string, uuid, required
    - `period_start` string, date, required
    - `on_demand` boolean, required
    - `panel_version` integer, required
    - `engine` 'chatgpt' | 'claude' | 'gemini' | 'perplexity' | 'mistral' | 'grok', required: The AI assistants the questions are asked to.
    - `question` string, required
    - `repetition` integer, required
    - `model` string, nullable, required
    - `responded_at` string, date-time, nullable, required
    - `response_text` string, nullable, required
    - `searched` boolean, nullable, required: Whether the engine went to the web to write the answer. Null when undetermined, for answers measured before the field existed.
    - `sources` ResponseSource[], required: The pages the engine cited.
      - `url` string, required
      - `domain` string, required
      - `position` integer, nullable, required
    - `uncited_sources` ResponseSource[], required: The pages the engine read to write the answer without citing them.
      - `url` string, required
      - `domain` string, required
      - `position` integer, nullable, required
    - `mentions` ResponseMention[], required
      - `keyword` string, required
      - `rank` integer, nullable, required
      - `linked` boolean, required
      - `sentiment` 'positive' | 'neutral' | 'negative', required
    - `raw_response` unknown
  - `pagination` Pagination, required
    - `page` integer, required
    - `per_page` integer, required
    - `total` integer, required
    - `pages` integer, required

## Other responses

- `400`: `bad_request`: malformed body or parameter; the message says what.
- `401`: `unauthenticated`: missing, unknown or revoked key.
- `403`: `insufficient_scope`: the credential may not do this, either because the key lacks the scope, or, on a one-click connection, because the person lacks the role the action needs (manager, or owner to start, pause and top up). On that path, read it as "this person may not do this" and tell them which role the action needs.
- `404`: `not_found`: unknown for this account.
- `429`: `rate_limited`: 120 requests per minute per credential, sliding window. Retry after `Retry-After` seconds.

---

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