FruxonDocs
AgentsExecution Records

Lists execution sessions for an agent — one item per spawn tree, newest activity first.

The grouped counterpart of the flat list: each item is a whole session (a root run plus every sub-task and consult descending from it) collapsed to its root, carrying the same rollups the `/tree` endpoint computes — run count, failures, combined cost, wall-clock span. A session of one is just a run that spawned nothing. Filters apply at the run level and lift to the session: a session is returned when ANY of its runs matches, and `matchedRuns` reports how many did — so filtering by a tool error surfaces the whole session containing the hit, with its root for context. Rollups always cover the whole session regardless of the filter. Pagination counts sessions, not runs.

GET
/v1/tenants/{tenant}/agents/{agent}/executionRecords/sessions
AuthorizationBearer <token>

JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.

In: header

Path Parameters

agent*string

The unique identifier of the agent.

tenant*string

The tenant identifier

Query Parameters

PageSize?integer

The maximum number of items to return per page

Formatint32
PageToken.Skip?integer
Formatint32
PageToken.Cursor?string

Opaque cursor token from an external system (e.g. RAG API). When set, M:Fruxon.Common.Collections.PageToken.AsString returns this value directly instead of encoding Fruxon.Common.Collections.PageToken.Skip.

StartTime?integer

Filter start time (Unix timestamp in milliseconds, inclusive). Omit to return records from any start time.

Formatint64
EndTime?integer

Filter end time (Unix timestamp in milliseconds, inclusive). Omit to return records up to the current time.

Formatint64
Environment?string

Filter by environment slug. Omit to return records from all environments.

Status?array<AgentExecutionRecordStatus>

Filter by execution status. Repeat the query parameter (e.g. ?status=Completed&status=Failed) to match any of the provided statuses. Omit to return records in any status.

AgentRevision?array<integer>

Filter by agent revision number. Repeat the query parameter (e.g. ?agentRevision=1&agentRevision=2) to match any of the provided revisions. Omit to return records across all revisions.

Origin?string

Filter by execution origin. Defaults to Fruxon.Model.AgentSessions.ExecutionOrigin.Production so monitoring dashboards see live traffic by default — test-origin executions (draft-test runs) only show up when explicitly requested via ?origin=Test. This matches the convention used by the cost / budget / model-usage endpoints.

Value in"UNSPECIFIED" | "PRODUCTION" | "TEST"
TriggerId?string

Filter by trigger id — Fruxon.Model.ExecutionTraces.AgentExecutionRecord.TriggerId. Powers the Trigger detail "Recent Executions" card. Matches connector and scheduler fires; never matches API or sample-generation runs (which have null TriggerId).

SessionId?string

Filter by session id — Fruxon.Model.ExecutionTraces.AgentExecutionRecord.SessionId. Powers conversation-scoped views ("everything that ran in this conversation").

ParentExecutionRecordId?string

Filter to the runs spawned by a specific execution — Fruxon.Model.ExecutionTraces.AgentExecutionRecord.ParentExecutionRecordId. The list-endpoint equivalent of the dedicated /children route, usable in combination with the other filters (status, time window, run type) that /children does not accept.

Formatuuid
ParentAsyncOperationId?string

Filter to the runs produced by one specific spawning call — Fruxon.Model.ExecutionTraces.AgentExecutionRecord.ParentAsyncOperationId. This is the step-level counterpart to Fruxon.Model.ExecutionTraces.ExecutionRecordsFilter.ParentExecutionRecordId: a parent that spawned three batches has three operations, and this narrows to the children of exactly one of them. Pairs with Fruxon.Model.ExecutionTraces.ToolTrace.AsyncOperationId on the step that dispatched it.

Formatuuid
RootExecutionId?string

Filter to every run in one spawn tree — Fruxon.Model.ExecutionTraces.AgentExecutionRecord.RootExecutionId. One hop from every node in the tree (unlike the parent id, which only reaches direct children), so this is the filter that answers "everything that ran for this request". Backed by the (RootExecutionId, TenantId, CreatedAt) index. For the assembled tree with per-node rollups, prefer the /tree endpoint.

Formatuuid
RunType?array<ExecutionRunType>

Filter by spawn-tree role — Fruxon.Model.ExecutionTraces.AgentExecutionRecord.RunType. Repeat the query parameter (e.g. ?runType=SUB_TASK&runType=CONSULT) to match any of the listed types. Lets a caller separate top-level runs from the delegated work they fanned out, which the trigger-type filter cannot express — a spawned child carries no trigger source and so reads as Fruxon.Model.ExecutionTraces.ExecutionTriggerType.Api.

ParticipantId?array<string>

Filter by resolved participant id — Fruxon.Model.ExecutionTraces.AgentExecutionRecord.ParticipantId. Powers the Participant detail "Recent Executions" card and the Executions-tab participant filter. Repeat the query parameter (e.g. ?participantId={a}&participantId={b}) to match executions resolved to any of the listed participants. Only matches connector-sourced runs where the inbound message resolved to a participant before fan-out.

TriggerFireAttemptId?string

