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

# Webhooks

> tl;dv incoming webhooks: event paths, payloads, and response data.

The tl;dv plugin handles incoming webhooks. Point your provider’s subscription URL at your Corsair HTTP handler (see [Overview](https://docs.corsair.dev/plugins/tldv/overview.md) for setup context and the exact URL shape).

> [!NOTE]
>
> **New to Corsair?** See [webhooks](https://docs.corsair.dev/concepts/webhooks.md) and [hooks](https://docs.corsair.dev/concepts/hooks.md).

## Webhook map

* `meetings`
  * `meetingReady` (`meetings.meetingReady`)
* `transcripts`
  * `transcriptReady` (`transcripts.transcriptReady`)

## HTTP handler setup

```ts app/api/webhook/route.ts theme={null}
import { processWebhook } from "corsair";
import { corsair } from "@/server/corsair";

export async function POST(request: Request) {
    const headers = Object.fromEntries(request.headers);
    const body = await request.json();
    const result = await processWebhook(corsair, headers, body);
    return result.response;
}
```

## Events

## Meetings

### Meeting Ready

`meetings.meetingReady`

A meeting finished processing. Carries its notes when they exist, and its transcript when the subscription includes one

**Payload**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | Webhook delivery id |
| `event` | `MeetingReady` | Yes | — |
| `data` | `object` | Yes | — |
| `executedAt` | `string \| null` | No | ISO 8601 timestamp |

> [accordion] data full type
>
> ```ts theme={null}
> {
>   id: string,
>   name: string,
>   happenedAt: string,
>   url: string,
>   duration: number,
>   organizer: {
>     name?: string | null,
>     email: string
>   },
>   invitees: {
>     name?: string | null,
>     email: string
>   }[],
>   template?: {
>     id?: string | null,
>     label?: string | null
>   } | null,
>   extraProperties?: {
>     conferenceId?: string | null
>   } | null,
>   phoneNumber?: string | null,
>   metadata?: Record<string, any> | null,
>   notes?: {
>     markdownContent?: string | null,
>     structuredNotes?: {
>       segmentId?: string | null,
>       timestamp: number,
>       text?: string | null,
>       topicId?: string | null
>     }[] | null,
>     topics?: {
>       id: string,
>       order: number,
>       title: string,
>       summary?: string | null
>     }[] | null
>   } | null,
>   transcript?: {
>     id: string,
>     meetingId: string,
>     data: {
>       speaker: string,
>       text: string,
>       startTime: number,
>       endTime: number
>     }[]
>   } | null
> }
> ```

> [accordion] Response data full type
>
> ```ts theme={null}
> {
>   id: string,
>   event: MeetingReady,
>   data: {
>     id: string,
>     name: string,
>     happenedAt: string,
>     url: string,
>     duration: number,
>     organizer: {
>       name?: string | null,
>       email: string
>     },
>     invitees: {
>       name?: string | null,
>       email: string
>     }[],
>     template?: {
>       id?: string | null,
>       label?: string | null
>     } | null,
>     extraProperties?: {
>       conferenceId?: string | null
>     } | null,
>     phoneNumber?: string | null,
>     metadata?: Record<string, any> | null,
>     notes?: {
>       markdownContent?: string | null,
>       structuredNotes?: {
>         segmentId?: string | null,
>         timestamp: number,
>         text?: string | null,
>         topicId?: string | null
>       }[] | null,
>       topics?: {
>         id: string,
>         order: number,
>         title: string,
>         summary?: string | null
>       }[] | null
>     } | null,
>     transcript?: {
>       id: string,
>       meetingId: string,
>       data: {
>         speaker: string,
>         text: string,
>         startTime: number,
>         endTime: number
>       }[]
>     } | null
>   },
>   executedAt?: string | null
> }
> ```

**`webhookHooks` example**

```ts theme={null}
tldv({
    webhookHooks: {
        meetings: {
            meetingReady: {
                before(ctx, args) {
                    return { ctx, args };
                },
                after(ctx, response) {
                },
            },
        },
    },
})
```

***

## Transcripts

### Transcript Ready

`transcripts.transcriptReady`

A meeting transcript has been generated

**Payload**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | Webhook delivery id |
| `event` | `TranscriptReady` | Yes | — |
| `data` | `object` | Yes | — |
| `executedAt` | `string \| null` | No | ISO 8601 timestamp |

> [accordion] data full type
>
> ```ts theme={null}
> {
>   id: string,
>   meetingId: string,
>   data: {
>     speaker: string,
>     text: string,
>     startTime: number,
>     endTime: number
>   }[]
> }
> ```

> [accordion] Response data full type
>
> ```ts theme={null}
> {
>   id: string,
>   event: TranscriptReady,
>   data: {
>     id: string,
>     meetingId: string,
>     data: {
>       speaker: string,
>       text: string,
>       startTime: number,
>       endTime: number
>     }[]
>   },
>   executedAt?: string | null
> }
> ```

**`webhookHooks` example**

```ts theme={null}
tldv({
    webhookHooks: {
        transcripts: {
            transcriptReady: {
                before(ctx, args) {
                    return { ctx, args };
                },
                after(ctx, response) {
                },
            },
        },
    },
})
```

***


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