---
updatedAt: 2026-06-29T07:51:22.000Z
---

Fetch the complete documentation index at: https://developer.connecteam.com/llms.txt. Use this file to discover all available pages before exploring further.

# Overview

The Scheduler API allows you to programmatically manage schedules, shifts, shift layers, user availability, and auto-assignment in Connecteam.

## Key Concepts

### Schedulers

A scheduler represents a schedule instance in your organization. Each scheduler has its own timezone, settings, and collection of shifts.

### Shifts

Shifts are the core building blocks of scheduling. They can be:

* **Regular shifts**: Assigned to specific users
* **Open shifts**: Available for users to claim
* **Draft shifts**: Not yet visible to users
* **Group shifts**: Assigned to multiple users (requires JS Vision)

### Shift Layers

Shift layers are custom fields that provide additional categorization for shifts (e.g., department, skill level, position).

### Unavailability

Tracks when users are unavailable to work, either from manual entries or approved time-off requests.

### Auto-Assign

Automates shift assignment based on user qualifications, availability, and limitations.

***

## Guide Pages

### Shifts

| Page                                       | Description                                            |
| :----------------------------------------- | :----------------------------------------------------- |
| [Shifts Overview](scheduler-shifts)        | Shift types, constraints, fields, colors, and statuses |
| [Getting Shifts](scheduler-get-shifts)     | Query and filter shifts with pagination                |
| [Creating Shifts](scheduler-create-shifts) | Create single or bulk shifts (up to 500)               |
| [Updating Shifts](scheduler-update-shifts) | Modify shifts, handle group shifts                     |
| [Deleting Shifts](scheduler-delete-shifts) | Remove shifts (single or bulk up to 20)                |

### JS Vision (V1 vs V2)

| Page                                                      | Description                                                                                  |
| :-------------------------------------------------------- | :------------------------------------------------------------------------------------------- |
| [JS Vision: V1 vs V2 Shifts API](scheduler-shifts-vision) | If your company is migrated to JS Vision, how to choose between V1 and V2 and migrate safely |

### Other Features

| Page                                       | Description                           |
| :----------------------------------------- | :------------------------------------ |
| [Shift Layers](scheduler-shift-layers)     | Work with custom shift categorization |
| [Unavailability](scheduler-unavailability) | Manage user availability              |
| [Auto-Assign](scheduler-auto-assign)       | Automate shift assignments            |

***

## Quick Reference: All Endpoints

### Schedulers

| Method | Endpoint                 | Description        |
| :----- | :----------------------- | :----------------- |
| GET    | /scheduler/v1/schedulers | Get all schedulers |

### Shifts

| Method | Endpoint                                                | Description                       |
| :----- | :------------------------------------------------------ | :-------------------------------- |
| GET    | /scheduler/v1/schedulers/{schedulerId}/shifts           | Get shifts with filters           |
| GET    | /scheduler/v1/schedulers/{schedulerId}/shifts/{shiftId} | Get a specific shift              |
| POST   | /scheduler/v1/schedulers/{schedulerId}/shifts           | Create shifts (up to 500)         |
| PUT    | /scheduler/v1/schedulers/{schedulerId}/shifts           | Update shifts                     |
| DELETE | /scheduler/v1/schedulers/{schedulerId}/shifts           | Delete multiple shifts (up to 20) |
| DELETE | /scheduler/v1/schedulers/{schedulerId}/shifts/{shiftId} | Delete a single shift             |

### Shift Layers

| Method | Endpoint                                                             | Description          |
| :----- | :------------------------------------------------------------------- | :------------------- |
| GET    | /scheduler/v1/schedulers/{schedulerId}/shift-layers                  | Get all shift layers |
| GET    | /scheduler/v1/schedulers/{schedulerId}/shift-layers/{layerId}/values | Get layer values     |

### Unavailability

| Method | Endpoint                                                                 | Description                   |
| :----- | :----------------------------------------------------------------------- | :---------------------------- |
| GET    | /scheduler/v1/schedulers/user-unavailability                             | Get user unavailabilities     |
| GET    | /scheduler/v1/schedulers/{schedulerId}/unavailabilities                  | Get schedule unavailabilities |
| POST   | /scheduler/v1/schedulers/{schedulerId}/unavailability                    | Create unavailability         |
| DELETE | /scheduler/v1/schedulers/{schedulerId}/unavailability/{unavailabilityId} | Delete unavailability         |

### Auto-Assign

| Method | Endpoint                                                              | Description            |
| :----- | :-------------------------------------------------------------------- | :--------------------- |
| POST   | /scheduler/v1/schedulers/{schedulerId}/shifts/auto-assign             | Start auto-assign      |
| GET    | /scheduler/v1/schedulers/{schedulerId}/shifts/auto-assign/{requestId} | Get auto-assign status |

***

## Authentication

All Scheduler endpoints require authentication via API key or OAuth 2.0.

### Required Scopes

| Scope           | Access                                              |
| :-------------- | :-------------------------------------------------- |
| schedule.read   | Read schedulers, shifts, layers, unavailabilities   |
| schedule.write  | Create/update shifts, unavailabilities, auto-assign |
| schedule.delete | Delete shifts, unavailabilities                     |

***

## Common Response Structure

All responses include a `requestId` and wrap data in a `data` object:

```json
{
  "requestId": "abc123-def456-...",
  "data": {
    // Response data
  }
}
```

Paginated responses include a `paging` object:

```json
{
  "requestId": "abc123-def456-...",
  "data": { ... },
  "paging": {
    "offset": 10
  }
}
```

***

## Rate Limits

Scheduler API endpoints share the standard rate limits with other Connecteam APIs. See [API Overview](https://developer.connecteam.com/docs/overview) for details.

***

[API Reference](https://developer.connecteam.com/reference/)