Retrieve the worker shifts scheduled in a date range, with who is assigned to each one. Use it to show a schedule in another system or to sync shifts into a calendar.
| Method | URL | Package |
|---|---|---|
| GET | https://rental.software/api6/shifts_list | WP/API and Workers |
Before You Start
Which shifts are returned depends on the permissions of the API key. Open the key under Settings > API Keys and check these two permissions:
| Permission | What it allows |
|---|---|
| Worker Site Access Others Shifts | Needed to see the shifts of your workers. Set it to Read Only or Full Access |
| Worker Site Show Past Shifts | Needed to see shifts that ended more than 24 hours ago. Set it to Full Access |
If the API key is limited to certain locations, only shifts in those locations are returned.
Request
GET /api6/shifts_list?apiKey=YOUR_API_KEY&date=7/20/2026 - 7/26/2026
| Parameter | Default | Description |
|---|---|---|
| apiKey | Required. Your API key | |
| date | Today through the next 14 days | The date range to return, written as two dates in the date format of your account with a dash between them: 7/20/2026 - 7/26/2026. Any shift that overlaps the range is returned |
| _body | false | If true, returns more details for each shift, including the position name, the lead it belongs to and the assigned worker |
| offset | 0 | Record number to start at. The first record is 0 |
| limit | 25 | Count of records to return |
Example using curl. The spaces in the date range are written as %20 in a URL:
curl "https://rental.software/api6/shifts_list?apiKey=YOUR_API_KEY&date=7/20/2026%20-%207/26/2026&limit=100"
Response
{
"offset": 0,
"limit": "100",
"first": "https://rental.software/api6/shifts_list?offset=0&limit=100",
"next": "https://rental.software/api6/shifts_list?offset=100&limit=100",
"previous": "https://rental.software/api6/shifts_list?offset=0&limit=100",
"items": [
{
"id": "227051",
"workerid": "13687",
"wuname": "jlee",
"firstname": "Jamie",
"lastname": "Lee",
"cphone": "(330) 555-0151",
"rank": "1",
"unq_shiftid": "s227051",
"starttime": "2026-07-25T14:30:00-04:00",
"starttime_ts": "1785004200",
"starttime_utc": "2026-07-25T18:30:00Z",
"endtime": "2026-07-25T18:30:00-04:00",
"endtime_ts": "1785018600",
"endtime_utc": "2026-07-25T22:30:00Z"
}
],
"request_time": 1760000000
}Returned Fields
| Field | Description |
|---|---|
| id | Shift ID |
| workerid, wuname, firstname, lastname, cphone, rank | The worker assigned to the shift. Empty when nobody is assigned yet |
| unq_shiftid | A unique reference for the shift. It is 0 when the shift is not assigned |
| starttime, endtime | Start and end of the shift in your account's time zone. Each also comes as a Unix timestamp (_ts) and in UTC (_utc) |
The response can include a few extra keys not listed here. Your code should ignore keys it does not use.
Good to Know
- Shifts are sorted by start time.
- Shifts for vehicles are not included.
- A page can contain fewer shifts than your limit even when more pages follow, because shifts the key is not allowed to see are removed after the page is read. Keep paging until you get a 404.
Errors
| Status | Message | What to do |
|---|---|---|
| 404 | No shifts found | There are no shifts in that date range, or you paged past the end |
| 405 | Only accepts GET requests | Use GET |
See API - Errors and Rate Limits for errors that apply to every call.