Retrieve data from a Personio Custom Report via the Custom Reports API
domain: hr-payroll · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Confirm the Custom Reports Read scope is enabled on your API credential; this bypasses the Employee Data attribute whitelist entirely - any attribute added to the report is returned regardless of whitelisting
Call the GetReports endpoint to list available reports and check each report's status (up-to-date, updating, or update_failed) and its data_refreshed_at timestamp
Call GetColumns (optionally with ?locale=<2-letter code>) to map dynamic_ prefixed attribute IDs to human-readable column names
Call GetReportData with a report ID to retrieve rows as JSON; for large reports, wait until enough time has passed since data_refreshed_at before re-querying
For historical-data report types, match rows to employees via employee_id only - name fields are not included in that report type
Known gotchas
A report auto-archives after 60 days without being viewed or retrieved via API; reactivate it by opening and reloading it in the UI before it will update again
Custom Reports column data types can differ from the Employees endpoint's data types for the same underlying field
Creating or updating a report's definition is not supported via API - only GET is available
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?