Initiate a call
offerSdp must be generated by your live WebRTC connection. Check outbound permission and the answer webhook before dialing. A successful response does not mean the recipient answered.
connect also accepts recipient (a business-scoped user ID) instead of, or alongside, to. The phone number wins when both are present.
Pre-accept and accept
Apply the inbound webhook’s SDP offer to your media connection first. Use its generatedanswerSdp for both actions; a hardcoded v=0 string is not an SDP answer. See Receive calls.
Reject and terminate
Check call permission
Managed billing
User-initiated calls are free. Meta charges business-initiated calls based on duration and destination. Kapso managed billing for Calling is available for eligible USD WABAs, including active Multi-partner Solutions. Calling fees are settled from Meta Call Analytics and appear as aggregate USD usage rather than an exact fee for each call. When calls use Kapso infrastructure, Kapso checks billing health and project balance before starting a business-initiated call. When a Tech Provider uses its own infrastructure, Kapso checks Call Analytics about every five minutes and cannot block calls made through that integration. See Multi-partner Solutions for details.Call logs (Kapso)
USER_INITIATED for customer calls and BUSINESS_INITIATED for business calls. The history filter matches the stored direction; older INBOUND or OUTBOUND records retain those values.
Retrieve one saved call by its Meta call ID:
get returns undefined when the ID has no saved record for this number and project. The REST equivalent is GET /meta/whatsapp/{version}/{phone_number_id}/calls?call_id={call_id}&limit=1. Saved records can lag webhooks; keep your own live-call state.
Calling is gradually rolling out in WhatsApp and may not be enabled for all numbers.
For a complete list of Kapso fields and presets, see Kapso Extensions.

