---
title: "Livekit Egress Webhook"
method: POST
path: "/v1/webhooks/livekit/egress"
tags: ["webhooks"]
---

# Livekit Egress Webhook

`POST /v1/webhooks/livekit/egress`

Receive LiveKit egress lifecycle events and reflect them onto the
corresponding session row.

LiveKit's webhooks carry a signed JWT in the `Authorization` header. The
`WebhookReceiver` from `livekit.api` verifies it against our api secret
and parses the body — never trust the payload before that runs.

Events we handle:
  - `egress_started`  → status='active'
  - `egress_updated`  → status='active' (no-op if already active)
  - `egress_ended`    → status='completed' on EGRESS_COMPLETE,
                         status='failed'    on EGRESS_FAILED/ABORTED

Unknown events are 200-OK'd silently — LiveKit retries on non-2xx and
we don't want to enter a retry loop over an event we don't model yet.

## Response `200`

Successful Response

- unknown

---

[API](https://skmtc.dev/roxels/apis/interviewer.md) · [All operations](https://skmtc.dev/roxels/apis/interviewer/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/roxels/interviewer/revisions/4ef48ed226e1/schema)
