Skip to main content
Seven endpoints for analytics and reporting. All public.

GET /api/loft/analytics/timeseries

Query time-series data for an interface.
Query ParamTypeDefaultDescription
interfaceIdstringFilter to specific interface
sinceISO 860124h agoStart time
untilISO 8601NowEnd time
granularitystring"oneHour"oneMinute, oneHour, oneDay
metricstring"messagesTotal"messagesTotal, messagesFailed, messagesSuccessful
curl
curl "https://api.pidgeon.health/api/loft/analytics/timeseries?interfaceId=intf-001&granularity=oneHour&since=2026-02-22T00:00:00Z"

GET /api/loft/analytics/topn

Get top N interfaces ranked by a metric.
Query ParamTypeDefaultDescription
metricstring"messagesTotal"Metric to rank by
nint10Number of results
sinceISO 860124h agoStart time
curl
curl "https://api.pidgeon.health/api/loft/analytics/topn?metric=messagesFailed&n=5"

POST /api/loft/analytics/query

Custom filter query with advanced criteria.
curl
curl -X POST https://api.pidgeon.health/api/loft/analytics/query \
  -H "Content-Type: application/json" \
  -d '{"filters": {"interfaceId": "intf-001", "severity": "critical"}, "since": "2026-02-20T00:00:00Z"}'

GET /api/loft/analytics/dashboards/

Get pre-built dashboard data.
curl
curl "https://api.pidgeon.health/api/loft/analytics/dashboards/overview?since=2026-02-15T00:00:00Z"

POST /api/loft/analytics/reports/schedule

Schedule a recurring report.
curl
curl -X POST https://api.pidgeon.health/api/loft/analytics/reports/schedule \
  -H "Content-Type: application/json" \
  -d '{"frequency": "daily", "format": "html", "recipients": ["[email protected]"]}'

POST /api/loft/analytics/reports/generate

Generate a report immediately.
curl
curl -X POST https://api.pidgeon.health/api/loft/analytics/reports/generate \
  -H "Content-Type: application/json" \
  -d '{"format": "html", "since": "2026-02-15T00:00:00Z"}'

GET /api/loft/analytics/export/csv

Export analytics data as CSV.
Query ParamTypeDefaultDescription
interfaceIdstringInterface to export
sinceISO 860124h agoStart time
untilISO 8601NowEnd time
granularitystring"oneHour"Data resolution
metricstring"messagesTotal"Metric to export
curl
curl "https://api.pidgeon.health/api/loft/analytics/export/csv?interfaceId=intf-001&granularity=oneDay" \
  -o metrics.csv