# Export to a spreadsheet or BI

Every number in the dashboard can leave it in two ways: a **Download** button that saves a CSV of the table you are looking at, or an **API** your own systems call with the Site's server key. Both carry identifiers, counts, verdicts and agent names with how we know them. They never carry typed content, cookies or request values.

Verdicts are categories, not probabilities, and Unknown is never counted as human, in every file below.

## Downloads from the dashboard

Each screen's Download gives the table on screen, for the period you chose, with every row: a long list is never cut at the rows the screen shows. Times are ISO 8601 in UTC, and days end at midnight UTC. A named agent always comes with a **How we know** column (Verified, Unconfirmed or Self-reported).

When a file covers less than you asked for, its last row says so, with Note in the first column. Pages & journeys covers only the days the site still keeps activity for (90 days unless changed in Settings › Data & privacy), so a longer period starts at the first whole day kept. People are read from the sessions the site keeps (8 days), whatever period you choose. An agent minute counts once per session and minute: a minute in which someone signed in counts once, under the account your server confirmed.

| Where | Button | What you get |
| --- | --- | --- |
| Accounts › All accounts | Download CSV | One row per customer: name, plan, agent minutes, share of activity, change against the previous period, top agent with how we know, agents seen, first agent use. Visitors not signed in come last. |
| Accounts › All accounts | Download minute-by-minute data (all kept days) | Every agent minute with its account, agent name and how we know. Raw data for your own analysis. |
| Accounts › Pricing | Download estimate (CSV) | The estimate for the chosen model and prices, per account. It is an estimate: nothing is charged. |
| Accounts › People | Download CSV | One row per user your server identified: sessions, agent sessions and agents used. |
| Understand › Journeys | Download CSV | Pages with their agent share. |
| Control › Approvals › History › Recent checks | Download CSV | Every check in the period, all pages, with the rule at the time. |
| Control › Rules › Incident timeline | Download CSV, Download JSONL | The filtered timeline, with a SHA-256 manifest from the API. |
| Your agent report › Download | HTML, CSV | The monthly or weekly report, printable or as rows. A change against the previous period is shown only when the site still keeps that whole period for the number; otherwise it reads "can't compare" and the CSV has a comparable row saying no. Weeks the site no longer keeps are blank, never 0. |
| Settings › Audit log | Download CSV | Who changed what and when, for the workspace or one site. |

The same files come from the dashboard's own API on the loopback address, for scripts that run on the same machine: `GET /api/admin/export?site=<siteId>&view=accounts|pricing|people|pages&days=28` (a screen's table), `GET /api/admin/export?site=<siteId>&type=agent-minutes&days=28` (minute-by-minute data), `GET /api/admin/checks?site=<siteId>&format=csv`, `GET /api/admin/incident-export?site=<siteId>&format=csv|jsonl|json|manifest`, `GET /api/admin/report.csv` and `GET /api/admin/audit-export`. They need a signed-in dashboard session and are not reachable from outside this machine.

## APIs for your warehouse or BI tool

These read endpoints use the Site's server key (`Authorization: Bearer ao_sk_...`) and return JSON. Call them from your backend or a scheduled job, never from a browser.

| Endpoint | What it returns | Good for |
| --- | --- | --- |
| `GET /api/v1/activity.json` | Activity minutes per verdict (human, agent, unknown, mixed; a mixed minute is one in which the activity carried more than one verdict, for example when the verdict changed during that minute; it is never split or counted as human) and daily sessions by verdict at last activity, in UTC days or ISO weeks. | Trend charts. |
| `GET /api/v1/agent-usage.json` | Agent tool uses and agent minutes per account and agent type for a period, with the agents seen and how we know each. | Billing and account reports. |

Without from and to, activity.json and agent-usage.json cover the dashboard's "last 7 days": 7 whole UTC days ending with today, from midnight UTC six days ago to the next midnight UTC (the response's window says so). The agent_usage.summary webhook covers the same days, so its totals match the Charge › Usage page. Dates must be real calendar dates: 2026-09-31 is refused, not read as October 1.
| `GET /api/v1/decisions.json` | Checks with their decision, verdict and rule, newest first, filtered by period (from and to as epoch ms or ISO 8601 dates), action, decision, verdict, account, user or session. Paged: limit (1–1000, default 500), then follow page.nextCursor as cursor until it is null; page.total counts every match. | Security reviews. |
| `GET /api/v1/integration-status` | Server key use, check outcomes, webhook health and whether the site has gone quiet. | Monitoring your installation. |

[Server API and recovery](/docs/server) describes each response field, and the [API explorer](/docs/api-explorer) shows each request as curl to run from your server. For a push instead of a pull, [webhooks](/docs/webhooks) send held and denied actions, alert rules and the weekly agent report as they happen, and [usage metering](/docs/usage-metering) explains how to reconcile agent usage with your own ledger.

## Tips for spreadsheets

- Use the ISO date columns; the epoch-millisecond columns are for code.
- Keep the How we know column next to the agent name. An Unconfirmed name is named from something its tool leaves on the page: the AI agent verdict doesn't depend on it, but the name could be faked.
- Treat Unknown as its own group. Never add it to Human.
