Reports
Generate on-demand PDF and CSV reports and save reusable report templates. All endpoints are authenticated with a Bearer JWT (see Authentication).
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/v1/reports/fleet-summary | Download a fleet summary (PDF) |
GET | /api/v1/reports/oee | Download an OEE report (CSV) |
GET | /api/v1/reports/maintenance | Download a maintenance report (CSV) |
GET | /api/v1/reports/downtime | Download a downtime report (CSV) |
GET | /api/v1/reports/work-orders | Download a work-orders report (CSV) |
GET | /api/v1/reports/templates | List saved report templates |
POST | /api/v1/reports/templates | Save a report template |
DELETE | /api/v1/reports/templates/{template_id} | Delete a report template |
Report downloads are subject to a small additional per-account rate limit on top of the standard limits (see Rate Limiting).
On-demand downloads
Each download accepts a days window and streams the file directly.
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
days | int | 30 | 1–365 | Number of days to include |
curl -o fleet-summary.pdf \
"https://api.haltless.io/api/v1/reports/fleet-summary?days=30" \
-H "Authorization: Bearer YOUR_TOKEN"
| Path | Format | Content type |
|---|---|---|
/api/v1/reports/fleet-summary | application/pdf | |
/api/v1/reports/oee | CSV | text/csv |
/api/v1/reports/maintenance | CSV | text/csv |
/api/v1/reports/downtime | CSV | text/csv |
/api/v1/reports/work-orders | CSV | text/csv |
Report templates
Save a report type, window, and format as a reusable template.
List templates
GET /api/v1/reports/templates
[
{
"id": "...",
"tenant_id": "...",
"created_by": "USER_UUID",
"name": "Monthly Fleet Review",
"report_type": "fleet",
"days": 30,
"format": "pdf",
"created_at": "2026-08-01T09:00:00Z"
}
]
Create a template
POST /api/v1/reports/templates
{
"name": "Monthly Fleet Review",
"report_type": "fleet",
"days": 30,
"format": "csv"
}
report_typeis one offleet,oee,maintenance,downtime, orwork_orders.formatispdforcsv(defaults tocsv).daysaccepts1–365(default30).
Returns 422 once the per-account template limit is reached.
Delete a template
DELETE /api/v1/reports/templates/{template_id}
Removes a saved template. Returns 404 if it does not exist.