Filter by the Fruxon.Model.Triggers.TriggerFireAttempt.Id that produced the run — Fruxon.Model.ExecutionTraces.AgentExecutionRecord.TriggerFireAttemptId. Powers the Events-tab "View N traces" drill-down: scopes results to the exact executions a single inbound delivery produced, not the full history of the trigger. Matches nothing for API, sample, connector-only runs, or any execution that predates the column.

Formatuuid
Tools?array<string>

Filter to executions that invoked specific tools. Each entry is a tool key in the same integrationId.toolId form the tool-usage rollup emits (e.g. slack.send_message; built-ins have no integration prefix, e.g. web_search). Repeat the query parameter (e.g. ?tools=slack.send_message&tools=web_search) to match executions that used any of the listed tools. Backed by the denormalized Fruxon.Model.ExecutionTraces.AgentExecutionToolUsage projection, so it only sees executions the tool-usage projection job has already processed (a ~1-minute lag on the newest runs — the same lag the Tool usage card shows).

WithToolErrors?boolean

When true, narrows the match to executions where the tool(s) errored. Combine with Fruxon.Model.ExecutionTraces.ExecutionRecordsFilter.Tools for "executions where tool X failed" (the Tool usage card's error drill-down), or use it alone for "executions where any tool failed". Like Fruxon.Model.ExecutionTraces.ExecutionRecordsFilter.Tools, resolved against the Fruxon.Model.ExecutionTraces.AgentExecutionToolUsage projection.

HasToolCalls?boolean

When true, matches executions that invoked at least one tool (any tool) — i.e. excludes pure-LLM runs. Redundant when Fruxon.Model.ExecutionTraces.ExecutionRecordsFilter.Tools or Fruxon.Model.ExecutionTraces.ExecutionRecordsFilter.WithToolErrors is set (those already imply a tool invocation).

TriggerType?array<ExecutionTriggerType>

Filter by source / trigger type. Repeat the query parameter (e.g. ?triggerType=Connector&triggerType=Scheduler) to match any of the listed types. The user-facing source types are Fruxon.Model.ExecutionTraces.ExecutionTriggerType.Api (API call), Fruxon.Model.ExecutionTraces.ExecutionTriggerType.Scheduler (scheduled), Fruxon.Model.ExecutionTraces.ExecutionTriggerType.Connector (a messaging connector) and Fruxon.Model.ExecutionTraces.ExecutionTriggerType.CollectionItem (a pipeline per-item run). Pipeline runs are hidden from the default list but opted in by listing Fruxon.Model.ExecutionTraces.ExecutionTriggerType.CollectionItem here; the cost-only bookkeeping types (sample-generation, relevance-check, document-enrichment) stay excluded regardless of this filter.

TriggerProvider?array<string>

Filter by connector provider — Fruxon.Model.ExecutionTraces.AgentExecutionRecord.TriggerProvider (e.g. telegram, slack). Repeat the query parameter to match any of the listed providers. Only connector-sourced runs carry a provider, so API / scheduler runs never match.

MinDurationMs?integer

Filter to executions whose wall-clock duration (end − start, in milliseconds) is at least this value. In-flight runs (no end time) count as zero duration and are excluded by any positive minimum.

Formatint64
MaxDurationMs?integer

Filter to executions whose wall-clock duration (end − start, in milliseconds) is at most this value.

Formatint64
count?boolean

When true, also computes the total number of matching sessions and returns it in totalCount. Opt-in so the default per-page scroll skips the COUNT.

Defaultfalse

Response Body

curl -X GET "https://api.fruxon.com/v1/tenants/string/agents/string/executionRecords/sessions"
{
  "items": [
    {
      "root": {
        "id": "00000000-0000-0000-0000-000000000000",
        "agentId": "string",
        "agentRevision": 0,
        "remoteAgentRevision": "string",
        "startTime": 0,
        "endTime": null,
        "status": "UNSPECIFIED",
        "deliveryStatus": "UNSPECIFIED",
        "inputTokens": 0,
        "outputTokens": 0,
        "cachedTokens": 0,
        "cacheWriteTokens": 0,
        "webSearchCalls": 0,
        "hasResult": false,
        "hasTrace": false,
        "isSample": false,
        "trigger": null,
        "destinations": null,
        "environmentSlug": "string",
        "networkId": null,
        "createdAt": 0,
        "tenantId": "00000000-0000-0000-0000-000000000000",
        "parentExecutionRecordId": null,
        "parentAgentId": "string",
        "parentSubject": "string",
        "parentAsyncOperationId": null,
        "rootExecutionId": null,
        "runType": "UNSPECIFIED",
        "subject": "string",
        "inputCost": null,
        "outputCost": null,
        "cachedCost": null,
        "cacheWriteCost": null,
        "thinkingCost": null,
        "webSearchCost": null,
        "totalCost": null,
        "creditsCharged": 0,
        "waitingFor": null,
        "relevanceOutcome": null,
        "relevanceReason": "string",
        "groupParticipantId": null,
        "wasAddressed": null,
        "rejectionReason": null,
        "rejectionDetail": "string",
        "rejectionAttemptCount": 0
      },
      "totals": {
        "runs": 0,
        "failed": 0,
        "cost": 0,
        "credits": 0,
        "elapsedMs": null
      },
      "matchedRuns": 0
    }
  ],
  "nextPageToken": "string",
  "totalCount": 0
}
Empty
Empty
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}