List runs
Every agent and flow run in the span store, newest start first, including runs that write no control-plane row. The UNSCOPED feed is ROOT runs only: a subagent or nested-flow run folds under its parent, childCount says how many are folded there, and parentExecutionId=<id> reads them. Pass includeChildren=true for the flat enumeration. Any resource-scoped filter (agentId, flowId, conversationId, surfaceId, recordId, batchExecutionId, parentExecutionId, rootExecutionId, executionId) is already an explicit selection and never folds, so an agent that only ever runs as a subagent still lists under agentId. Each row carries origin (dashboard | api | internal | null), read from the caller’s authenticated principal, and test as its derived alias for origin === "dashboard"; any entrance that resolves a principal stamps origin, including the Runtype MCP server tools and Code Mode (api) and the hosted /v1/mcp proxy (internal). A lane with no principal answers null for both by design: schedule, webhook, messaging, A2A, an agent exposed as an MCP surface, subagent, nested flow, a client-token product surface, an ingested run, and any row whose header predates the field. overlay=live adds live control-plane fields; the overlay never adds, drops or reorders a row. A cursor minted by the retired control-plane list lane (cp. prefix) restarts at page one and answers pagination.cursorReset: true. includeCount=true adds pagination.totalCount, counted up to 1000, and pagination.totalCountCapped. Each row carries via (schedule | surface | api | mcp | cli | test | eval, with the id and name of the thing that started it) where the entrance stated it; null otherwise.
Authentication
Query parameters
Filter by agent id; repeat for a set.
Filter by flow id; repeat for a set.
Filter by batch id; repeat for a set.
true restores the flat enumeration on the UNSCOPED feed, in which a subagent run and a nested-flow run list beside their parent. The unscoped feed is roots only by default: a row whose parentExecutionId is set folds under its parent and is read with parentExecutionId=<executionId>. Any filter that scopes to a resource — agentId, flowId, conversationId, surfaceId, recordId, batchExecutionId, parentExecutionId, rootExecutionId or executionId — is already an explicit selection and never folds, so an agent that only ever runs as a subagent still lists under agentId. This parameter changes nothing on a scoped request.
Read specific runs by id; at most 100 per request.
Window start (ISO 8601). Defaults to 24 hours ago.
Window end (ISO 8601). Defaults to now.
full (the default) returns every field. compact omits exactly these 15: stopReason, iterations, inputPreview, agentVersionId, agentVersionLabel, agentVersionNumber, agentTargetResolution, otelProducer, lastHeartbeatAt, expiresAt, cancelRequestedAt, progress, pendingApproval, budgetExhausted and inputMessages. The status is still overlay-corrected on a compact page; only the fields differ.
live adds control-plane fields; defaults to live for a session, none for an API key.
“true” adds pagination.totalCount and pagination.totalCountCapped: the number of runs matching this request’s filters within its window, ignoring the cursor and limit, counted up to 1000. Past that the count stops at 1000 and totalCountCapped is true, so read it as “more than 1000”. Omitted, or any other value, the response carries neither field.
Response
The started_at window the query resolved to, after defaults.