Lists execution records for an agent.
Returns a paginated list of all executions, ordered by most recent first. Optionally filter by time range using the `startTime` and `endTime` query parameters.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The unique identifier of the agent.
The tenant identifier
Query Parameters
The maximum number of items to return per page
int32int32Opaque 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.
Sort order (AIP-132 orderBy); defaults to most recent first.
Filter start time (Unix timestamp in milliseconds, inclusive). Omit to return records from any start time.
int64Filter end time (Unix timestamp in milliseconds, inclusive). Omit to return records up to the current time.
int64Filter by environment slug. Omit to return records from all environments.
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.
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.
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.
"UNSPECIFIED" | "PRODUCTION" | "TEST"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).
Filter by session id — Fruxon.Model.ExecutionTraces.AgentExecutionRecord.SessionId. Powers conversation-scoped views ("everything that ran in this conversation").
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.
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.
uuidFilter 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).
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.
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).
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.
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.
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.
int64Filter to executions whose wall-clock duration (end − start, in milliseconds) is at most
this value.
int64When true, also computes the total number of matching records (across all
pages) and returns it in totalCount. Opt-in so the default per-page scroll skips the COUNT.
falseResponse Body
curl -X GET "https://api.fruxon.com/v1/tenants/string/agents/string/executionRecords"{
"items": [
{
"id": "00000000-0000-0000-0000-000000000000",
"agentId": "string",
"agentRevision": 0,
"remoteAgentRevision": "string",
"startTime": 0,
"endTime": 0,
"status": "IN_PROGRESS",
"deliveryStatus": "NOT_APPLICABLE",
"inputTokens": 0,
"outputTokens": 0,
"cachedTokens": 0,
"cacheWriteTokens": 0,
"webSearchCalls": 0,
"hasResult": false,
"hasTrace": false,
"isSample": false,
"trigger": {
"type": "UNSPECIFIED",
"id": "string",
"provider": "string",
"triggerFireAttemptId": null,
"participantId": null,
"displayName": "string",
"participantDisplayName": "string",
"participantKind": null,
"participantAvatarFileId": "string",
"pipelineId": null
},
"destinations": [],
"environmentSlug": "string",
"networkId": "00000000-0000-0000-0000-000000000000",
"createdAt": 0,
"tenantId": "00000000-0000-0000-0000-000000000000",
"parentExecutionRecordId": "00000000-0000-0000-0000-000000000000",
"rootExecutionId": "00000000-0000-0000-0000-000000000000",
"inputCost": 0,
"outputCost": 0,
"cachedCost": 0,
"cacheWriteCost": 0,
"thinkingCost": 0,
"webSearchCost": 0,
"totalCost": 0,
"waitingFor": {
"kind": "string",
"participantId": null,
"displayName": "string",
"participantKind": null,
"avatarFileId": "string",
"topicId": null,
"approvalRequestId": null,
"approvers": null
},
"relevanceOutcome": "RESPOND",
"relevanceReason": "string",
"groupParticipantId": "00000000-0000-0000-0000-000000000000",
"wasAddressed": false
}
],
"nextPageToken": "string",
"totalCount": 0
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}Gets per-environment execution summaries for an agent.
Returns aggregated execution count, total cost, and last activity time for each environment that has execution records for this agent. Pass `?include=trends` to also populate week-over-week deltas (current 7-day window vs. prior 7-day window).
Adds an execution to one or more evaluation datasets as a sample
Snapshots the execution's inputs and outputs into each target dataset as an `EvaluationSample`, tagged with the supplied free-form tags. Use this to curate real-traffic examples into golden sets, regression suites, or labeled pools that feed evaluation runs. Re-adding the same execution to a dataset creates a new sample row rather than upserting, so callers that want at-most-once semantics should dedupe via `GET .../executionRecords/{executionRecord}/samples` first.