List completed evaluations, newest first.
Cursor-paginated: read a page, then pass its next_cursor back as cursor.
next_cursor is null on the final page. Every filter below AND-composes.
latest_per_session=true collapses the page to one row per session — that
session’s most recent evaluation — which is what the sessions list shows.
Without it you get the full evaluation history, so a re-evaluated session
appears more than once.
Authorizations
A scoped AgentEye API key. Mint one in the dashboard under Settings → API keys, or with POST /v1/keys. Each endpoint names the permission it requires; a key without it gets 403 and a required_permission field naming what was missing.
Query Parameters
Exact session id.
Exact agent id.
Comma-separated environments.
One of done, error, timeout. Anything else is a 400.
RFC 3339 lower bound on completed_at (inclusive).
RFC 3339 upper bound on completed_at (inclusive).
Opaque cursor from the previous page.
Default 50, capped at 200 — asking for more silently gets you 200.
Comma-separated key:min..max ranges over the top-level numeric scores keys. Either bound may be omitted: factuality:0.9.., cost:..0.3. At most 20 entries; more is a 400. Entries that do not parse are dropped silently.
Same grammar and 20-entry cap as score_filters, but matched against the nested magnitude metrics at scores.metrics.<key> (cost, latency, tokens).
Return only the most recent evaluation per session. Default false.
Response
A page of evaluations plus next_cursor.

