Skip to main content
Every number in a monitor report comes from scored answers you can open. This page covers the read endpoints that show them: which sources are cited, how citations move over time, the answer behind one score, one prompt in detail, answers per location, and the full export. They read stored results only, so they cost nothing.

Which sources are cited

GET /v1/monitors/{id}/sources (reference) ranks the domains or pages the engines cited, using the same window and filters as the report. It counts distinct answers, not raw citations: a page cited three times in one answer counts once.
For example:
Rows are ordered by citations, then key. nextCursor is null on the last page; there is no top-N cut, so every cited domain or page in the window is reachable. Treat the cursor as opaque.

Citations over time

GET /v1/monitors/{id}/citations (reference) returns the data behind the dashboard’s citation charts: totals for the window, a daily series, and the top 20 domains and pages, each with its own daily series.
Here a citation is one page in one answer, so citations counts cited pages, not answers. /sources counts distinct answers, so its numbers can differ. kind is owned for your domains; other kinds come from a fixed list of known publishers, and anything unknown is other. A source’s share is its citations divided by totals.citations. kind, q and offset narrow only domains, pages and pagination; totals, days and types always cover every source in the window.

Read one answer

GET /v1/monitors/{id}/answers/{taskId} (reference) returns the stored answer behind one score, with what it was matched against, so a mention can be checked rather than trusted. Task ids come from evidenceTaskId, mentionTaskId and latestTaskId in a report, from /sources, and from exported rows.
For example:
A task id that is not a scored answer of this monitor returns 404 NOT_FOUND.

One prompt in detail

GET /v1/monitors/{id}/prompt (reference) returns one prompt’s data. prompt (exact text) is required, and works for prompts you have since removed from the monitor; days is 7, 30 (default) or 90.
Here citations counts cited pages across answers, not distinct answers. For a full, paginated source list for one prompt, use /sources?prompt=....

Answers by location

GET /v1/monitors/{id}/grid (reference) returns a monitor’s answers per point of its current location or grid. Optional engine (one of the monitor’s engines) and prompt narrow it; days is 7, 30 (default) or 90. The response has location, grid, engine, prompt, windowDays and points. Each point has row, col, location, runs, mentioned, cited, topCompetitor ({ name, mentions } or null) and latest ({ taskId, engine, mentioned, ranAt } of the newest answer, or null). Answers are matched to points by their exact coordinates, so answers from an earlier location or grid of the same monitor are left out. A monitor without a location or grid returns no points.

Export scored answers

GET /v1/monitors/{id}/results (reference) returns the scored answers themselves, for a warehouse load, a spreadsheet or a deck. To deliver every new answer to cloud storage on a schedule instead, see Result exports.
The JSON response, for example:
Rows are newest first. Pagination is a keyset over ranAt (microsecond precision) and row id, so rows that share a timestamp are never skipped or repeated. For a repeatable extraction, send an explicit since and until, keep them fixed, and follow nextCursor until it is null. Changing the window between pages can skip or repeat rows. Treat the cursor as opaque.

CSV

With format=csv the response is text/csv, UTF-8 with a byte order mark so spreadsheet apps open it correctly. A CSV body cannot carry pagination, so it moves to headers: Columns are ran_at, monitor, engine, prompt, mentioned, cited, position, competitors, task_id, plus answer_text, sources, scoring_context with includeEvidence=true. competitors joins names with |; sources and scoring_context hold JSON text. A cell that starts with =, +, -, @, a tab or a carriage return is prefixed with ', so engine text cannot become a spreadsheet formula.

Errors and limits

Invalid parameters return 400 VALIDATION_ERROR naming the problem, including a cursor that was not returned by the previous page. A monitor of another account, or an unknown task id, returns 404 NOT_FOUND. See Monitors for the shared codes.

Next steps

Events and alerts

Get a webhook when a prompt’s answers change.

Result exports

Deliver scored answers to your own storage on a schedule.