Reporting: availability, SLA, performance and scheduled delivery
The six report types and their CSV/PDF exports, SLA targets and error budgets, custom reports with widgets, and scheduled reports delivered to a notification destination.
Reporting is on Pro and above. Every report is available in the app, as JSON, CSV or PDF from the API (?format=json|csv|pdf), and on a schedule to any notification destination.
Report types
| Report | Route | Contents |
|---|---|---|
| Availability | GET /api/v1/reports/availability | Uptime per monitor over the period, with downtime totals and the incidents that caused them. |
| Performance | GET /api/v1/reports/performance | Response-time distribution per monitor (percentiles, trend), and the anomalies recorded. |
| SLA | GET /api/v1/reports/sla | Availability against each SLA target, met/missed, and the remaining error budget for the period. |
| Incidents | GET /api/v1/reports/incidents (+ /export) | Every incident in the period: source, duration, acknowledge and resolve times. |
| Intelligence | GET /api/v1/reports/intelligence | Change events, anomalies and correlations, by monitor and category. |
| Monitor health | GET /api/v1/reports/monitor-health | Which monitors are noisy, flapping, misconfigured or never succeeded. |
SLA targets
An SLA target (/api/v1/sla-targets) pairs a set of monitors with an availability percentage and a period of daily, weekly, monthly or quarterly. The SLA report computes achieved availability per target and the error budget left in the current period, and the SLA calculator shows what a target means in minutes.
Custom reports
A custom report (/api/v1/custom-reports) is a named page of widgets — availability, performance, sla, incidents, intelligence, monitor_health — over a chosen period, with visibility of private, organization or shared (to shared_with_user_ids). Use one for the monthly ops review and another for a customer's QBR.
Scheduled reports
| Field | Values |
|---|---|
report_type | availability · performance · sla · incidents · intelligence · monitor_health · custom (with custom_report_id) |
frequency | daily · weekly (with day_of_week 0–6) · monthly · quarterly (with day_of_month 1–28) |
time_of_day, timezone | HH:MM in an IANA timezone, e.g. 08:00 / Europe/Berlin. |
destination_ids | Notification destinations that receive the scheduled_report event — an email destination for the client contact, a Slack channel for the team. |
enabled | Pause without deleting. next_run_at, last_run_at and last_status are read-only. |
curl -X POST https://api.pulsetrace.app/api/v1/scheduled-reports \
-H "Authorization: Bearer $PULSETRACE_API_KEY" -H "Content-Type: application/json" \
-d '{
"report_type": "sla",
"frequency": "monthly",
"day_of_month": 1,
"time_of_day": "07:00",
"timezone": "Europe/Berlin",
"destination_ids": ["…"],
"enabled": true
}'The cron builder is handy for reasoning about a schedule, but scheduled reports use the fields above rather than a cron expression.