Skip to content

Aggregate invocation metrics

GET
/v1/analytics
curl --request GET \
--url 'https://example.com/v1/analytics?group_by=agent_id&bucket=hour&since=2026-04-15T12%3A00%3A00Z' \
--header 'Authorization: Bearer <token>'

Aggregates the tenant’s invocations by agent_id and a time bucket (spec 0003). Carries its own tighter per-caller rate limit than the global limiter, since percentile aggregation is heavier than a row fetch.

group_by
string
Allowed values: agent_id

Only agent_id is supported in v1; an explicit other value is rejected.

bucket
string
default: hour
Allowed values: hour day
since
required
string format: date-time

RFC 3339 timestamp; required.

until
string format: date-time

RFC 3339 timestamp; defaults to now. The [since, until] window is capped at 31 days.

Aggregated metrics.

Media typeapplication/json
object
range
required
object
since
required
string format: date-time
until
required
string format: date-time
bucket
required
string
Allowed values: hour day
groups
required
Array<object>
object
agent_id
required
string
bucket_start
required
string format: date-time
count
required
integer
error_rate
required

Error_count / count, in [0,1].

number
by_error_class
required
object
key
additional properties
integer
latency_ms
required
object
p50
required
integer format: int64
nullable
p95
required
integer format: int64
nullable
p99
required
integer format: int64
nullable
ttft_ms
required
object
p50
required
integer format: int64
nullable
p95
required
integer format: int64
nullable
p99
required
integer format: int64
nullable
Example
{
"bucket": "hour"
}

Missing/invalid since/until, an unsupported group_by/bucket, since after until, or a range exceeding 31 days.

Media typeapplication/json

The uniform error body for all 4xx responses that carry one.

object
error
required

A coarse, caller-safe message. Never contains internal state (invariant

string
Examplegenerated
{
"error": "example"
}

Missing or invalid bearer token, or the token’s tenant/user claims are absent. No body.

The endpoint’s tighter per-caller rate limit was exceeded.

Media typeapplication/json

The uniform error body for all 4xx responses that carry one.

object
error
required

A coarse, caller-safe message. Never contains internal state (invariant

string
Examplegenerated
{
"error": "example"
}
Retry-After
integer

Seconds until the next token is available (capped at 60).

An unexpected server-side error. No body (internal detail is never returned to callers, invariant