Developer API

Webhooks: live call events sent to your server

Get a message on your own server the moment a call starts, is answered, is missed or ends, when a voicemail arrives and when a recording is ready. Every event, its fields and how to check it came from us.

Which plans include it

Included on every plan, including the Free Trial.

Free Trial
Included
Entry
Included
Plus
Included
Growth
Included
Pro
Included
Enterprise
Included

What it means

A webhook is an address on your server. When something happens on a call we send it a short JSON message (an HTTP POST), so your CRM or dashboard updates by itself, with no polling.

What it does

  • call.started: an incoming call rings in on one of your numbers, or one of your users dials out (from a phone, the app or the API).
  • call.answered: the call is picked up. For an outgoing call, the person you rang answered; for an incoming call, one of your users answered.
  • call.ended: the call has finished, with its length and how it ended.
  • call.missed: an incoming call that nobody picked up (it also gets call.ended).
  • voicemail.received: a caller left a voicemail.
  • recording.completed: a call recording is ready, with the id to download it by.
  • payment.succeeded: your Silux Call bill has been paid.
  • payment.failed: a payment did not go through, either your Silux Call bill or a card payment taken over the phone.
  • user.created: a user was added to your account.
  • user.deactivated: a user was switched off or deleted (reason "switched_off" or "deleted").

Every part of the page

callId
The same value on call.started, call.answered, call.ended and call.missed for one call, so you can join them up.
id (call.ended / call.missed)
The call's id in GET /api/v1/calls.
callRecordId (recording.completed)
The id of the call the recording belongs to, the same as id on call.ended.
direction
"inbound" or "outbound".
from / to
The calling and called numbers.
extension
The extension that made or answered the call, when there is one.
status (call.ended)
"answered", "no answer", "busy" or "failed", the same as the call history API.
audioUrl (recording.completed)
Download the MP3 from here with your API key (GET /api/v1/recordings/{recordingId}/audio).
invoiceNumber / amount / currency (payment.succeeded, payment.failed)
The bill, the amount and the currency. On payment.failed, attempt and nextAttemptAt say which try it was and when the next one is.
userId / email / reason (user.created, user.deactivated)
The user who was added, switched off or deleted.
Headers
X-Webhook-Event (the event name), X-Webhook-Timestamp and X-Webhook-Signature.

How to use it

Add a webhook

  1. Open Settings and choose the Webhooks tab.
  2. Press Add Webhook and paste your address. It must start with https:// and be reachable from the internet.
  3. Tick the events you want and press Save Webhook.
  4. Press Send test. "Delivered" means your server answered with a 2xx status.

Change the events later

  1. On the webhook card, click an event to turn it on (✓) or off (+). It saves straight away.

See what was sent

  1. On the webhook card press Deliveries. You see each event, whether it was delivered, the status your server returned and the time.

Check a message came from us

  1. Show the signing secret on the webhook card (eye button) and keep it on your server.
  2. X-Webhook-Signature is an HMAC-SHA256 (hex) of the raw request body exactly as received, using that secret.
  3. Work it out on your side from the raw body (before parsing the JSON) and compare the two values in constant time.
  4. You can also put your own key in the address, for example https://example.co.uk/hook?key=…, and check it on your side.

Examples

call.started (outgoing)

{"event":"call.started","timestamp":"2026-11-05T10:39:57.120Z","tenantId":"…","data":{"callId":"1793820589.25805","direction":"outbound","from":"441632960000","to":"01632960123","extension":"1012","startedAt":"2026-11-05T10:39:57.100Z"}}

call.ended

{"event":"call.ended","data":{"id":"24cb456e-…","callId":"1793820589.25805","direction":"outbound","from":"441632960000","to":"01632960123","status":"answered","durationSeconds":203,"billableSeconds":195,"startedAt":"…","answeredAt":"…","endedAt":"…"}}

recording.completed

{"event":"recording.completed","data":{"recordingId":"9b1f…","callRecordId":"24cb456e-…","from":"441632960000","to":"01632960123","durationSeconds":195,"format":"mp3","audioUrl":"https://www.siluxcall.co.uk/api/v1/recordings/9b1f…/audio"}}

  • ★Reply with a 2xx status straight away and do the work afterwards. We wait up to 10 seconds and try 3 times.
  • ★Use callId to join the events for one call. Events can arrive a second or two apart, and call.ended may arrive before recording.completed.
  • ★After 10 failed deliveries in a row the webhook is switched off. Fix your server, then switch it back to Active on the card.
  • ★Use the call history API to fill any gap, for example after your server was down.

Abbreviations on this page

Webhook
An automatic message our system sends to a web address you choose whenever something happens, such as a call ending. Used to connect other software.
Example: When a call ends, a webhook sends its details to your own system automatically.
API key
A secret password that lets one piece of software use another. Treat it like a password.
Example: Treat an API key like a password: anyone with it can use your account's API.

Questions

Do I need an API key for webhooks?+

No. Webhooks work on their own. You need a key only to download recordings or start calls from your system.

Can I send events to more than one address?+

Yes. Add a webhook for each address.

Why did a call not send call.answered?+

Nobody picked up. Outgoing calls that are not answered send call.started and call.ended; incoming ones also send call.missed.

Already a customer? Open this page in your dashboard: Settings → Webhooks. New to Silux Call? See the plans or start a free trial.

All help topics

Getting started

Phone numbers

How calls are answered

Voicemail & greetings

Making & taking calls

Your team

Desk phones

Recording & reports

SMS & WhatsApp

Smart Voice

Safety & compliance

Account & billing

Developer API

Reseller portal

Plan guides