Skip to navigation

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

AuthorizationBearer
API key or Clerk session token

Query parameters

agentIdstring or list of stringsOptional

Filter by agent id; repeat for a set.

flowIdstring or list of stringsOptional

Filter by flow id; repeat for a set.

conversationIdstringOptional
Filter by conversation id.
surfaceIdstringOptional
Filter by surface id.
surfaceTypestringOptional
Filter by surface family.
recordIdstringOptional
Filter by record id.
batchExecutionIdstring or list of stringsOptional

Filter by batch id; repeat for a set.

parentExecutionIdstringOptional
Runs spawned by this execution.
rootExecutionIdstringOptional
Runs in this execution tree.
includeChildrenenumOptional

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.

Allowed values:
executionIdstring or list of stringsOptional

Read specific runs by id; at most 100 per request.

sourceenumOptional
Filter by producing lane.
Allowed values:
statusenumOptional
status accepts only running, completed or failed. queued, awaiting and cancelled exist only in the live overlay, which may never change which rows a page holds, so the server cannot filter on them.
Allowed values:
fromstringOptional

Window start (ISO 8601). Defaults to 24 hours ago.

tostringOptional

Window end (ISO 8601). Defaults to now.

viewenumOptional

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.

Allowed values:
overlayenumOptional

live adds control-plane fields; defaults to live for a session, none for an API key.

Allowed values:
limitstringOptional
Page size, at most 100.
cursorstringOptional
Keyset cursor from a previous page.
includeCountstringOptional

“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

Runs returned
datalist of objects
paginationobject
windowobject

The started_at window the query resolved to, after defaults.

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
500
Internal Server Error