---
title: "Update Door Exception Calendar"
method: PUT
path: "/access/v1/door/exception_calendar/{calendar_id}"
tags: ["Access Door Exception Calendars"]
---

# Update Door Exception Calendar

`PUT /access/v1/door/exception_calendar/{calendar_id}`

## Request

- Base URL: `https://api.verkada.com`
- URL: `https://api.verkada.com/access/v1/door/exception_calendar/{calendar_id}`
- Auth: one of:
  - API key in header `x-verkada-auth`
  - API key in header `x-api-key`

## Path parameters

- `calendar_id` string, required

## Request body

- PutDoorExceptionCalendarBodyV1: Request schema for PUT /access/v1/door/exception_calendar/<calendar_id>.
  - `doors` string[]: Door IDs of Doors that the calendar’s Door Exceptions are being applied to.
  - `exceptions` union[]: Door Exceptions for this Door Exception Calendar.
    - union
      - ValidatedDoorExceptionV1: Schema for the Door Exception with validation.
        - `all_day_default` boolean: Bool value specifying if Exception is an All Day Default. If <code>TRUE</code>, then: - <code>door_status</code> must be set to <code>access_controlled</code> - <code>start_time</code> and <code>end_time</code> will automatically be set to <code>00:00:00</code> and <code>23:59:59</code>, respectively. Different values should not be provided. - <code>first_person_in</code> and <code>double_badge</code> must be <code>FALSE</code>
        - `calendar_id` string: Unique ID of the Door Exception Calendar that this Exception belongs to.
        - `date` string, required: Date of the Door Exception formatted as <code>YYYY-MM-DD</code> (according to ISO 8601).
        - `door_exception_id` string: The unique ID of the Door Exception.
        - `door_status` 'locked' | 'card_and_code' | 'access_controlled' | 'unlocked': An enumeration.
        - `double_badge` boolean: Bool value specifying if the Double Badge setting should be enabled for relevant doors. If <code>TRUE</code>, <code>door_status</code> must be set to <code>access_controlled</code>. By default, all users with access to relevant doors will be allowed to double badge.
        - `double_badge_group_ids` string[]: List of IDs for Access Groups that users must be a member of to be allowed to double badge on relevant doors. <code>double_badge</code> must also be set to <code>TRUE</code> if value is provided.
        - `end_time` string, time, required: End time of the Door Exception formatted as <code>hh:mm</code> (according to ISO 8601).
        - `first_person_in` boolean: Bool value specifying if the First Person In setting should be enabled for relevant doors. If <code>TRUE</code>, <code>door_status</code> must be set to <code>card_and_code</code>, <code>access_controlled</code>, or <code>unlocked</code>.
        - `first_person_in_group_ids` string[]: List of IDs for Access Groups including supervisors used for First Person In mode. <code>first_person_in</code> must also be set to <code>TRUE</code> if this value is provided.
        - `recurrence_rule` RecurrenceRule: A recurrence rule object specifying when the exception should repeat.
          - `by_day` WeekdayEnum[]: For recurrences where <code>frequency</code> is <code>WEEKLY</code>, <code>MONTHLY</code>, or <code>YEARLY</code>. List of weekdays that the recurrence should include every week (see <code>BYDAY</code> in RFC 5545). Supported values are: <code>'SU'</code>, <code>'MO'</code>, <code>'TU'</code>, <code>'WE'</code>, <code>'TH'</code>, <code>'FR'</code>, <code>'SA'</code>. <b>Note:</b> Required if <code>frequency</code> is <code>WEEKLY</code>, and can include one or more values. If <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code>, only allowed if <code>by_set_pos</code> is not null and can only include a single value. Not supported otherwise.
          - `by_month` integer: For recurrences where <code>frequency</code> is <code>YEARLY</code>. The number of the month that the recurrence should include every year (see <code>BYMONTH</code> in RFC 5545). Supported values are integers from 1-12. <b>Note:</b> Required if <code>frequency</code> is <code>YEARLY</code>, not supported otherwise.
          - `by_month_day` integer: For recurrences where <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code>. The day of the month that the recurrence should include every month or year (see <code>BYMONTHDAY</code> in RFC 5545). Supported values are integers from 1-31. If the value is set to 29-31 and a month does not include a day with that value, the recurrence will be ignored for that month. <b>Note:</b> Either <code>by_month_day</code> or <code>by_set_pos</code> is required if <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code> (only one is allowed), not supported otherwise.
          - `by_set_pos` integer: For recurrences where <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code>. The position of the weekday specified in <code>by_day</code> in the month that the recurrence should include every month or year (see <code>BYMONTHDAY</code> in RFC 5545). For example, <code>by_set_pos</code> would be set to 3 and <code>by_day</code> set to <code>'TU'</code>, to specify the 3rd Tuesday of a month. Supported values are integers from 1-5. If value is set to 5 and the month does not include a 5th instance of the weekday in <code>by_day</code>, the recurrence will be ignored for that month. <b>Note:</b> Either <code>by_month_day</code> or <code>by_set_pos</code> is required if <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code> (only one is allowed). Not supported otherwise.
          - `count` integer: The total number of times that the recurrence should repeat before ending (see <code>COUNT</code> in RFC 5545). <b>Note:</b> Only one of <code>count</code> or <code>until</code> is allowed, but not both.
          - `excluded_dates` string[]: A list of dates to exclude for recurrence, formatted as <code>YYYY-MM-DD</code> (according to ISO 8601). Also see <code>EXDATE</code> in RFC 5545.
          - `frequency` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY', required: An enumeration.
          - `interval` integer, required: Interval at which the recurrence should repeat according to the frequency type (see <code>INTERVAL</code> in RFC 5545).
          - `until` string: The final date on which the recurrence should occur before ending, formatted as <code>YYYY-MM-DD</code> (according to ISO 8601). Also see <code>UNTIL</code> in RFC 5545. <b>Note:</b> Only one of <code>count</code> or <code>until</code> is allowed, but not both.
        - `start_time` string, time, required: Start time of the Door Exception formatted as <code>hh:mm</code> (according to ISO 8601).
      - UnidentifiedValidatedDoorExceptionV1: Schema for the Door Exception with validation but without ids.
        - `all_day_default` boolean: Bool value specifying if Exception is an All Day Default. If <code>TRUE</code>, then: - <code>door_status</code> must be set to <code>access_controlled</code> - <code>start_time</code> and <code>end_time</code> will automatically be set to <code>00:00:00</code> and <code>23:59:59</code>, respectively. Different values should not be provided. - <code>first_person_in</code> and <code>double_badge</code> must be <code>FALSE</code>
        - `date` string, required: Date of the Door Exception formatted as <code>YYYY-MM-DD</code> (according to ISO 8601).
        - `door_status` 'locked' | 'card_and_code' | 'access_controlled' | 'unlocked': An enumeration.
        - `double_badge` boolean: Bool value specifying if the Double Badge setting should be enabled for relevant doors. If <code>TRUE</code>, <code>door_status</code> must be set to <code>access_controlled</code>. By default, all users with access to relevant doors will be allowed to double badge.
        - `double_badge_group_ids` string[]: List of IDs for Access Groups that users must be a member of to be allowed to double badge on relevant doors. <code>double_badge</code> must also be set to <code>TRUE</code> if value is provided.
        - `end_time` string, time, required: End time of the Door Exception formatted as <code>hh:mm</code> (according to ISO 8601).
        - `first_person_in` boolean: Bool value specifying if the First Person In setting should be enabled for relevant doors. If <code>TRUE</code>, <code>door_status</code> must be set to <code>card_and_code</code>, <code>access_controlled</code>, or <code>unlocked</code>.
        - `first_person_in_group_ids` string[]: List of IDs for Access Groups including supervisors used for First Person In mode. <code>first_person_in</code> must also be set to <code>TRUE</code> if this value is provided.
        - `recurrence_rule` RecurrenceRule: A recurrence rule object specifying when the exception should repeat.
          - `by_day` WeekdayEnum[]: For recurrences where <code>frequency</code> is <code>WEEKLY</code>, <code>MONTHLY</code>, or <code>YEARLY</code>. List of weekdays that the recurrence should include every week (see <code>BYDAY</code> in RFC 5545). Supported values are: <code>'SU'</code>, <code>'MO'</code>, <code>'TU'</code>, <code>'WE'</code>, <code>'TH'</code>, <code>'FR'</code>, <code>'SA'</code>. <b>Note:</b> Required if <code>frequency</code> is <code>WEEKLY</code>, and can include one or more values. If <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code>, only allowed if <code>by_set_pos</code> is not null and can only include a single value. Not supported otherwise.
          - `by_month` integer: For recurrences where <code>frequency</code> is <code>YEARLY</code>. The number of the month that the recurrence should include every year (see <code>BYMONTH</code> in RFC 5545). Supported values are integers from 1-12. <b>Note:</b> Required if <code>frequency</code> is <code>YEARLY</code>, not supported otherwise.
          - `by_month_day` integer: For recurrences where <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code>. The day of the month that the recurrence should include every month or year (see <code>BYMONTHDAY</code> in RFC 5545). Supported values are integers from 1-31. If the value is set to 29-31 and a month does not include a day with that value, the recurrence will be ignored for that month. <b>Note:</b> Either <code>by_month_day</code> or <code>by_set_pos</code> is required if <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code> (only one is allowed), not supported otherwise.
          - `by_set_pos` integer: For recurrences where <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code>. The position of the weekday specified in <code>by_day</code> in the month that the recurrence should include every month or year (see <code>BYMONTHDAY</code> in RFC 5545). For example, <code>by_set_pos</code> would be set to 3 and <code>by_day</code> set to <code>'TU'</code>, to specify the 3rd Tuesday of a month. Supported values are integers from 1-5. If value is set to 5 and the month does not include a 5th instance of the weekday in <code>by_day</code>, the recurrence will be ignored for that month. <b>Note:</b> Either <code>by_month_day</code> or <code>by_set_pos</code> is required if <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code> (only one is allowed). Not supported otherwise.
          - `count` integer: The total number of times that the recurrence should repeat before ending (see <code>COUNT</code> in RFC 5545). <b>Note:</b> Only one of <code>count</code> or <code>until</code> is allowed, but not both.
          - `excluded_dates` string[]: A list of dates to exclude for recurrence, formatted as <code>YYYY-MM-DD</code> (according to ISO 8601). Also see <code>EXDATE</code> in RFC 5545.
          - `frequency` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY', required: An enumeration.
          - `interval` integer, required: Interval at which the recurrence should repeat according to the frequency type (see <code>INTERVAL</code> in RFC 5545).
          - `until` string: The final date on which the recurrence should occur before ending, formatted as <code>YYYY-MM-DD</code> (according to ISO 8601). Also see <code>UNTIL</code> in RFC 5545. <b>Note:</b> Only one of <code>count</code> or <code>until</code> is allowed, but not both.
        - `start_time` string, time, required: Start time of the Door Exception formatted as <code>hh:mm</code> (according to ISO 8601).
  - `name` string, required: Name of the Door Exception Calendar.

