Skip to main content
Webhooks push call.* events to your server the moment they happen — call started, ended, recording ready, analysis done, transfers — so you don’t have to poll. Every delivery is HMAC-signed so you can verify it came from Vocily.

Set up an endpoint

Webhooks are configured per agent, in the dashboard:
1

Open the agent

Go to Agents → your agent → Runtime → Webhooks.
2

Add an HTTPS endpoint

Enter your receiver URL, choose which events to subscribe to, and set (or generate) a signing secret. Save it — you’ll need it to verify signatures.
3

Return 2xx fast

Your endpoint should acknowledge with a 2xx within 10 seconds, then process asynchronously.
An endpoint is always active — to stop delivery, delete it. There’s no enable/disable toggle.

The envelope

Every event is a POST with this JSON body:

Delivery headers

Verify Vocily-Signature on every request — see Verifying signatures. The Vocily-Event-Id header is a convenience mirror; dedupe on the body’s event_id, not the header.

Delivery guarantees

At-least-once

An event may arrive more than once. Make your handler idempotent — dedupe on event_id.

No guaranteed order

Order by sequence (or occurred_at), not arrival order.

Retries with backoff

Up to 3 attempts spaced 0s → 2m → 15m. A 429/503 with Retry-After is honored.

Always active

A dead endpoint keeps being retried until attempts are exhausted; it’s never auto-disabled. Delete it to stop.

See all events →

The 7 call.* events with complete payload examples.