---
title: "Create Schedule"
method: POST
path: "/api/v1/scheduling/schedules"
tags: ["Scheduling", "Public API"]
---

# Create Schedule

`POST /api/v1/scheduling/schedules`

Creates a new schedule for the company. Rejects duplicate schedule data for the same location and configuration.

OAuth Scopes: scheduling:schedules.write, time_tracking.write

## Request body

- SchedulingCreateScheduleRequestV1 — Request object for creating or updating a schedule
  - `name` string, required — The name of the schedule
  - `locationId` integer, required — The ID of the location the schedule belongs to
  - `timezone` string, nullable — The timezone of the schedule. Required for remote locations. For non-remote locations, the location timezone is used.
  - `startOfWeek` string, required — The starting day of the week for the schedule
  - `earlyClockInThreshold` integer — The threshold (in minutes) that an employee is allowed to clock in early to a shift on this schedule
  - `lateClockInThreshold` integer, nullable — The threshold (in minutes) after a shift starts before an employee is considered late clocking in
  - `earlyClockOutThreshold` integer, nullable — The threshold (in minutes) before a shift ends within which an employee is considered to have clocked out early
  - `lateClockOutThreshold` integer, nullable — The threshold (in minutes) after a shift ends before an employee is considered to have clocked out late
  - `managerUserIds` integer[] — User IDs of managers for this schedule
  - `employeeIds` integer[] — Employee IDs assigned to this schedule

## Response `201`

Schedule created successfully

- SchedulingScheduleV1 — A shift schedule for a specific location, which organizes shifts for employees
  - `id` string, uuid — The UUID of the schedule
  - `name` string — The name of the schedule
  - `locationId` integer — The ID of the location the schedule belongs to
  - `timezone` string — The timezone of the schedule, provide if location is missing timezone
  - `startOfWeek` string — The starting day of the week for the schedule
  - `earlyClockInThreshold` integer — The threshold (in minutes) that an employee is allowed to clock in early to a shift on this schedule
  - `lateClockInThreshold` integer — The threshold (in minutes) after a shift starts before an employee is considered late clocking in
  - `earlyClockOutThreshold` integer — The threshold (in minutes) before a shift ends within which an employee is considered to have clocked out early
  - `lateClockOutThreshold` integer — The threshold (in minutes) after a shift ends before an employee is considered to have clocked out late
  - `managerUserIds` integer[] — What users manage this schedule
  - `employeeIds` integer[] — What employees are assigned to this schedule
  - `createdAt` string, date-time — UTC timestamp when the schedule was created
  - `updatedAt` string, date-time, nullable — UTC timestamp when the schedule was last updated
  - `deletedAt` string, date-time, nullable — UTC timestamp when the schedule was deleted

## Other responses

- `403` — Forbidden - insufficient permissions
- `422` — Unprocessable entity - validation failed

---

[API](https://skmtc.net/bamboohr/apis/bamboohr-api.md) · [All operations](https://skmtc.net/bamboohr/apis/bamboohr-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bamboohr/bamboohr-api/versions/19ebf391a399/schema)
