Warning: This endpoint will soon be deprecated and replaced with Datasets - Get Data from Dataset.
Generates an ad-hoc employee report based on a caller-specified list of fields and optional filters. Returns report data in the requested format (JSON, XML, CSV, XLS, or PDF). The report includes all employees regardless of status (both Active and Inactive), unlike the BambooHR UI which filters to Active employees by default.
The request body may be submitted as JSON or XML. To submit JSON, set Content-Type: application/json exactly — any variation such as application/json; charset=UTF-8 is not recognised as JSON and the body will be parsed as XML instead, which typically results in 400 Malformed XML. To submit XML, set Content-Type to any other value; the body must be a <report> document as described in the XML request body schema.
The format query parameter is case-insensitive (json, JSON, Json are all accepted). If format is omitted, the output format is inferred from the Accept header, but only these exact values are supported: application/json, text/xml, text/csv, application/pdf, application/vnd.ms-excel. Any other Accept value (including application/xml and */*) will return 404.
Field IDs in the request that are unknown or that the caller does not have permission to view are silently omitted from the report — the endpoint still returns 200. The filters object supports lastChanged (ISO 8601 date-time to filter by last-modified date) and employeeIds (restrict results to specific employee IDs). The maximum number of fields per request is 400.
