---
title: "List Open Shifts"
method: GET
path: "/api/v1/scheduling/open-shifts"
tags: ["Scheduling", "Public API"]
---

# List Open Shifts

`GET /api/v1/scheduling/open-shifts`

## Request

- Base URL: `https://companySubDomain.bamboohr.com`
- URL: `https://companySubDomain.bamboohr.com/api/v1/scheduling/open-shifts`
- Auth: one of:
  - HTTP basic
  - OAuth 2
    - Authorization code: `/authorize.php`
    - Token URL: `/token.php` scopes: `scheduling:shifts`
- TypeScript: <https://skmtc.dev/bamboohr/apis/bamboohr-api/docs/api/v1/scheduling/open-shifts/get.ts> (a function with typed inputs; its response is checked against the schema)

Lists the open shifts the authenticated employee could claim: published, claimable shifts on the employee's schedules that have not started, have a spot left, are not already assigned to them, and start on a day the employee has an active employment status. A shift the employee was previously declined for stays listed. Rows carry no evaluation; evaluate them with POST /api/v1/scheduling/shift-claims/evaluate. There is no employee parameter, and a caller without an employee record gets an empty list, as does every caller while Open Shifts is off. The filter must bound start or end from below and above, within 31 days.

OAuth Scopes: scheduling:shifts

## Query parameters

- `filter` string, required
- `sort` string
- `page` integer
- `pageSize` integer

## Response `200`

Open shifts retrieved successfully

- object
  - `data` SchedulingSchedulingOpenShiftV1[]: Collection of open shifts
    - `id` string, uuid, required: The ID of the shift.
    - `scheduleId` string, uuid, required: The ID of the schedule the shift belongs to.
    - `name` string, nullable, required: The name of the shift.
    - `start` string, date-time, required: UTC timestamp of the start of the shift.
    - `end` string, date-time, required: UTC timestamp of the end of the shift.
    - `timezone` string, required: The timezone for the shift.
    - `claimsRequireApproval` boolean, required: Whether a claim needs manager approval. When false, a claim assigns the employee immediately.
  - `meta` object
    - `totalItems` integer: Total number of open shifts matching the filter.
    - `page` integer: Current page number.
    - `pageSize` integer: Number of items per page.
  - `_links` object
    - `prev` object: Link to the previous page.
      - `href` string, nullable: URL for the previous page, or null if on the first page.
    - `next` object: Link to the next page.
      - `href` string, nullable: URL for the next page, or null if on the last page.

## Other responses

- `422`: Invalid input: unknown filter or sort field, missing or too-wide date window, malformed date, or pageSize above 100
- `500`: Internal server error

## Changes

- **2026-11-03** `922fc15f43a7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bamboohr/apis/bamboohr-api/changes/api/v1/scheduling/open-shifts/get.md)

---

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