Get a single response
The full single response (`MonitoringAnswer`) a light `GET /api/runs/{id}/` `responses[]` row drills down into — adds the full `answerText`, and optionally `answerHtml`.
/api/responses/{response_id}/Personal Access Token (create one from Settings -> API Keys in the dashboard). Send as Authorization: Bearer gr_live_.... An X-API-Key: gr_live_... header (see the apiKeyAuth scheme) is accepted as an equivalent alternative — send ONE of the two, not both.
In: header
Path Parameters
Query Parameters
true to also include the raw answerHtml field (omitted by default).
Response Body
application/json
curl -X GET "https://example.com/api/responses/0/"{ "id": "string", "promptId": "string", "runId": "string", "model": "string", "modelLabel": "string", "surface": "string", "mentioned": true, "sentiment": "string", "rank": 0, "sources": [ "string" ], "sampleCount": 0, "timestamp": "string", "answerText": "string", "answerHtml": "string"}Get what changed for a prompt vs its last run GET
Deterministic diff of this prompt's latest scored run against its predecessor: model-mention flips, rank shift, competitor appear/disappear, sentiment shift.
Get run detail GET
Run detail: a PAGE of responses (light shape — no `answerText`; drill into `GET /api/responses/{id}/` for the full text), plus whole-run aggregated competitors and sources. `responses[]` is paged with `?page=N&page_size=M` (default 200, max 500). Walk `responsesNext` until it is null to collect every response in the run; `responsesCount` is the run's full total. `competitors` and `sources` are aggregated over the ENTIRE run on every page, so they do not need to be accumulated across pages. For poll-loop use — just "is this run done yet" — call `GET /api/runs/{id}/status/` instead: same status fields, none of the per-answer work. A run stays hidden until it is either legacy or published (`published_at` set); an unpublished run 404s the same as a nonexistent one.