curl --request POST \
--url https://{organization}.rescueconsole.com/api/shifts/schedules/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"action": "set_status",
"value": "scheduled",
"filter": "status=draft&from=2026-10-01"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
action: 'set_status',
value: 'scheduled',
filter: 'status=draft&from=2026-10-01'
})
};
fetch('https://{organization}.rescueconsole.com/api/shifts/schedules/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/shifts/schedules/bulk"
payload = {
"action": "set_status",
"value": "scheduled",
"filter": "status=draft&from=2026-10-01"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"updated": 123,
"action": "<string>",
"unchanged": 123,
"value": "<string>"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Change many schedules
One change to many schedules. set_status sets one status on them all, given in value. update sets their status, kind or location, given in patch. delete deletes them, and is refused for the whole selection, deleting nothing, if any of them has signed-off hours. Name the schedules with ids, or with filter, a query string in the form List schedules takes; exactly one of the two. At most 200 schedules. Needs write on Shifts.
A coordinator’s: needs write on Shifts AND read on People. A key without read on People is refused (403) with “Only a coordinator can do this: it needs permission to see People.”
curl --request POST \
--url https://{organization}.rescueconsole.com/api/shifts/schedules/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"action": "set_status",
"value": "scheduled",
"filter": "status=draft&from=2026-10-01"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
action: 'set_status',
value: 'scheduled',
filter: 'status=draft&from=2026-10-01'
})
};
fetch('https://{organization}.rescueconsole.com/api/shifts/schedules/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{organization}.rescueconsole.com/api/shifts/schedules/bulk"
payload = {
"action": "set_status",
"value": "scheduled",
"filter": "status=draft&from=2026-10-01"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"updated": 123,
"action": "<string>",
"unchanged": 123,
"value": "<string>"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}{
"error": "house_trained must be 1, 0 or null (not assessed)"
}Authorizations
An API key from Settings, API keys. It starts with rc_live_.
Body
set_status sets one status on them all. update sets up to three fields on them all. delete deletes them.
set_status, update, delete The status, for set_status.
The fields to set, for update. Only these three.
Show child attributes
Show child attributes
The schedules to change, at most 200. Send this or filter, not both.
A query string in the form List schedules takes, such as status=draft&from=2026-10-01. Send this or ids, not both.