API Reference
Reports Endpoint
Trigger ad-hoc reports + download scheduled report PDFs.
POST /api/v1/reports/run
Run a report ad-hoc. JSON inline if you want the raw data, or a download URL if you want the PDF. Scope: read:reports.
POST /api/v1/reports/run
{
"type": "weekly_health",
"server_id": 4,
"from": "2026-04-18T00:00:00Z",
"to": "2026-04-25T00:00:00Z",
"format": "json" // or "pdf" for a downloadable URL
}
GET /api/v1/reports
List previously generated scheduled reports. Scope: read:reports.
GET /api/v1/reports/:id/download
Download a specific report as PDF. Scope: read:reports.
POST /api/v1/reports/schedules
Create a recurring report. Cron syntax for the schedule, IANA timezone, and any number of delivery channels (email or Slack). Scope: admin:reports.
{
"name": "Weekly health check",
"type": "weekly_health",
"server_id": 4,
"schedule": "0 9 * * 1",
"timezone": "Europe/Berlin",
"delivery": {
"channels": ["email:[email protected]", "slack:C123ABC"]
}
}
The Slack channel ID is the C-prefixed one from your workspace, not the human-readable name. We don't auto-resolve names because Slack workspace name uniqueness isn't guaranteed across the API.