> ## Documentation Index
> Fetch the complete documentation index at: https://docs.archal.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Cal.com

> Event types, schedules, availability slots, bookings, calendars, and webhooks.

Cal.com is included in Archal's environment catalog. Use it in a sandbox for event types, schedules, availability slots, bookings, calendars, and webhooks.

| | |
| - | - |
| Environment ID | `calcom` |
| Transport | REST and MCP |
| State | JSON |
| Contract | `archal.environment-state.calcom` version `1` |
| Channel | Public |
| Curated samples | 5 |

Public means the environment is released and startable. It still describes a bounded provider surface, not a promise that every upstream operation exists.

## Compatibility boundary

**Local catalog validation:** All five published samples passed. Checks cover the state contract, relationships, artifact hash, secret scan, and size limit.

> [!NOTE]
>
> Local catalog validation is not hosted proof. Archal checks current certification, reset, and isolation evidence before admitting new sandboxes. Use the authenticated environment catalog for live availability.

* Time-zone and organization-admin behavior require operation-specific verification.

## Curated starting states

List the five samples with `archal sample list calcom`. Each sample is a versioned starting state with a representative read, mutation, expected diff, reset expectation, and verified artifact hash.

> [accordion] Cal.com bookable event
>
> Expose one user, schedule, and 15-minute event type with a valid future slot.
>
> **Sample ID:** `calcom.bookable-event.v1`
>
> **Category:** `minimal`
>
> **Starting state:** 3 records across `eventTypes`: 1, `schedules`: 1, `users`: 1
>
> **Supported surface:** Stateful users, event types, schedules, availability, and booking workflows.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.bookings`
>
> **First read:** `GET /v2/event-types`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v2/bookings`. Expected result: HTTP 200, 201, 204.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "attendee": {
>     "email": "maya.chen@example.test",
>     "name": "Maya Chen",
>     "timeZone": "America/Los_Angeles"
>   },
>   "eventTypeId": 5898555,
>   "start": "2027-01-15T18:00:00.000Z"
> }
> ```
>
> **Expected diff:** changes include `bookings`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Time-zone and organization-admin behavior require operation-specific verification.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show calcom.bookable-event.v1 --raw > archal-calcom-bookable-event.json
> archal state validate calcom archal-calcom-bookable-event.json
> archal session create calcom \
>   --state calcom=archal-calcom-bookable-event.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show calcom.bookable-event.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/calcom/bookable-event/state.json` and is 7,114 bytes. The CLI verifies SHA-256 `fba93b07769939b26fb221877c9c650437119e5e83030d10b18760a72282d83e` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] Cal.com scheduling team
>
> Model one scheduler with multiple meeting lengths, a calendar, and a webhook.
>
> **Sample ID:** `calcom.scheduling-team.v1`
>
> **Category:** `small-team`
>
> **Starting state:** 7 records across `calendars`: 1, `eventTypes`: 3, `schedules`: 1, `users`: 1, `webhooks`: 1
>
> **Supported surface:** Stateful users, event types, schedules, availability, and booking workflows.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.bookings`
>
> **First read:** `GET /v2/event-types`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v2/bookings`. Expected result: HTTP 200, 201, 204.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "attendee": {
>     "email": "maya.chen@example.test",
>     "name": "Maya Chen",
>     "timeZone": "America/Los_Angeles"
>   },
>   "eventTypeId": 5898555,
>   "start": "2027-01-15T18:00:00.000Z"
> }
> ```
>
> **Expected diff:** changes include `bookings`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Time-zone and organization-admin behavior require operation-specific verification.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show calcom.scheduling-team.v1 --raw > archal-calcom-scheduling-team.json
> archal state validate calcom archal-calcom-scheduling-team.json
> archal session create calcom \
>   --state calcom=archal-calcom-scheduling-team.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show calcom.scheduling-team.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/calcom/scheduling-team/state.json` and is 19,353 bytes. The CLI verifies SHA-256 `863bc0a89614332519f744c7745291b95b71da0f66ea39ae5815fc042f40273c` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] Cal.com populated event calendar
>
> Use the full reviewed seed for event types, booking reads, calendars, webhooks, and out-of-office state.
>
> **Sample ID:** `calcom.multi-event-calendar.v1`
>
> **Category:** `populated`
>
> **Starting state:** 12 records across `bookings`: 1, `calendars`: 1, `eventTypes`: 4, `outOfOfficeEntries`: 1, `schedules`: 1, `users`: 1, `webhooks`: 3
>
> **Supported surface:** Stateful users, event types, schedules, availability, and booking workflows.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.bookings`
>
> **First read:** `GET /v2/event-types`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v2/bookings`. Expected result: HTTP 200, 201, 204.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "attendee": {
>     "email": "maya.chen@example.test",
>     "name": "Maya Chen",
>     "timeZone": "America/Los_Angeles"
>   },
>   "eventTypeId": 5898555,
>   "start": "2027-01-15T18:00:00.000Z"
> }
> ```
>
> **Expected diff:** changes include `bookings`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Time-zone and organization-admin behavior require operation-specific verification.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show calcom.multi-event-calendar.v1 --raw > archal-calcom-multi-event-calendar.json
> archal state validate calcom archal-calcom-multi-event-calendar.json
> archal session create calcom \
>   --state calcom=archal-calcom-multi-event-calendar.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show calcom.multi-event-calendar.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/calcom/multi-event-calendar/state.json` and is 27,858 bytes. The CLI verifies SHA-256 `b42402d6f9b04282a1f223350fdbb43d93c0a8d5d630459bec166e0db31199ab` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] Cal.com availability conflict
>
> Place a reserved slot inside an out-of-office window to exercise conflict and no-availability behavior.
>
> **Sample ID:** `calcom.availability-conflict.v1`
>
> **Category:** `edge-case`
>
> **Starting state:** 5 records across `eventTypes`: 1, `outOfOfficeEntries`: 1, `reservedSlots`: 1, `schedules`: 1, `users`: 1
>
> **Supported surface:** Stateful users, event types, schedules, availability, and booking workflows.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.bookings`
>
> **First read:** `GET /v2/slots?eventTypeId=5898555&start=2027-01-15&end=2027-01-15`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v2/bookings`. Expected result: HTTP 400.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "attendee": {
>     "email": "maya.chen@example.test",
>     "name": "Maya Chen",
>     "timeZone": "America/Los_Angeles"
>   },
>   "eventTypeId": 5898555,
>   "start": "2027-01-15T18:00:00.000Z"
> }
> ```
>
> **Expected diff:** no state change is expected. Exact match required: yes. The provider-native mutation is expected to fail and produce no state diff.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Time-zone and organization-admin behavior require operation-specific verification.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show calcom.availability-conflict.v1 --raw > archal-calcom-availability-conflict.json
> archal state validate calcom archal-calcom-availability-conflict.json
> archal session create calcom \
>   --state calcom=archal-calcom-availability-conflict.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show calcom.availability-conflict.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/calcom/availability-conflict/state.json` and is 8,213 bytes. The CLI verifies SHA-256 `19d46a02761e57294b6ab4cd9e367e9a7c69993d752043916319d44ace0f0581` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] Cal.com booking lifecycle
>
> Start from one retained booking and reserved slot, create a second booking against the same event type, and verify reset.
>
> **Sample ID:** `calcom.booking-lifecycle.v1`
>
> **Category:** `workflow`
>
> **Starting state:** 5 records across `bookings`: 1, `eventTypes`: 1, `reservedSlots`: 1, `schedules`: 1, `users`: 1
>
> **Supported surface:** Stateful users, event types, schedules, availability, and booking workflows.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.bookings`
>
> **First read:** `GET /v2/event-types`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v2/bookings`. Expected result: HTTP 200, 201, 204.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "attendee": {
>     "email": "maya.chen@example.test",
>     "name": "Maya Chen",
>     "timeZone": "America/Los_Angeles"
>   },
>   "eventTypeId": 5898555,
>   "start": "2027-01-15T18:00:00.000Z"
> }
> ```
>
> **Expected diff:** changes include `bookings`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Time-zone and organization-admin behavior require operation-specific verification.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show calcom.booking-lifecycle.v1 --raw > archal-calcom-booking-lifecycle.json
> archal state validate calcom archal-calcom-booking-lifecycle.json
> archal session create calcom \
>   --state calcom=archal-calcom-booking-lifecycle.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show calcom.booking-lifecycle.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/calcom/booking-lifecycle/state.json` and is 9,638 bytes. The CLI verifies SHA-256 `f364e68d1c81c1a773e5b0cfa32a6b380f936a81d8ba70a04266dff3327e438f` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

## Use custom state

Start from a sample when possible. For custom state, inspect the contract with `archal environment describe calcom`, then validate the file before creating a sandbox:

```bash theme={null}
archal state validate calcom state.json
```

Loading state replaces the current collections and establishes a new reset baseline. See [Starting state](https://docs.archal.ai/sandboxes/starting-state.md) before replacing state in an existing sandbox.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.