The Messenger Business Calling API enables VoIP communication between consumers and businesses on Messenger. Consumers use the Messenger app to place and receive calls. Your app interfaces with Messenger through the Graph API and webhooks for call signaling and connection.
When a call is initiated, your app exchanges SDP (Session Description Protocol) offers and answers with Meta through the Graph API to establish a WebRTC connection. Once connected, audio and video streams flow directly over the WebRTC peer connection.
Your app handles call lifecycle events — accepting, rejecting, and terminating calls — through API calls and receives status updates through webhooks.
| Feature | Description |
|---|---|
| Consumer to business calling | Accept, reject, or terminate calls initiated by consumers |
| Business to consumer calling | Initiate outbound calls to consumers, manage permissions |
| Video calling | Enable video during calls, with codec selection and media updates |
| Call settings | Configure call icon visibility, business hours, and inbound call routing |
| Call audio CTA | Add audio call buttons to generic and button templates |
| DTMF | Support touch-tone input for IVR-based systems |
| Metrics | Submit call quality metrics to Meta after each call |
| JS integration | JavaScript code samples for WebRTC peer connection handling |
| Appendix | Sample SDP offer and answer structures |
The Messenger Calling API supports DTMF tones, enabling you to support IVR-based systems for participating businesses.
Consumers can press buttons on the client app, and the DTMF tones are injected into the WebRTC RTP stream established as part of the VoIP connection. The WebRTC stream conforms to RFC 4733 for the transfer of DTMF digits via RTP payload. Note: there is no webhook for conveying DTMF digits.
The Messenger client applications include a dialpad for calls with Messenger businesses. Consumers can press buttons on the client app dialpad to send DTMF tones.
When a consumer presses a digit in the dialpad on the client, the equivalent DTMF is injected into the WebRTC connection. Tone values include digits 0 to 9, #, and *. Duration is 500ms and inter-tone gap is 100ms for all tones.
Before making calls, verify that your Facebook Page has access to the Calling API by sending a POST request to /<PAGE_ID>/business_messaging_feature_status with the feature messenger_api_calling. A status of ENABLED confirms the Page has access.
For more details on errors, see the Messenger Platform error codes reference.
The Messenger Calling API is currently available for Pages in the following countries: