# Recording saved

**Event:** `recording.saved`

## Description

A meeting recording (video) has been finalized and is now available for download / playback.

**Event name:** `recording:saved`

**Required scopes:** Your app must have `user:read` and `user:read.email` scopes to receive participant information in the webhook payload. Without these scopes, participant details will be omitted.

## Webhook Payload

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `recordingId` | string | Yes | Unique identifier for the recording |
| `host` | RecordingParticipant | No | Host (meeting organizer, if available) |
| `location` | string | Yes | Geographic region where the recording took place / storage region |
| `startTime` | string | Yes | ISO-8601 start time of the recording |
| `endTime` | string | Yes | ISO-8601 end time of the recording |
| `videoUrl` | string | No | Direct download URL for the video (if enabled) |
| `transcriptId` | string | No | Identifier for the associated transcript (if available) |
| `participants` | RecordingParticipant[] | No | Participants present in the recording |

**RecordingParticipant**:

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | string | Yes | Display name of the participant |
| `email` | string | No | Primary email address of the participant (if available) |
| `user` | string | Yes | Unique Roam user identifier |

**RecordingParticipant** (array item):

*See RecordingParticipant above*

---

*Machine-readable API documentation.*
*Full documentation: https://developer.ro.am/docs/webhooks-v0-dev/recording-saved*
