Skip to content

Get timeseries data

GET
/api/v1/analytics/timeseries
curl --request GET \
--url 'https://dashboard.justcrawl.io/api/v1/analytics/timeseries?interval=5m' \
--header 'Authorization: Bearer <token>'

Bucketed time-series points for the dashboard chart — request count, success rate, and latency per bucket. Org-scoped, cached read.

The interval enum (5m / 15m / 30m / 1h / 6h / 1d) is the bucket width. Unsupported values return 400 — the bucketed cache only exists for these widths, by design (the analytics service pre-computes them on a fixed schedule). Empty array when the cache is cold.

Cache coverage — the analytics service pre-populates only these specific (hours, interval) pairs (defined in services/analytics/src/cache-pusher.ts, constant TIMESERIES_CONFIGS) — (1, 5m), (6, 15m), (24, 30m), (168, 6h), (720, 1d). Other combinations are accepted by the schema but return an empty array.

hours
integer

Lookback window in hours. Cache-populated values are 1, 6, 24, 168, and 720 — each paired with a specific interval per the description above.

interval
string
Allowed values: 5m 15m 30m 1h 6h 1d

Bucket width (default 1h). Must be the interval paired with hours in TIMESERIES_CONFIGS to return data.

Array of bucketed timeseries points.

Media type application/json
Array<object>
object
Example generated
[
{}
]

Validation failed — request body or query is missing/invalid

Media type application/json
object
error
string
Example
{
"error": "Missing or invalid \"url\" field"
}

Missing or invalid authentication token

Media type application/json
object
error
string
Example
{
"error": "Missing or invalid authentication token"
}

Insufficient permissions for this operation

Media type application/json
object
error
string
Example
{
"error": "No organization. Complete onboarding first."
}

Unexpected server error. Logs and PostHog $exception capture

Media type application/json
object
error
string
Example
{
"error": "Something went wrong"
}