> For the complete documentation index, see [llms.txt](https://docs.vomevolunteer.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vomevolunteer.com/resources/schedule/shifts.md).

# Shifts

This object represents a shift within your organization. A shift belongs to an opportunity, and each opportunity can have one or more shifts attached to it. For example, a "Weekend Mentor" opportunity may contain shifts like "Morning Shift" and "Afternoon Shift".

Each shift stores the key details used to describe and schedule it, including its title, description, start time, end time, capacity, related opportunity, derived location, and public share URL.

You can use the Shifts API to list all shifts for your institution, retrieve a single shift by ID, or search shifts using filters such as title, date, start time, end time, spots, opportunity, category, and created date.

### Endpoints

* `GET /api/shifts/`
* `GET /api/shifts/{shift_id}/`
* `GET /api/shifts/search/`
* `POST /api/shifts/bulk-create/`
* `POST /api/shifts/bulk-update/`
* `POST /api/shifts/bulk-upsert/`
* `POST /api/shifts/bulk-cancel/`
* `POST /api/shifts/bulk-assign/`

### Recurring shifts

A shift that repeats is a **series**, not a batch of shifts. Add a `series` block to any row of `bulk-create/` and Vome keeps generating occurrences from it long after the request is over, rather than creating a fixed set of dates.

Editing, ending, and assigning volunteers to a series each work differently from the single-shift versions, and have their own endpoints. See [Shift Series](/resources/schedule/shift-series.md).
