---
title: "Add an iCal calendar"
method: POST
path: "/api/apps/room_booking/{installation_id}/calendars"
tags: ["Apps - Room Booking"]
---

# Add an iCal calendar

`POST /api/apps/room_booking/{installation_id}/calendars`

## Request

- Base URL: `https://trmnl.com`
- URL: `https://trmnl.com/api/apps/room_booking/{installation_id}/calendars`
- Auth: HTTP bearer

An iCal feed is read-only: its events show on the screen but bookings are made in the source calendar. Google and Microsoft calendars are connected in the browser, since they need the owner to sign in.

## Request body

- object
  - `name` string, required
  - `ics_url` string, required: http, https or webcal
  - `timezone` string, nullable: IANA name; the installation time zone when left out
  - `capacity` integer, nullable
  - `show_booking_qr` boolean
  - `show_company_logo` boolean

## Response `200`

Created

- object
  - `data` RoomBookingCalendar
    - `id` string: "<kind>:<number>", the id every calendar operation takes
    - `kind` 'ical' | 'google' | 'microsoft'
    - `name` string
    - `timezone` string
    - `capacity` integer, nullable
    - `show_booking_qr` boolean
    - `show_company_logo` boolean
    - `feed_backed` boolean: Read-only feed: bookings are made in the source calendar, not here
    - `ics_url` string, nullable: iCal calendars only
    - `resource_kind` string, nullable: Google and Microsoft calendars only
    - `booking_mode` 'null' | 'reservable' | 'on_demand' | 'unavailable', nullable: Google and Microsoft calendars only
    - `last_synced_at` string, date_time, nullable
    - `last_sync_error` string, nullable
    - `bound_device_ids` integer[]: Devices showing this calendar
    - `url_display_url` string, nullable: Browser display URL, or null when no URL display is configured
    - `public_booking_token` string, nullable: Public booking token, when Booking with TRMNL is open
    - `public_booking_url` string, nullable

## Other responses

- `401`: Unauthorized
- `402`: Billing is locked until the subscription is settled
- `404`: Installation belongs to another user
- `422`: Refused

---

[API](https://skmtc.dev/trmnl/apis/trmnl-api.md) · [All operations](https://skmtc.dev/trmnl/apis/trmnl-api/llms.txt) · [OpenAPI document](https://skmtc.dev/trmnl/apis/trmnl-api/revisions/66179e6d663b?raw)
