Customer webhooks
Send LiveKit call events to your HTTPS endpoint and track delivery.
Custom APIs during a call
Add a Custom API tool in the agent editor. Define its HTTPS URL, GET/POST method and parameters. Save a Bearer key in the separate key field if needed.
GET parameters become query fields and POST parameters are sent as JSON. POST actions require caller confirmation. Return clear failure results and protect your API against duplicate operations.
Events and payload
Choose an endpoint and events on Webhooks. call_started fires when the conversation starts; call_ended when it ends, while transcript or billing may still be processing. call_analyzed signals settled billing and a complete or partial transcript, not a separate AI summary or analysis. Recording may become ready later.
The body contains event, timestamp, delivery_id and call. call includes call/agent IDs, status, duration, cost in USD, transcript and recording status. Oversized transcripts are omitted with transcript_omitted=true; download the full text in the dashboard. API keys, agent instructions and internal costs are excluded.
Signatures and retries
X-Xenith-Signature is lowercase hex HMAC-SHA256 of the raw HTTP body using the webhook secret shown in the dashboard. Verify before reformatting JSON. Deduplicate using X-Xenith-Delivery-Id. timestamp is the event time in milliseconds and remains unchanged on retry.
Return 2xx. Redirects are not followed; only public HTTPS endpoints are accepted. Failed sends remain queued for up to 5 total attempts. A background scan is scheduled roughly every 5 minutes and can be delayed; delivery timing and order are not guaranteed. Review delivery status in the dashboard and Retry failed deliveries. Disabling or deleting a webhook stops pending sends.