---
title: "List all shifts"
method: GET
path: "/shifts"
tags: ["Shifts"]
---

# List all shifts

`GET /shifts`

## Request

- Base URL: `https://app.hireart.com/api/v2`
- URL: `https://app.hireart.com/api/v2/shifts`
- Auth: HTTP bearer

## Query parameters

- `page` integer
- `per_page` integer
- `worker_id` string
- `job_id` string
- `pay_cycle_id` string
- `date` string, date
- `date_gt` string, date
- `date_gte` string, date
- `date_lt` string, date
- `date_lte` string, date

## Response `200`

Successful response

- ShiftList
  - `object` 'list', required
  - `page` integer, required
  - `per_page` integer, required
  - `total_count` integer, required
  - `total_pages` integer, required
  - `data` Shift[], required
    - `object` 'shift', required
    - `id` string, required
    - `worker_id` string, nullable
    - `assignment_id` string, nullable
    - `pay_cycle_id` string, nullable
    - `date` string, date, nullable
    - `status` 'draft' | 'submitted' | 'approved' | 'null', nullable
    - `description` string, nullable
    - `reference_number` string, nullable
    - `submission` ShiftSubmission
      - `object` 'shift_submission', required
      - `auto_submitted` boolean, nullable
      - `submitted_at` string, date-time, nullable
    - `hours` ShiftHours
      - `object` 'shift_hours', required
      - `total_hours` number, nullable
      - `payable_hours` number, nullable
      - `reported_by_employee` EmployeeReportedHours
        - `object` 'employee_reported_hours', required
        - `break` number, nullable
        - `holiday_non_worked` number, nullable
        - `starts_at` string, date-time, nullable
        - `ends_at` string, date-time, nullable
      - `reported_by_employer` EmployerReportedHours
        - `object` 'employer_reported_hours', required
        - `break_override` number, nullable
        - `holiday_non_worked_override` number, nullable
        - `total_hours_worked_override` number, nullable
    - `approval` ShiftApproval
      - `object` 'shift_approval', required
      - `approved_at` string, date-time, nullable
      - `auto_approved` boolean, nullable
      - `approved_by` PersonSummary
        - `object` 'person', required
        - `id` string, required
        - `full_name` string, nullable
        - `first_name` string, nullable
        - `last_name` string, nullable
        - `email` string, nullable
        - `phone` string, nullable

## Other responses

- `401`: Unauthorized
- `422`: Invalid query parameters
- `429`: Rate limit exceeded (100 requests per 60 seconds per API key)
- `500`: Internal server error

---

[API](https://skmtc.dev/hireart/apis/hireart-api.md) - [All operations](https://skmtc.dev/hireart/apis/hireart-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hireart/apis/hireart-api/revisions/41935c8fd584?raw)
