API documentation
Overview
The ShiftPlanner REST API allows you to display your shifts on your own website or integrate them into your application. You can query shifts with the same filters available on the All shifts.
The API returns JSON and uses token-based authentication. Each request must include your API token in the request header. Tokens are only available with Premium accounts and can be can be found here.
Authentication
Every request must include an Authorization header with a Bearer token:
Requests without a valid token receive a 401 Unauthorized response:
To request an API token, contact ShiftPlanner support.
Shifts endpoint
Returns a paginated list of shifts for your account. Without filters, the next 12 months of shifts are returned.
Filter parameters
All filter parameters are optional and can be combined freely. Use commas for multiple values, e.g. group_ids=5,2.
group_idsmonthsyears2026.weeksdayslocation_idsdaydate_fromdate_to for a range, even one that spans a year boundary. Can also be used alone for an open end.date_topublishedpublished=false to also include shifts that are not yet published.months and years are combined per calendar year and therefore cannot return a range that spans a year boundary
(e.g. December 2026 through January 2027). Use date_from and date_to for that.
weeks uses the ISO week number and correctly handles weeks that span a year boundary
(e.g. week 53 only returns the days that actually belong to that ISO week, even when some of them fall in January of the next year).
If weeks or days is used without years, results include every matching year but are limited to today onward (no past shifts);
add years to also include past occurrences.
Sort order
Results are sorted according to the shift sort order configured in your account settings. The default order is by date and time. When configured to sort by group, results are ordered by date, group name, then time.
Pagination parameters
pageper_pageResponse format
The response is JSON with a shifts array and a meta object for pagination.
Field reference
iddatestart_time / end_timeend_datedate for single-day shifts.grouplocationnull if no location is set.personnull if the shift is open.publish_dateremarksstarredtrue if the shift is starred/highlighted.cancelledtrue if the shift has been cancelled.noshowtrue if the assigned person did not show up.Examples
All upcoming shifts (default)
Shifts for a specific month and year
Shifts for a specific group
Shifts for multiple groups
Shifts on a single date
Shifts for a range spanning a year boundary
Paging through results
JavaScript (fetch)
Error responses
200 OK400 Bad Requestdate_from or date_to (expected format: YYYY-MM-DD).401 Unauthorized404 Not Found