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

> ## Agent Instructions
> Automate.ax automations are TypeScript programs.
> Use Bun for installation and command examples.
> Use Automate.ax for the product name and automate.ax for the package, CLI, and domain.
> Treat documented public APIs as current; do not invent transitional or deprecated names.

# On recording ready

> Subscribes when a Cal Video recording is ready.

`calcom.onRecordingReady` subscribes when a Cal Video recording is ready.

```ts automations/on-recording-ready.automation.ts theme={null}
import { automation, markSignificant } from "automate.ax"
import { calcom } from "automate.ax/calcom"

export default automation("On recording ready", () => {
  const event = calcom.onRecordingReady()
  markSignificant(event)
})
```

## Event

| Field                                 | Type                 | Required |
| ------------------------------------- | -------------------- | -------- |
| `createdAt`                           | `string (date-time)` | Yes      |
| `payload`                             | `object`             | Yes      |
| `payload.attendees`                   | `object[]`           | Yes      |
| `payload.attendees[].email`           | `string (email)`     | Yes      |
| `payload.attendees[].id`              | `integer`            | No       |
| `payload.attendees[].language`        | `object`             | Yes      |
| `payload.attendees[].language.locale` | `string`             | Yes      |
| `payload.attendees[].name`            | `string`             | Yes      |
| `payload.attendees[].phoneNumber`     | `string \| null`     | No       |
| `payload.attendees[].timeZone`        | `string`             | Yes      |
| `payload.attendees[].username`        | `string \| null`     | No       |
| `payload.attendees[].utcOffset`       | `number`             | No       |
| `payload.endTime`                     | `string`             | Yes      |
| `payload.organizer`                   | `object`             | Yes      |
| `payload.organizer.email`             | `string (email)`     | Yes      |
| `payload.organizer.id`                | `integer`            | No       |
| `payload.organizer.language`          | `object`             | Yes      |
| `payload.organizer.language.locale`   | `string`             | Yes      |
| `payload.organizer.name`              | `string`             | Yes      |
| `payload.organizer.phoneNumber`       | `string \| null`     | No       |
| `payload.organizer.timeZone`          | `string`             | Yes      |
| `payload.organizer.username`          | `string \| null`     | No       |
| `payload.organizer.utcOffset`         | `number`             | No       |
| `payload.startTime`                   | `string`             | Yes      |
| `payload.title`                       | `string`             | Yes      |
| `payload.uid`                         | `string`             | Yes      |
| `payload.downloadLink`                | `string (uri)`       | Yes      |
| `triggerEvent`                        | `"RECORDING_READY"`  | Yes      |

Additional provider fields are preserved.

Automate.ax creates and maintains the Cal.com webhook, verifies `x-cal-signature-256`, and deduplicates provider retries. Use `calcom.onEvent` when one automation should receive every supported Cal.com event.
