---
updatedAt: 2026-05-19T10:57:50.000Z
---

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

# JS Vision: V1 vs V2 Shifts API

If your Connecteam account has been **migrated to JS Vision** — our new shift-scheduling storage architecture — the Scheduler REST API gives you two paths to choose from. This section explains exactly how each one behaves on a migrated company, so you can pick the right one and migrate existing integrations safely.

> 👍 Just here to confirm nothing is breaking?
>
> If your integration was written **before** JS Vision and only calls `/scheduler/v1/...`, it keeps working unchanged after migration:
>
> * Every shift ID your system already stored continues to be accepted by V1 — no need to convert or re-fetch anything.
> * The same endpoints, the same response shape, the same fields.
>
> **One thing to be aware of:** any **new** shifts created via V1 after migration come back with a longer ID format (`bson:uuid`, around 61 characters, containing a `:`). If your shift-ID column is a fixed 24-char width, widen it before migration day. See [Shift IDs and Response Shapes](https://developer.connecteam.com/docs/scheduler-shifts-vision-ids-responses) for the full mechanic.

***

## TL;DR

|                                            | `/scheduler/v1/...`        | `/scheduler/v2/...`               |
| ------------------------------------------ | -------------------------- | --------------------------------- |
| Available on non-Vision companies          | Yes                        | **No — returns `403`**            |
| Group shift with N users in a response     | N separate shift objects   | 1 shift, `assignedUserIds: [...]` |
| Shift ID format (migrated company)         | Slot ID: `bson:uuid`       | Base ID: plain `bson`             |
| Multi-user assign / multi-spot open shifts | Rejected                   | Allowed                           |
| Existing integrations                      | **Keep working unchanged** | Opt-in                            |

**Rule of thumb:** if your integration was written before JS Vision, **stay on V1** — your code keeps working as-is. If you want clean group-shift semantics or multi-spot open shifts, **use V2**.

***

## Am I migrated?

Send any V2 request and check the response. You don't need a specific endpoint — just hit the list:

```bash
curl --request GET \
  --url 'https://api.connecteam.com/scheduler/v2/schedulers/{schedulerId}/shifts?startTime=1736899200&endTime=1737504000' \
  --header 'X-API-KEY: YOUR_API_KEY'
```

> 🚧 Non-migrated companies get `403`
>
> If your company is **not** migrated, every V2 endpoint returns:
>
> ```json
> { "detail": "V2 endpoints require JS Vision migration. Contact support to migrate." }
> ```
>
> There is no opt-in flag in the API — contact Connecteam Support to be migrated.

> 📘 Migrated companies see a normal response
>
> A `200` with a `shifts` array (or a `404` for a missing shift, when calling by ID) means you're on Vision. Both V1 and V2 are available, and both run against the same data.

***

## Pages in this section

| Page                                                                                                         | When to read                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| [How V1 and V2 Differ](https://developer.connecteam.com/docs/scheduler-shifts-vision-overview)               | **Start here.** Why two versions exist, URL paths, full TL;DR table, and how to choose between V1 and V2 for any given situation.   |
| [Shift IDs and Response Shapes](https://developer.connecteam.com/docs/scheduler-shifts-vision-ids-responses) | What IDs each version returns and accepts, conversion rules, and side-by-side response examples for group, open, and single shifts. |
| [Endpoint-by-Endpoint Reference](https://developer.connecteam.com/docs/scheduler-shifts-vision-endpoints)    | Full diff for `GET`, `POST`, `PUT`, `DELETE`, plus pagination and validation rules — with cURL examples for each.                   |
| [Migration Playbook and FAQ](https://developer.connecteam.com/docs/scheduler-shifts-vision-migration)        | Step-by-step recipe for moving a working V1 integration over to V2, with answers to the common questions.                           |

***

## See also

* [Scheduler API Overview](https://developer.connecteam.com/docs/scheduler-overview)
* [Shifts Overview](https://developer.connecteam.com/docs/scheduler-shifts)
* [API Reference](https://developer.connecteam.com/reference/)