observe

List execution traces — audit recent broker and workflow calls

Returns recent execution traces with status, capability id, toolkit, timestamp, and HTTP status. Use GET /traces/{trace_id} for step-level detail.

get/traces

Query parameters

limitinteger

Maximum number of traces to return (1-500)

Maximum number of traces to return (1-500)

offsetinteger

Number of traces to skip for pagination

Number of traces to skip for pagination

toolkit_idstring nullable

Filter by toolkit id (exact match)

Filter by toolkit id (exact match)

agent_idstring nullable

Filter by agent client_id (exact match). Admin-only signal.

Filter by agent client_id (exact match). Admin-only signal.

api_idstring nullable

Filter by upstream API. Exact match against the api_id column on executions, which is the catalog-form apis.id (e.g. stripe.com, github.com). Indexed; use this in preference to scanning operation_id substrings.

Filter by upstream API. Exact match against the api_id column on executions, which is the catalog-form apis.id (e.g. stripe.com, github.com). Indexed; use this in preference to scanning operation_id substrings.

statusstring nullable

Filter by trace status (success | failed | pending)

Filter by trace status (success | failed | pending)

sincenumber nullable

Lower bound on created_at (unix seconds, inclusive)

Lower bound on created_at (unix seconds, inclusive)

untilnumber nullable

Upper bound on created_at (unix seconds, exclusive)

Upper bound on created_at (unix seconds, exclusive)

capability_idstring nullable

Filter by exact capability id. Matches operation_id for broker calls or workflow_id for workflow runs.

Filter by exact capability id. Matches operation_id for broker calls or workflow_id for workflow runs.

qstring nullable

Free-text substring match (case-insensitive) over the columns the Monitor row renders: operation_id, workflow_id, api_id, agent_id. Empty/whitespace strings are treated as not set so the no-filter plan stays cheap. Note: none of these columns are indexed for prefix lookups, so q always implies a scan over the rows the tenant + time-window clauses already select — fine for the Monitor page (range capped to 24h by default) but don't use it as a general-purpose search.

Free-text substring match (case-insensitive) over the columns the Monitor row renders: operation_id, workflow_id, api_id, agent_id. Empty/whitespace strings are treated as not set so the no-filter plan stays cheap. Note: none of these columns are indexed for prefix lookups, so q always implies a scan over the rows the tenant + time-window clauses already select — fine for the Monitor page (range capped to 24h by default) but don't use it as a general-purpose search.

Response

Successful Response

totalinteger required

Total number of traces matching the query

limitinteger required

Maximum traces returned in this response

offsetinteger required

Starting offset for pagination (0-indexed)

Example response

{
  "total": 247,
  "limit": 50,
  "traces": []
}

Changes