# Transcript saved

**Event:** `transcript.saved`

## Description

A meeting transcript (Magic Minutes) has been finalized and is now available.

**Event name:** `transcript:saved`

This webhook provides transcript metadata only. To retrieve the full transcript
content including cues (speaker text), summary, and action items, use
[`/transcript.info`](/docs/chat-api/get-transcript) with the transcript `id` from this payload.

**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 |
|----------|------|----------|-------------|
| `id` | string | No | A unique identifier for the transcript |
| `meetingId` | string | No | A unique identifier for the meeting. A meeting may encompass 0 or multiple transcripts.  |
| `start` | string | No | Exact time when the transcript began |
| `end` | string | No | Exact time when the transcript stopped |
| `participants` | ConversationParticipant[] | No |  |
| `cues` | TranscriptCue[] | No |  |
| `eventName` | string | No | Name of meeting event associated with the transcript (optional) |
| `summary` | string | No | Magic Minutes Summary |
| `actionItems` | TranscriptActionItem[] | No | Action items identified during the meeting. |
| `meetingLinkId` | string | No | Meeting link identifier, if this transcript is from a scheduled calendar event |
| `invitees` | string[] | No | Email addresses of calendar event invitees |

**ConversationParticipant** (array item):

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | string | No |  |
| `email` | string | No |  |
| `unconfirmedEmail` | string | No | Self-reported email address provided by a guest participant. Not verified — the guest was not logged in. |
| `type` | "member" | "guest" | No | Whether the participant is a workspace member or a guest |
| `user` | TaggedUUID | No |  |

**TaggedUUID**:

A UUID prefixed by a tag identifying the specific type of object
**TranscriptCue** (array item):

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `speaker` | string | Yes | Name of the person speaking |
| `text` | string | Yes | The transcribed text of what was said. |
| `startOffset` | integer | Yes | Milliseconds from the start of the transcript when the utterance began. |
| `endOffset` | integer | Yes | Milliseconds from the start of the transcript when the utterance ended. |

**TranscriptActionItem** (array item):

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `title` | string | Yes | Short name for the action item. |
| `description` | string | No | Additional context or details about the action item. |
| `assignee` | string | No | Person responsible for the action item, if known. |

---

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