Skip to main content

Bulk Update Shifts

Change the start and/or end time on all shifts within a date range. By default only unpublished shifts are updated; pass only_unpublished: false to also update published shifts.

Endpointโ€‹

POST /v1/staff/shifts/bulk-update

Authenticationโ€‹

Requires an API key with the staff:write scope.

Request Bodyโ€‹

ParameterTypeRequiredDescription
start_datestringYesStart of the date range (YYYY-MM-DD)
end_datestringYesEnd of the date range (YYYY-MM-DD, must be โ‰ฅ start_date)
new_start_timestringConditionalNew start time (HH:MM). At least one of new_start_time or new_end_time is required.
new_end_timestringConditionalNew end time (HH:MM). At least one of new_start_time or new_end_time is required.
only_unpublishedbooleanNoWhen true (default), only unpublished shifts are updated

Responseโ€‹

Success (200 OK)โ€‹

{
"data": {
"updated_count": 8
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-04-01T09:00:00+00:00"
}
}

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks staff:write scope
422validation_errorMissing or invalid fields
422nothing_to_changeNeither new_start_time nor new_end_time provided

Example Requestโ€‹

curl -X POST "https://app.equipdash.com/api/v1/staff/shifts/bulk-update" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"start_date": "2026-04-07",
"end_date": "2026-04-13",
"new_start_time": "08:00",
"new_end_time": "16:00",
"only_unpublished": true
}'