Query the event stream
Returns paginated events with filtering by type, category, tenant, scope, and time range. This is the canonical event log — all events that triggered (or would have triggered) webhooks are queryable here.
USE CASES: - Debug why a webhook fired (or didn't fire) - Reconstruct event history for a scope - Build custom integrations without webhooks (poll-based) - Audit trail supplement (events are more granular than audit logs)
RETENTION: - Same as audit log retention (recommended: 90 days hot, 1 year cold).
Authorizations
Administrative API key with full system access. Also accepted as an alternative to ApiKeyAuth on an explicit per-operation allowlist — the authoritative list is the union of operations whose security: block declares AdminKeyAuth (consult per-operation security blocks rather than this prose, which has historically drifted as the dual-auth surface expanded). When using AdminKeyAuth on list or fund endpoints, a tenant scoping parameter (typically tenant or tenant_id) is required for scoping (400 if missing) — the per-operation description specifies which. Lookup-style endpoints that uniquely identify a resource by non-tenant key (e.g. GET /v1/admin/budgets/lookup, where the (scope, unit) pair is unique) do NOT require a tenant parameter. Allowlisting is per-operation (exact method:path matching — no prefix matching, no wildcards) so new endpoints do not accidentally inherit admin-accessible status.
Parameters
Query Parameters
Filter by specific event type
"budget.created""budget.updated""budget.funded""budget.debited""budget.reset""budget.reset_spent""budget.debt_repaid""budget.frozen""budget.unfrozen""budget.closed""budget.threshold_crossed""budget.exhausted""budget.over_limit_entered""budget.over_limit_exited""budget.debt_incurred""budget.burn_rate_anomaly""reservation.denied""reservation.denial_rate_spike""reservation.expired""reservation.expiry_rate_spike""reservation.commit_overage""tenant.created""tenant.updated""tenant.suspended""tenant.reactivated""tenant.closed""tenant.settings_changed""webhook.created""webhook.updated""webhook.paused""webhook.resumed""webhook.disabled""webhook.deleted""api_key.created""api_key.revoked""api_key.expired""api_key.permissions_changed""api_key.auth_failed""api_key.auth_failure_rate_spike""policy.created""policy.updated""policy.deleted""system.store_connection_lost""system.store_connection_restored""system.high_latency""system.webhook_delivery_failed""system.webhook_test"Filter by event category
"budget""tenant""api_key""policy""reservation""system""webhook"Filter by scope path (prefix match)
Filter by correlation ID to find related events
Filter by exact trace_id. 32 lowercase hex characters (W3C Trace Context trace-id). Narrows the event stream to events belonging to a single logical operation (may span multiple HTTP requests, so typically yields MORE rows than a request_id filter). When combined with other filters, AND-composed. Additive parameter — servers that don't recognize it MUST ignore without error (additive-parameter guarantee). See CORRELATION AND TRACING in cycles-protocol-v0.yaml.
"^[0-9a-f]{32}$"Filter by exact request_id. Narrows the event stream to events emitted as side effects of a single HTTP request. When combined with other filters, AND-composed. Complements trace_id for debug scenarios like "show me all events emitted by this specific API call" (e.g., the fan-out from a bulk-action endpoint). Additive parameter — servers that don't recognize it MUST ignore without error (additive-parameter guarantee).
"date-time""date-time"Free-text case-insensitive substring match. Matches across: correlation_id, scope. Combined with other filter params using AND semantics. Additive parameter — servers that don't recognize it MUST ignore without error (additive-parameter guarantee). Empty string MUST be treated as absent. Max length 128 characters; longer values MUST be rejected with HTTP 400.
128Sort key. When provided, results are returned in the requested order and the returned cursor encodes the sort key so "Load more" continues in sort order. When omitted, servers use their existing default ordering. Servers that don't recognize the parameter MUST ignore it without error (additive-parameter guarantee).
"event_type""category""scope""tenant_id""timestamp""timestamp"Sort direction. Default descending.
"asc""desc""desc"110050Responses
Event list