WhatsApp Business Calling — overview
Receive and make WhatsApp voice calls through the public API. Two directions:
- UIC (user-initiated call) — the customer calls your WhatsApp number. Free.
- BIC (business-initiated call) — your system calls the customer. Requires a prior call permission granted by the user.
Meta Cloud API numbers only. On unofficial (QR-paired) numbers every calls endpoint returns 400 with code: "FEATURE_NOT_SUPPORTED". All calls endpoints require a number-scoped API key (x-api-key: ps_...).
Signaling-only architecture
Pilot Status is signaling-only: the API relays SDPs (RFC 8866); audio flows directly between your browser/WebRTC client and WhatsApp — it never passes through Pilot Status servers.
Your side of the integration:
- Your WebRTC client produces an SDP offer (BIC) or SDP answer (UIC).
- You exchange those SDPs through the Calls API (
POST /v1/calls, accept, pre-accept, …).
- Once connected, audio streams peer-to-peer between the client and WhatsApp.
Dashboard softphone — no WebRTC code needed
In the dashboard (/chat) you can answer and place calls straight from the browser with no WebRTC implementation of your own. Use the API only if you want calling inside your own product.
Billing
- BIC calls are billed by Meta directly on the WABA — per minute, in 6-second pulses, and only when the call is answered.
- UIC calls are free.
- Pilot Status does not charge anything for calls.
Webhook events
Subscribe your webhook to call.ringing, call.connected, call.ended, call.missed, call.permission_updated — or "*". The normalized call.* payloads are flat (no data wrapper); Meta’s native calls envelope (raw entry[].changes[].value with the SDPs) is also available for custom WebRTC signaling. See the event reference.
Next steps