GET /v1/observability returns one snapshot of a date range: how many sessions ran, how they ended, how fast the agent answered and what it cost. It is what the dashboard’s Observability page charts. For one call at full resolution, use calls.
Parameters
A range over seven days is a
400 (date range cannot exceed 7 days); so is start_date after end_date. Query each week separately to compare weeks.
There is no granularity parameter: a single-day range returns 24 hourly buckets (future hours as zeroes); anything wider returns daily buckets. range.granularity says which. Every series is zero-filled across every bucket.
Response
Each
volume breakdown is {series, other_count}; each series has a stable key, label, total and points.
Each breakdown keeps the eight largest series; the rest are summed into one series keyed
__other__, and other_count says how many values it holds.
Reading the numbers correctly
pending_sessions are still being priced and resolve themselves. unpriceable_sessions are sessions billing could not price; the reason is in cost.unpriceable_reasons.
Agent task runs are not sessions and do not appear here; their cost is on the task’s runs. There is no per-turn, tool-call or webhook-delivery metric here; open the call instead.
In the dashboard
Observability has Today, Yesterday and 7-day presets, a date picker that cannot exceed seven days, and agent and channel filters.Calls
One call: transcript, tool calls, latency, cost.
Debugging agents
Symptom-first playbook.