List shifts
Needs: Roster, Read
Lists shifts (single-client appointments and group or site shifts) in a date range as a compact summary, sorted by start time. Use the shift's ref with the details endpoint for the full record.
Note:
refisa:plus the id for a single-client shift, andg:plus the id for a group or site shift.typeissingleorgroup.statusisdraft,scheduled,in_progress,completedorcancelled.staffisunassignedwhen nobody is on the shift, and group shifts also carry thesitename.
curl -X GET "https://app.imploy.com.au/api/integrations/v1/shifts?from=example_string&to=example_string&client_id=123&staff_id=123&site_id=123&unassigned_only=true&include_cancelled=true&page=25&per_page=25" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import json
url = "https://app.imploy.com.au/api/integrations/v1/shifts?from=example_string&to=example_string&client_id=123&staff_id=123&site_id=123&unassigned_only=true&include_cancelled=true&page=25&per_page=25"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://app.imploy.com.au/api/integrations/v1/shifts?from=example_string&to=example_string&client_id=123&staff_id=123&site_id=123&unassigned_only=true&include_cancelled=true&page=25&per_page=25", {
method: "GET",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://app.imploy.com.au/api/integrations/v1/shifts?from=example_string&to=example_string&client_id=123&staff_id=123&site_id=123&unassigned_only=true&include_cancelled=true&page=25&per_page=25", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://app.imploy.com.au/api/integrations/v1/shifts?from=example_string&to=example_string&client_id=123&staff_id=123&site_id=123&unassigned_only=true&include_cancelled=true&page=25&per_page=25')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
response = http.request(request)
puts response.body
{
"range": {
"from": "2026-03-02",
"to": "2026-03-08"
},
"data": [
{
"ref": "a:123",
"type": "single",
"start": "2026-03-02 09:00:00",
"end": "2026-03-02 13:00:00",
"service": "Assistance With Self-Care Activities - Standard - Weekday Daytime",
"clients": [
"Example Client"
],
"staff": [
"Example Worker"
],
"status": "scheduled"
}
],
"meta": {
"page": 1,
"per_page": 50,
"total": 1,
"last_page": 1
}
}
{
"message": "Invalid or expired access token."
}
{
"message": "Access token does not permit this action."
}
{
"message": "Too many requests."
}
/shifts
Target server for requests. Edit to use your own host.
An organisation access token that starts with imp_at_. Send it as Authorization: Bearer imp_at_XXXX.
imp_at_. Send it as Authorization: Bearer imp_at_XXXX.Start date, YYYY-MM-DD.
End date, up to 31 days after from. Defaults to 7 days.
Only shifts for this client, including group shifts they attend.
Only shifts assigned to this staff member.
Only shifts at this site.
Only shifts with no staff, or in the shift pool.
Include cancelled shifts. Defaults to false.
Page number, 1 or greater.
1 to 100. Defaults to 50.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. An organisation access token that starts with imp_at_. Send it as Authorization: Bearer imp_at_XXXX.
Query Parameters
Start date, YYYY-MM-DD.
End date, up to 31 days after from. Defaults to 7 days.
Only shifts for this client, including group shifts they attend.
Only shifts assigned to this staff member.
Only shifts at this site.
Only shifts with no staff, or in the shift pool.
Include cancelled shifts. Defaults to false.
Page number, 1 or greater.
1 to 100. Defaults to 50.
Responses
OK