Skip to content

List Shifts

GET {{base_url}}/api/v3/shifts?page=0&limit=20

Required scope: shifts:read

Returns a paginated, operator-scoped list of public shift records. Roles: admin, partner, or vendor.

page is zero-based. limit defaults to 20 and is capped at 1,000 in production. start and stop are inclusive boundaries.

Advanced forecasting only: chomp_run_id and schedule_id support forecasting-generated shift views. chomp_run_id requires the matching schedule_id; general API consumers should omit both.

The embedded user object contains only id, first_name, last_name, is_external_runner, and active_territory_id; phone and username are not public.

Terminal window
curl --request GET '${base_url}/api/v3/shifts?page=0&limit=20' \
--header 'Authorization: {{auth_token}}'
{
"type": "success",
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"created_at": "2026-10-13T14:00:00.000Z",
"retreat_point": "650e8400-e29b-41d4-a716-446655440000",
"territory_id": "850e8400-e29b-41d4-a716-446655440000",
"operator_id": 123,
"start": "2026-10-19T13:00:00.000Z",
"stop": "2026-10-19T17:00:00.000Z",
"length_hours": 4,
"user_id": "1697c3af-450f-42f4-8609-669a4350c22f",
"role": "car",
"hourly_rate": 20,
"bonus_pay": 10,
"checked_in": null,
"user": {
"id": "1697c3af-450f-42f4-8609-669a4350c22f",
"first_name": "John",
"last_name": "Doe",
"is_external_runner": false,
"active_territory_id": "850e8400-e29b-41d4-a716-446655440000"
}
}
],
"total": 1
}