---
title: "Create a new calendar"
method: POST
path: "/calendars"
tags: ["Calendars"]
---

# Create a new calendar

`POST /calendars`

## Request body

- StoreCalendarRequest
  - `name` string, required
  - `description` string, nullable
  - `slotDuration` integer, required
  - `startTimeIncrement` integer, required
  - `bufferBefore` integer, required
  - `bufferAfter` integer, required
  - `maxConcurrentEvents` integer, required
  - `minBookingNoticeMinutes` integer, nullable
  - `maxBookingDaysOut` integer, nullable
  - `emailConfirmationsEnabled` boolean, required
  - `emailNotificationsEnabled` boolean, required
  - `emailNotificationsEmails` string[], nullable
  - `smsConfirmationsEnabled` boolean, required
  - `smsNotificationsEnabled` boolean, required
  - `smsNotificationNumberId` integer, nullable
  - `smsNotificationToNumbers` string[], nullable
  - `schedule` object, nullable
    - `preset` 'always' | 'weekdays' | 'weekends' | 'custom' — Unified business-hours preset. Blocks are required only when preset is "custom".
    - `timezone` string
    - `blocks` unknown[]
      - unknown
  - `companyId` integer, required

## Response `201`

Calendar created

- CalendarResource
  - `id` integer
  - `name` string
  - `description` string, nullable
  - `slotDuration` integer
  - `startTimeIncrement` integer
  - `bufferBefore` integer
  - `bufferAfter` integer
  - `maxConcurrentEvents` integer
  - `minBookingNoticeMinutes` integer, nullable
  - `maxBookingDaysOut` integer, nullable
  - `scheduleId` integer, nullable
  - `emailConfirmationsEnabled` boolean
  - `emailNotificationsEnabled` boolean
  - `emailNotificationsEmails` string[], nullable
  - `smsConfirmationsEnabled` boolean
  - `smsNotificationsEnabled` boolean
  - `smsNotificationNumberId` integer, nullable
  - `smsNotificationToNumbers` string[], nullable
  - `timezone` string
  - `schedule` ScheduleResource
    - `id` integer
    - `preset` 'always' | 'weekdays' | 'weekends' | 'custom' | 'direct_vm' | 'inherit' | 'outside_business_hours'
    - `timezone` string — Resolved IANA timezone (never the "account" sentinel).
    - `timezone_source` 'account' | 'explicit'
    - `blocks` unknown[]
      - unknown
    - `context` object
      - `id` integer
      - `type` unknown
  - `createdAt` string, date-time, nullable
  - `updatedAt` string, date-time, nullable

---

[API](https://skmtc.dev/800/apis/public-api.md) · [All operations](https://skmtc.dev/800/apis/public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/800/public-api/revisions/aab9efc97342/schema)
