Skip to main content

Webhooks

LiveKit can be configured to notify your server when room events take place. This can be helpful for your backend to know when a room has finished, or when a participant leaves.

Webhooks can be enabled by setting the webhook section in config.

webook:
api_key: 'api-key-to-sign-with'
urls:
- 'https://yourhost'

Receiving webhooks

Webhook requests are HTTP POST requests sent to URLs that you specify in the config. A WebhookEvent is sent as the body of the request, encoded in JSON.

In order to ensure the requests are coming from LiveKit, the requests carry a Authentication header, containing a signed JWT token. The token includes a sha256 hash of the payload.

LiveKit server SDKs provide webhook receiver libraries that will help with validation and decoding of the payload.

TypeScript
import { WebhookReceiver } from 'livekit-server-sdk';

const receiver = new WebhookReceiver("apikey", "apisecret");

// assuming using express.raw
app.post('/webhook-endpoint', (req, res) => {
// event is a WebhookEvent object
const event = receiver.receive(req.body, req.get('Authorization'))
})

Events

Room Started

interface WebhookEvent {
event: 'room_started'
room: Room
}

Room Finished

interface WebhookEvent {
event: 'room_finished'
room: Room
}

Participant Joined

interface WebhookEvent {
event: 'participant_joined'
room: Room
participant: Participant
}

Participant Left

interface WebhookEvent {
event: 'participant_left'
room: Room
participant: Participant
}