## Response `200`

OK

- DoorExceptionCalendarV1: Schema for the Door Exception Calendar.
  - `door_exception_calendar_id` string: Unique ID of the Door Exception Calendar.
  - `doors` string[]: Door IDs of Doors that the calendar’s Door Exceptions are being applied to.
  - `exceptions` DoorExceptionV1[]: Door Exceptions for this Door Exception Calendar.
    - `all_day_default` boolean: Bool value specifying if Exception is an All Day Default. If <code>TRUE</code>, then: - <code>door_status</code> must be set to <code>access_controlled</code> - <code>start_time</code> and <code>end_time</code> will automatically be set to <code>00:00:00</code> and <code>23:59:59</code>, respectively. Different values should not be provided. - <code>first_person_in</code> and <code>double_badge</code> must be <code>FALSE</code>
    - `calendar_id` string: Unique ID of the Door Exception Calendar that this Exception belongs to.
    - `date` string, required: Date of the Door Exception formatted as <code>YYYY-MM-DD</code> (according to ISO 8601).
    - `door_exception_id` string: The unique ID of the Door Exception.
    - `door_status` 'locked' | 'card_and_code' | 'access_controlled' | 'unlocked': An enumeration.
    - `double_badge` boolean: Bool value specifying if the Double Badge setting should be enabled for relevant doors. If <code>TRUE</code>, <code>door_status</code> must be set to <code>access_controlled</code>. By default, all users with access to relevant doors will be allowed to double badge.
    - `double_badge_group_ids` string[]: List of IDs for Access Groups that users must be a member of to be allowed to double badge on relevant doors. <code>double_badge</code> must also be set to <code>TRUE</code> if value is provided.
    - `end_time` string, time, required: End time of the Door Exception formatted as <code>hh:mm</code> (according to ISO 8601).
    - `first_person_in` boolean: Bool value specifying if the First Person In setting should be enabled for relevant doors. If <code>TRUE</code>, <code>door_status</code> must be set to <code>card_and_code</code>, <code>access_controlled</code>, or <code>unlocked</code>.
    - `first_person_in_group_ids` string[]: List of IDs for Access Groups including supervisors used for First Person In mode. <code>first_person_in</code> must also be set to <code>TRUE</code> if this value is provided.
    - `recurrence_rule` RecurrenceRule: A recurrence rule object specifying when the exception should repeat.
      - `by_day` WeekdayEnum[]: For recurrences where <code>frequency</code> is <code>WEEKLY</code>, <code>MONTHLY</code>, or <code>YEARLY</code>. List of weekdays that the recurrence should include every week (see <code>BYDAY</code> in RFC 5545). Supported values are: <code>'SU'</code>, <code>'MO'</code>, <code>'TU'</code>, <code>'WE'</code>, <code>'TH'</code>, <code>'FR'</code>, <code>'SA'</code>. <b>Note:</b> Required if <code>frequency</code> is <code>WEEKLY</code>, and can include one or more values. If <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code>, only allowed if <code>by_set_pos</code> is not null and can only include a single value. Not supported otherwise.
      - `by_month` integer: For recurrences where <code>frequency</code> is <code>YEARLY</code>. The number of the month that the recurrence should include every year (see <code>BYMONTH</code> in RFC 5545). Supported values are integers from 1-12. <b>Note:</b> Required if <code>frequency</code> is <code>YEARLY</code>, not supported otherwise.
      - `by_month_day` integer: For recurrences where <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code>. The day of the month that the recurrence should include every month or year (see <code>BYMONTHDAY</code> in RFC 5545). Supported values are integers from 1-31. If the value is set to 29-31 and a month does not include a day with that value, the recurrence will be ignored for that month. <b>Note:</b> Either <code>by_month_day</code> or <code>by_set_pos</code> is required if <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code> (only one is allowed), not supported otherwise.
      - `by_set_pos` integer: For recurrences where <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code>. The position of the weekday specified in <code>by_day</code> in the month that the recurrence should include every month or year (see <code>BYMONTHDAY</code> in RFC 5545). For example, <code>by_set_pos</code> would be set to 3 and <code>by_day</code> set to <code>'TU'</code>, to specify the 3rd Tuesday of a month. Supported values are integers from 1-5. If value is set to 5 and the month does not include a 5th instance of the weekday in <code>by_day</code>, the recurrence will be ignored for that month. <b>Note:</b> Either <code>by_month_day</code> or <code>by_set_pos</code> is required if <code>frequency</code> is <code>MONTHLY</code> or <code>YEARLY</code> (only one is allowed). Not supported otherwise.
      - `count` integer: The total number of times that the recurrence should repeat before ending (see <code>COUNT</code> in RFC 5545). <b>Note:</b> Only one of <code>count</code> or <code>until</code> is allowed, but not both.
      - `excluded_dates` string[]: A list of dates to exclude for recurrence, formatted as <code>YYYY-MM-DD</code> (according to ISO 8601). Also see <code>EXDATE</code> in RFC 5545.
      - `frequency` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY', required: An enumeration.
      - `interval` integer, required: Interval at which the recurrence should repeat according to the frequency type (see <code>INTERVAL</code> in RFC 5545).
      - `until` string: The final date on which the recurrence should occur before ending, formatted as <code>YYYY-MM-DD</code> (according to ISO 8601). Also see <code>UNTIL</code> in RFC 5545. <b>Note:</b> Only one of <code>count</code> or <code>until</code> is allowed, but not both.
    - `start_time` string, time, required: Start time of the Door Exception formatted as <code>hh:mm</code> (according to ISO 8601).
  - `last_updated_at` integer: The last time the Door Exception Calendar was updated. Formatted as a Unix timestamp in seconds.
  - `name` string, required: Name of the Door Exception Calendar.

---

[API](https://skmtc.dev/verkada/apis/access-api.md) - [All operations](https://skmtc.dev/verkada/apis/access-api/llms.txt) - [OpenAPI document](https://skmtc.dev/verkada/apis/access-api/revisions/11a8c69fd17f?raw)
