Analytics
Endpoints:
GET /api/v1/analytics/overviewGET /api/v1/analytics/time-series
Required scope: analytics:read
Query parameters
| Parameter | Type | Description |
|---|---|---|
qrCodeId |
UUID, optional | Restrict the result to one QR campaign. |
fromUtc |
ISO 8601 UTC, optional | Start of the reporting window. Defaults to 30 days before toUtc. |
toUtc |
ISO 8601 UTC, optional | End of the reporting window. Defaults to now. |
granularity |
Auto, Hour, or Day |
Time-series endpoint only. Auto uses hourly buckets for up to seven days and daily buckets for longer ranges. |
The maximum reporting window is 366 days, and the end date cannot be in the future.
The response includes total scans, privacy-preserving unique scans, daily time-series points, and breakdowns for countries, cities, devices, operating systems, browsers, and traffic sources. Unique scans are estimates based on privacy-preserving visitor signals—not permanent visitor identities.
The time-series endpoint reads pre-aggregated workspace or per-campaign buckets. Explicit hourly requests are limited to 31 days and daily requests to five years. The response reports isEventuallyConsistent: true because durable scan events are projected asynchronously through RabbitMQ. A Static QR response reports isTracked: false and contains no points; Static QR pixels do not route through QRalto, so a scan count would be misleading.