---
title: "Create a permission"
method: POST
path: "/v1/access-control/permissions"
tags: ["permissions"]
---

# Create a permission

`POST /v1/access-control/permissions`

## Request

- Base URL: `https://developer.coram.ai`
- URL: `https://developer.coram.ai/v1/access-control/permissions`
- Auth: API key in header `X-Auth-Token`

Grant users and user groups access to doors and door groups on a schedule.

## Request body

- PermissionInput
  - `name` string, required
  - `user_ids` integer[], required: User IDs in your organization.
  - `user_group_ids` integer[]: User group IDs in your organization. Omitted groups are removed on update.
  - `door_ids` integer[], required: Active door IDs in your organization.
  - `door_group_ids` integer[]: Door group IDs in your organization. Omitted groups are removed on update.
  - `schedule` PermissionSchedule, required
    - `timeslots` PermissionTimeslot[], required
      - `start_day_of_week` integer, required
      - `start_time` string, required: Local start time in HH:MM format.
      - `end_day_of_week` integer, required
      - `end_time` string, required: Local end time in HH:MM format.
    - `time_start` string, date-time, nullable
    - `time_end` string, date-time, nullable
    - `rrule` string, nullable: Optional recurrence rule. Omit or set to `null` to repeat your timeslots every week, within any `time_start` and `time_end` limits. For less frequent repetition, use an [iCalendar recurrence rule](https://www.rfc-editor.org/rfc/rfc5545#section-3.3.10). For example, `FREQ=WEEKLY;INTERVAL=2` repeats every other week. This requires `time_start` to anchor the first week. For weekly rules, weekdays come from your timeslots; you don't need to specify `BYDAY`.

## Response `201`

Permission created

- Permission
  - `id` integer, required
  - `name` string, required
  - `user_ids` integer[], required
  - `user_group_ids` integer[], required
  - `door_ids` integer[], required
  - `door_group_ids` integer[], required
  - `schedule` PermissionSchedule, required
    - `timeslots` PermissionTimeslot[], required
      - `start_day_of_week` integer, required
      - `start_time` string, required: Local start time in HH:MM format.
      - `end_day_of_week` integer, required
      - `end_time` string, required: Local end time in HH:MM format.
    - `time_start` string, date-time, nullable
    - `time_end` string, date-time, nullable
    - `rrule` string, nullable: Optional recurrence rule. Omit or set to `null` to repeat your timeslots every week, within any `time_start` and `time_end` limits. For less frequent repetition, use an [iCalendar recurrence rule](https://www.rfc-editor.org/rfc/rfc5545#section-3.3.10). For example, `FREQ=WEEKLY;INTERVAL=2` repeats every other week. This requires `time_start` to anchor the first week. For weekly rules, weekdays come from your timeslots; you don't need to specify `BYDAY`.

## Other responses

- `400`: Invalid payload or target IDs
- `401`: Missing or invalid API key
- `403`: API key lacks write scope or an admin creator role
- `500`: Server error

## Changes

- **2026-10-01** `df3363f87c31`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/coram/apis/coram-api/changes/v1/access-control/permissions/post.md)

---

[API](https://skmtc.dev/coram/apis/coram-api.md) - [All operations](https://skmtc.dev/coram/apis/coram-api/llms.txt) - [OpenAPI document](https://skmtc.dev/coram/apis/coram-api/revisions/00df3cfc762f?raw)
