API and Webhook Reference | Developer Documentation
API and Webhook Reference
Updated: Nov 25, 2025
Calling API endpoints
Configure or update calling settings
Call the Update Phone Number Settings endpoint and pass in Calling API parameters to configure settings on a business phone number you designate in the request syntax.
Request
syntax
POST /<PHONE_NUMBER_ID>/settingsEndpoint parameters
<PHONE_NUMBER_ID>Integer
Required
The business phone number for which you are updating Calling API settings.
+12784358810Request
body
{"calling": {"status":"ENABLED","call_icon_visibility":"DEFAULT","call_hours": {"status":"ENABLED","timezone_id":"America/Manaus","weekly_operating_hours": [{"day_of_week":"MONDAY","open_time":"0400","close_time":"1020"},{"day_of_week":"TUESDAY","open_time":"0108","close_time":"1020"}],"holiday_schedule": [{"date":"2026-01-01","start_time":"0000","end_time":"2359"}]},"callback_permission_status":"ENABLED","sip": {"status":"ENABLED | DISABLED (default)","servers": [{"hostname": SIP_SERVER_HOSTNAME,"port": SIP_SERVER_PORT,"request_uri_user_params": {"KEY1":"VALUE1","KEY2":"VALUE2"}}]}}}
Body parameters
| | |
| ||
| | |
| | |
|
|
Parameter details: Calling status
When the
status parameter is set to “ENABLED”, calling features are enabled for the business phone number. WhatsApp client applications will render the call button icon in both the business chat and business chat profile.When the
status parameter is set to “DISABLED”, calling features are disabled, and both the business chat and business chat profile do not display the call button icon.Updates to
status will update the call button icon in existing business chats in near real-time when the business phone number is in the WhatsApp user’s contacts.Otherwise, updates are real-time for a limited number of users in conversation with the business, and are eventually updated for the rest of conversations.
Parameter details: Call button icon visibility
When Calling API features are enabled for a business number, you can still choose whether to show the call button icon or not by using the
call_icon_visibility parameter. Note: Disabling call button icon visibility does not disable a WhatsApp user’s ability to make unsolicited calls to your business.The behavior for supported options is as follows:
DEFAULTThe Call button icon will be displayed in the chat menu bar and the business info page, allowing for unsolicited calls to the business by WhatsApp users.

DISABLE ALLThe call button icon is hidden in the chat menu bar and the business info page, and all other entry points external to the chat are also disabled. Consumers cannot make unsolicited calls to the business.
Your business can still send interactive messages or template messages with a Calling API CTA button.

Callback permissions
Calling a WhatsApp user requires explicit permission from the user. One way to obtain calling permissions is to request permission when a WhatsApp user calls your business.
You can configure the call permission UI to automatically show in the WhatsApp user’s client app when they call your business number. The user may change their permission selection at any time.

Call
hours
call_hourscallback_permission_statusENABLED
"call_hours": {"status":"ENABLED","timezone_id":"America/Manaus","weekly_operating_hours": [{"day_of_week":"MONDAY","open_time":"04:00","close_time":"10:20"},{"day_of_week":"TUESDAY","open_time":"01:08","close_time":"10:20"}],"holiday_schedule": [{"date":"2026-01-01","start_time":"00:00","end_time":"23:59"}]}
| | |||
| | |||
|
|
| ||
|
|
|
Success response
{
"success": true
}
Error response
Possible errors that can occur:
call_hoursHoliday given in call_hours is a past dateTimezone is invalid in call_hoursweekly_operating_hours in call_hours cannot be emptyDate format in holiday_schedule for call_hours is invalidMore than 2 entries not allowed in weekly_operating_hours schedule in call_hoursOverlapping schedule in call_hours is not allowed
Get phone number calling settings
Call the Get Phone Number Settings endpoint to retrieve Calling API settings on an individual business phone number you designate in the request syntax.
This endpoint can return information for other Cloud API feature settings.
Request
syntax
POST /<PHONE_NUMBER_ID>/settingsEndpoint parameters
<PHONE_NUMBER_ID>Integer
Required
+12784358810App permission required
whatsapp_business_management: Advanced access is required to use the API for end business clientsResponse
body
{"calling": {"status":"ENABLED","call_icon_visibility":"DEFAULT","call_hours": {"status":"ENABLED","timezone_id":"America/Manaus","weekly_operating_hours": [{"day_of_week":"MONDAY","open_time":"0400","close_time":"1020"},{"day_of_week":"TUESDAY","open_time":"0108","close_time":"1020"}],"holiday_schedule": [{"date":"2026-01-01","start_time":"0000","end_time":"2359"}]},"callback_permission_status":"ENABLED","sip": {"status":"ENABLED | DISABLED (default)","servers": [{"hostname": SIP_SERVER_HOSTNAME,"port": SIP_SERVER_PORT,"request_uri_user_params": {"KEY1":"VALUE1","KEY2":"VALUE2"}}]}}}
Include SIP user password
POST /<PHONE_NUMBER_ID>/settings?include_sip_credentials=true{"calling": {... // other calling api settings"sip": {"status":"ENABLED","servers": [{"hostname":"sip.example.com","sip_user_password":"{SIP_USER_PASSWORD}"}]}}}
Response details
The
GET /<PHONE_NUMBER_ID>/settings endpoint returns Calling API settings, along with other configuration information for your WhatsApp business phone number.Error response
Possible errors that can occur:
Pre-accept call
When you pre-accept an inbound call, you allow the calling media connection to be established before attempting to send call media through the connection.
When you then call the accept call endpoint, media begins flowing immediately since the connection has already been established.
Pre-accepting calls is recommended because it facilitates faster connection times and avoids audio clipping issues.
There is about 30 to 60 seconds after the Call Connect webhook is sent for the business to accept the phone call. If the business does not respond, the call is terminated on the WhatsApp user side with a “Not Answered” notification and a Terminate Webhook is delivered back to you.
Note: Since the WebRTC connection is established before calling the Accept Call endpoint, make sure to flow the call media only after you receive a 200 OK response back.
If call media flows too early, the caller will miss the first few words of the call. If call media flows too late, callers will hear silence.
RequestBody syntaxparameters
POST
<PHONE_NUMBER_ID>/calls<PHONE_NUMBER_ID>+12784358810Request body
{"messaging_product":"whatsapp","call_id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","action":"pre_accept","session":{"sdp_type":"answer","sdp":"<<RFC 8866 SDP>>"}}Body parameters
call_idString |
Required
For inbound calls, you receive a call ID from the Call Connect webhook when a WhatsApp user initiates the call.
“wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh”actionString
Optional
Values can be
connect | pre_accept | accept | reject | terminate“pre_accept”sessionJSON object
Optional
Requires two values:
sdp_type — (String) Required“offer”, to indicate SDP offer
sdp — (String) RequiredThe SDP info of the device on the other end of the call. The SDP must be compliant with RFC 8866.
"session":{"sdp_type":"offer","sdp":"<<RFC 8866 SDP>>"}Success response
{"messaging_product":"whatsapp","success":true}Error response
Possible errors that can occur:
call-idInvalid phone-number-idError related to your payment methodInvalid Connection info, for example, sdp, iceAccept/Reject an already In Progress/Completed/Failed callPermissions/Authorization errors
Accept call
Use this endpoint to connect to a call by providing a call agent’s SDP.
You have about 30 to 60 seconds after the Call Connect Webhook is sent to accept the phone call. If your business does not respond, the call is terminated on the WhatsApp user side with a “Not Answered” notification and a Terminate Webhook is delivered back to you.
Request
syntax
POST <PHONE_NUMBER_ID>/calls | |
Request body
{"messaging_product":"whatsapp","call_id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","action":"accept","session":{"sdp_type":"answer","sdp":"<<RFC 8866 SDP>>"},"biz_opaque_callback_data":"random_string"}Body parameters
|
| ||
|---|---|---|
| | |
| | |
| | |
| | |
Success response
{"messaging_product":"whatsapp","success":true}Error response
Possible errors that can occur:
call-idInvalid phone-number-idError related to your payment methodInvalid Connection info, for example, sdp, ice, or other connection parametersAccept/Reject an already In Progress/Completed/Failed callPermissions/Authorization errorsSDP answer provided in accept does not match the SDP answer given in the Pre-Accept endpoint for the same call-id
Reject call
Use this endpoint to reject a call.
You have about 30 to 60 seconds after the Call Connect webhook is sent to accept the phone call. If the business does not respond, the call is terminated on the WhatsApp user side with a “Not Answered” notification and a Terminate Webhook is delivered back to you.
RequestBody syntaxparameters
POST
<PHONE_NUMBER_ID>/calls<PHONE_NUMBER_ID>+12784358810Request body
{"messaging_product":"whatsapp","call_id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","action":"reject"}Body parameters
call_idString |
Required
For inbound calls, you receive a call ID from the Call Connect webhook when a WhatsApp user initiates the call.
“wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh”actionString
Optional
Values can be
connect | pre_accept | accept | reject | terminate“reject”Success response
{"messaging_product":"whatsapp","success":true}Error response
Possible errors that can occur:
call-idInvalid phone-number-idAccept/Reject an already In Progress/Completed/Failed callPermissions/Authorization errors
Initiate call
Use this endpoint to initiate a call to a WhatsApp user by providing a phone number and a WebRTC call offer.
Request
syntax
POST <PHONE_NUMBER_ID>/calls | |
Request body
{"messaging_product":"whatsapp","to":"14085551234","action":"connect","session":{"sdp_type":"offer","sdp":"<<RFC 8866 SDP>>"},"biz_opaque_callback_data":"0fS5cePMok"}Body parameters
|
| ||
|---|---|---|
| | |
| | |
| | |
| | |
Success response
{"messaging_product":"whatsapp","calls":[{"id":"wacid.ABGGFjFVU2AfAgo6V",}]}Error response
Possible errors that can occur:
phone-number-idPermissions/Authorization errorsRequest format validation errors, for example connection info, sdp, iceSDP validation errors
Terminate call
Use this endpoint to terminate an active call.
This must be done even if there is an
RTCP BYE packet in the media path. Ending the call this way also ensures pricing is more accurate.When the WhatsApp user terminates the call, you do not have to call this endpoint. Once the call is successfully terminated, a Call Terminate Webhook will be sent to you.
RequestBody syntaxparameters
POST
<PHONE_NUMBER_ID>/calls<PHONE_NUMBER_ID>18274459827Request body
{"messaging_product":"whatsapp","call_id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","action":"terminate"}Body parameters
call_idString |
Required
For inbound calls, you receive a call ID from the Call Connect webhook when a WhatsApp user initiates the call.
“wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh”actionString
Required
Values can be
connect | pre_accept | accept | reject | terminate“terminate”Success response
{"messaging_product":"whatsapp","success":true}Error response
Possible errors that can occur:
call idInvalid phone-number-idThe WhatsApp user has already terminated the callReject call is already in progressPermissions/Authorization errors
Get current call permission state
Use this endpoint to get the call permission state for a business phone number with a single WhatsApp user phone number.
Request
syntax
GET /<PHONE_NUMBER_ID>/call_permissions?user_wa_id=<CONSUMER_WHATSAPP_ID>Request parameters
<PHONE_NUMBER_ID>String
Required
+18762639988<CONSUMER_WHATSAPP_ID>Integer
Required
+13057765456Response
body
{"messaging_product":"whatsapp","permission":{"status":"temporary","expiration_time":1745343479},"actions":[{"action_name":"send_call_permission_request","can_perform_action":true,"limits":[{"time_period":"PT24H","max_allowed":1,"current_usage":0,},{"time_period":"P7D","max_allowed":2,"current_usage":1,}]},{"action_name":"start_call","can_perform_action":false,"limits":[{"time_period":"PT24H","max_allowed":5,"current_usage":5,"limit_expiration_time":1745622600,}]}}}Response parameters
|
| |
|---|---|
| |
| |
| |
Error response
Possible errors that can occur:
phone-number-idIf the consumer phone number is uncallable, the api response will be no_permission.Permissions/Authorization errors.Rate limit reached. A maximum of 5 requests in a 1 second window can be made to the API.Calling is not enabled for the business phone number.
Calling
API Webhooks
Call Connect webhook
SDP AnswerSDP Answer{"object":"whatsapp_business_account","entry":[{"id":"<WHATSAPP_BUSINESS_ACCOUNT_ID>","changes":[{"value":{"messaging_product":"whatsapp","metadata":{"display_phone_number":"16315553601","phone_number_id":"<PHONE_NUMBER_ID>"},"contacts":[{"profile":{"name":"<CALLEE_NAME>"},"wa_id":"16315553602"}],"calls":[{"id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","to":"16315553601","from":"16315553602","event":"connect","timestamp":"1671644824","direction":"BUSINESS_INITIATED","session":{"sdp_type":"answer","sdp":"<<RFC 8866 SDP>>"}}]},"field":"calls"}]}]}Webhook values for "calls"
| |
| |
| |
| |
| |
| |
| |
| |
Call status webhook
{"object":"whatsapp_business_account","entry":[{"id":"<WHATSAPP_BUSINESS_ACCOUNT_ID>","changes":[{"value":{"messaging_product":"whatsapp","metadata":{"display_phone_number":"16315553601","phone_number_id":"<PHONE_NUMBER_ID>",},"statuses":[{"id":"wacid.ABGGFjFVU2AfAgo6V","timestamp":"1671644824","type":"call""status":"[RINGING|ACCEPTED|REJECTED]","recipient_id":"163155536021","biz_opaque_callback_data":"random_string",}]},"field":"calls"}]}]}Webhook values for "statuses"
| |
| |
| |
| |
|
Call terminate webhook
POST /<PHONE_NUMBER_ID>/callsterminatereject{"object":"whatsapp_business_account","entry":[{"id":"<WHATSAPP_BUSINESS_ACCOUNT_ID>","changes":[{"value":{"messaging_product":"whatsapp","metadata":{"display_phone_number":"16505553602","phone_number_id":"<PHONE_NUMBER_ID>",},"calls":[{"id":"wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh","to":"16315553601","from":"16315553602","event":"terminate""direction":"BUSINESS_INITIATED","biz_opaque_callback_data":"random_string","timestamp":"1671644824","status":[FAILED | COMPLETED],"start_time":"1671644824","end_time":"1671644944","duration":120}],"errors":[{"code": INT_CODE,"message":"ERROR_TITLE","href":"ERROR_HREF","error_data":{"details":"ERROR_DETAILS"}}]},"field":"calls"}]}]}Webhook values for "calls"
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
User calling permission request webhook
Webhook sample
{..."messages":[{"from":"{customer_phone_number}","id":"wamid.sH0kFlaCGg0xcvZbgmg90lHrg2dL","timestamp":"{timestamp}","context":{"from":"{customer_phone_number}","id":"wacid.gBGGFlaCmZ9plHrf2Mh-o"},"interactive":{"type":"call_permission_reply","call_permission_reply":{"response":"accept","is_permanent":false,"expiration_timestamp":"{timestamp}","response_source":"[user_action|automatic]"}}],...}Webhook sample (with permanent permissions)
"messages":[{"from":"{customer_phone_number}","id":"wamid.sH0kFlaCGg0xcvZbgmg90lHrg2dL","timestamp":"{timestamp}","context":{"from":"{customer_phone_number}","id":"wacid.gBGGFlaCmZ9plHrf2Mh-o"},"interactive":{"type":"call_permission_reply","call_permission_reply":{"response":"accept","is_permanent":false,"expiration_timestamp":"{timestamp}","response_source":"[user_action|automatic]"}}],...}Webhook values
| |
| |
| |
| |
| |
SDP overview and sample SDP structures
Session Description Protocol (SDP) is a text-based format that describes multimedia session characteristics, such as voice and video calls, in real-time communication applications. SDP provides a standardized way to convey information about the session’s media streams, including the type of media, codecs, protocols, and other parameters necessary for establishing and managing the session.
In the context of WebRTC, SDP is used to negotiate the media parameters between the sender and receiver, enabling them to agree on the specifics of the media exchange.
Business-initiated sample SDP structures
Sample SDP offer structure
v=0
o=-36261663187458529552 IN IP4 127.0.0.1
s=-
t=00
a=group:BUNDLE 0
a=extmap-allow-mixed
a=msid-semantic: WMS d8b26053-4474-4eb7-b3c3-c93d6c8c9b2e
m=audio 9 UDP/TLS/RTP/SAVPF 11163908110126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:4g1c
a=ice-pwd:qY/Bb+jQzg5ICn6X4fhJQetk
a=ice-options:trickle
a=fingerprint:sha-25635:47:24:24:9F:93:C4:3E:DB:37:7F:BB:ED:F8:20:B5:AD:AC:DC:35:C2:7D:67:EE:6C:35:54:DF:A6:00:5C:4A
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=sendrecv
a=msid:d8b26053-4474-4eb7-b3c3-c93d6c8c9b2e 5b4d3d96-ea9b-44a8-87e6-11a1ad21a3bc
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:63 red/48000/2
a=fmtp:63111/111
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:126 telephone-event/8000
a=ssrc:2220762577 cname:w/zwpg3jXNiTFTdZ
a=ssrc:2220762577 msid:d8b26053-4474-4eb7-b3c3-c93d6c8c9b2e 5b4d3d96-ea9b-44a8-87e6-11a1ad21a3bcSample SDP answer structure
v=0
o=-7418078391020537252 IN IP4 127.0.0.1
s=-
t=00
a=group:BUNDLE 0
a=extmap-allow-mixed
a=msid-semantic: WMS 798a9670-c0d6-47a8-925e-5f082ef4d8a0
a=ice-lite
m=audio 3482 UDP/TLS/RTP/SAVPF 111908110126
c=IN IP4 31.13.65.130
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:27549362801 udp 211393715131.13.65.1303482 typ host generation 0 network-cost 50 ufrag JHqAXFH4HcAY/8
a=candidate:15814963991 udp 21139397112a03:2880:f211:d1:face:b00c:0:699c3482 typ host generation 0 network-cost 50 ufrag JHqAXFH4HcAY/8
a=ice-ufrag:JHqAXFH4HcAY/8
a=ice-pwd:dNNMmR8wUcGezvfBZOO0Qgcwl2m86GP/
a=ice-options:trickle
a=fingerprint:sha-2569C:97:5C:4C:A9:BE:9E:2F:06:94:F5:BB:38:2C:A1:29:B5:69:B8:FA:94:10:56:1D:0B:5D:80:28:C1:FD:F0:F6
a=setup:active
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:126 telephone-event/8000
a=ssrc:3407645770 cname:bg8KQDoIk2UJa6sf
a=ssrc:3407645770 msid:798a9670-c0d6-47a8-925e-5f082ef4d8a0 audio#nuxVMf9EAJX
a=ssrc:3407645770 mslabel:798a9670-c0d6-47a8-925e-5f082ef4d8a0
a=ssrc:3407645770 label:audio#nuxVMf9EAJXUser-initiated sample SDP structures
Sample SDP offer structure
v=0
o=-76025637897899450802 IN IP4 127.0.0.1
s=-
t=00
a=group:BUNDLE audio
a=msid-semantic: WMS 6932bc1c-db1a-4abe-b437-0c4168be8a13
a=ice-lite
m=audio 40012 UDP/TLS/RTP/SAVPF 111126
c=IN IP4 31.13.65.60
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:19726373201 udp 211393715131.13.65.6040012 typ host generation 0 network-cost 50 ufrag 6k2qP1R6kBfI/2
a=candidate:16522627911 udp 21139397112a03:2880:f211:cf:face:b00c:0:644340012 typ host generation 0 network-cost 50 ufrag 6k2qP1R6kBfI/2
a=ice-ufrag:6k2qP1R6kBfI/2
a=ice-pwd:UApvJw3NcwFRDvIMKdM0vWCdlXah25E9
a=fingerprint:sha-2561B:B6:6B:40:A5:0B:8C:75:0D:8C:CB:90:2F:99:74:1E:26:45:AE:AF:45:C1:51:60:8F:73:C9:2D:10:6D:8A:88
a=setup:actpass
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:126 telephone-event/8000
a=ssrc:4208138518 cname:gAXq2V9TKltrnapv
a=ssrc:4208138518 msid:6932bc1c-db1a-4abe-b437-0c4168be8a13 audio#R5wfXFcdmT6
a=ssrc:4208138518 mslabel:6932bc1c-db1a-4abe-b437-0c4168be8a13
a=ssrc:4208138518 label:audio#R5wfXFcdmT6Sample SDP answer structure
v=0
o=-28226442481446439332 IN IP4 127.0.0.1
s=-
t=00
a=group:BUNDLE audio
a=msid-semantic: WMS eb909cf0-87f0-4358-a4c9-7861680d9431
m=audio 9 UDP/TLS/RTP/SAVPF 111126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:X1ho
a=ice-pwd:7fJSbV2N5qWiA5QiDKwK3vuh
a=fingerprint:sha-2562E:35:9F:21:9E:63:72:E5:42:74:76:2D:B3:70:F7:CB:24:14:9B:14:52:71:05:48:DA:4D:67:31:09:58:2A:ED
a=setup:active
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=sendrecv
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:126 telephone-event/8000
a=ssrc:330833028 cname:EDc1JutBl8rwHQc2
a=ssrc:330833028 msid:eb909cf0-87f0-4358-a4c9-7861680d9431 ea478c16-d9f7-493c-8cec-19bfac750a36Sample
cURL requests
New call
curl -i -X POST 'https://graph.facebook.com/v14.0/1234567890/calls' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAADUMAze4GIBO1B7B.....<REPLACE_WITH_YOUR_TOKEN>' \
-d '{
"messaging_product": "whatsapp",
"to": "14085550000",
"session": {
"sdp": "v=0\r\no=- 7669997803033704573 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS 3c28addc-03b7-4170-b5cd-535bfe767e75\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 110 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:6O0H\r\na=ice-pwd:TYCbtfOrBMPpfxFRgSbYnuTI\r\na=ice-options:trickle\r\na=fingerprint:sha-256 9F:45:2C:A8:C3:C0:CC:9B:59:4F:D1:02:56:52:FA:36:00:BE:C0:79:87:B3:D9:9C:3E:BF:60:98:25:B4:26:FC\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=sendrecv\r\na=msid:3c28addc-03b7-4170-b5cd-535bfe767e75 38c455bc-3727-4129-b336-8cd2c6a68486\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:63 red/48000/2\r\na=fmtp:63 111/111\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:2430753100 cname:MPddPt/R2ioP4vCm\r\na=ssrc:2430753100 msid:3c28addc-03b7-4170-b5cd-535bfe767e75 38c455bc-3727-4129-b336-8cd2c6a68486\r\n",
"sdp_type": "answer"
}
}'Terminate call
curl -i -X POST 'https://graph.facebook.com/v14.0/1234567890/calls' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAADUMAze4GIBO1B7B.....<REPLACE_WITH_YOUR_TOKEN>' \
-d '{
"messaging_product": "whatsapp",
"action": "terminate",
"call_id": "wacid.HBgLMTY1MDMxMzM5NzQVAgARGCBFRjNEODRBM0Q3NDZDM0Q0QzI4MzAwQjZBRkZGODM3NhwYCzEyMjQ1NTU0NDg5FQIAAA"
}'Accept call
curl -i -X POST 'https://graph.facebook.com/v14.0/1234567890/calls' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAADUMAze4GIBO1B7B.....<REPLACE_WITH_YOUR_TOKEN>' \
-d '{
"messaging_product": "whatsapp",
"to": "14085550000",
"action": "accept",
"call_id": "wacid.HBgLMTY1MDMxMzM5NzQVAgASGCA5ODkyMDk2RkM2NUM1QTYwRkM4NjFDQzk0NkQwNDBCRRwYCzEyMjQ1NTU0NDg5FQIAAA==",
"session": {
"sdp": "v=0\r\no=- 7669997803033704573 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS 3c28addc-03b7-4170-b5cd-535bfe767e75\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 110 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:6O0H\r\na=ice-pwd:TYCbtfOrBMPpfxFRgSbYnuTI\r\na=ice-options:trickle\r\na=fingerprint:sha-256 9F:45:2C:A8:C3:C0:CC:9B:59:4F:D1:02:56:52:FA:36:00:BE:C0:79:87:B3:D9:9C:3E:BF:60:98:25:B4:26:FC\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=sendrecv\r\na=msid:3c28addc-03b7-4170-b5cd-535bfe767e75 38c455bc-3727-4129-b336-8cd2c6a68486\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:63 red/48000/2\r\na=fmtp:63 111/111\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:2430753100 cname:MPddPt/R2ioP4vCm\r\na=ssrc:2430753100 msid:3c28addc-03b7-4170-b5cd-535bfe767e75 38c455bc-3727-4129-b336-8cd2c6a68486\r\n",
"sdp_type": "answer"
}
}'New call (using legacy connection param)
curl -i -X POST 'https://graph.facebook.com/v14.0/123456789/calls' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAADUMAze4GIBO1B7B.....<REPLACE_WITH_YOUR_TOKEN>' \
-d '{
"messaging_product": "whatsapp",
"to": "14085550000",
"connection": {
"webrtc": {
"sdp": "{\"sdp\":\"v=0\\r\\no=- 6314352886888624490 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0\\r\\na=extmap-allow-mixed\\r\\na=msid-semantic: WMS ccd3f422-8d7d-49c9-936c-a152979ee4fa\\r\\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 110 126\\r\\nc=IN IP4 0.0.0.0\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=ice-ufrag:/PSS\\r\\na=ice-pwd:buBIz+JlbmakiCT7JdJIq/j0\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 43:08:34:16:67:E3:D9:A2:F5:AA:6A:AE:03:97:C8:D5:B8:F2:4B:40:79:C8:1A:44:53:69:4B:9C:89:88:D7:22\\r\\na=setup:active\\r\\na=mid:0\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\\r\\na=sendrecv\\r\\na=msid:ccd3f422-8d7d-49c9-936c-a152979ee4fa 4e58b2a9-c864-4752-8f4f-23f9ced35971\\r\\na=rtcp-mux\\r\\na=rtcp-rsize\\r\\na=rtpmap:111 opus/48000/2\\r\\na=rtcp-fb:111 transport-cc\\r\\na=fmtp:111 minptime=10;useinbandfec=1\\r\\na=rtpmap:63 red/48000/2\\r\\na=fmtp:63 111/111\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:110 telephone-event/48000\\r\\na=rtpmap:126 telephone-event/8000\\r\\na=ssrc:3354317731 cname:zgqSj/r4rlErlW23\\r\\na=ssrc:3354317731 msid:ccd3f422-8d7d-49c9-936c-a152979ee4fa 4e58b2a9-c864-4752-8f4f-23f9ced35971\\r\\n\",\"type\":\"offer\"}"
}
}
}'Sample call connect webhook
Call connect webhook
{"entry":[{"changes":[{"field":"calls","value":{"calls":[{"session":{"sdp_type":"answer","sdp":"v=0\r\no=- 8076734947255960322 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS 68a296ba-41cc-41db-8edb-3ddf4dbbb483\r\na=ice-lite\r\nm=audio 3482 UDP/TLS/RTP/SAVPF 111 9 0 8 110 126\r\nc=IN IP4 31.13.65.130\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:2754936280 1 udp 2113937151 31.13.65.130 3482 typ host generation 0 network-cost 50 ufrag kv6Jn8vBmEds/8\r\na=candidate:1581496399 1 udp 2113939711 2a03:2880:f211:d1:face:b00c:0:699c 3482 typ host generation 0 network-cost 50 ufrag kv6Jn8vBmEds/8\r\na=ice-ufrag:kv6Jn8vBmEds/8\r\na=ice-pwd:OhY8sT7v6PJe3bbs0Yx2TC/oPb5oatnK\r\na=ice-options:trickle\r\na=fingerprint:sha-256 46:14:2B:31:B1:9D:AF:15:81:E2:EF:45:B1:2B:96:3D:64:0E:63:F1:CC:9A:BD:88:D6:32:8F:E9:2A:13:3A:38\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:433528572 cname:VBDcSNi/cg1Wg6D3\r\na=ssrc:433528572 msid:68a296ba-41cc-41db-8edb-3ddf4dbbb483 audio#wx3mq6BITjB\r\na=ssrc:433528572 mslabel:68a296ba-41cc-41db-8edb-3ddf4dbbb483\r\na=ssrc:433528572 label:audio#wx3mq6BITjB\r\n"},"from":"15551112222","connection":{"webrtc":{"sdp":"{\"sdp\":\"v=0\\r\\no=- 8076734947255960322 2 IN IP4 127.0.0.1\\r\\ns=-\\r\\nt=0 0\\r\\na=group:BUNDLE 0\\r\\na=extmap-allow-mixed\\r\\na=msid-semantic: WMS 68a296ba-41cc-41db-8edb-3ddf4dbbb483\\r\\na=ice-lite\\r\\nm=audio 3482 UDP/TLS/RTP/SAVPF 111 9 0 8 110 126\\r\\nc=IN IP4 31.13.65.130\\r\\na=rtcp:9 IN IP4 0.0.0.0\\r\\na=candidate:2754936280 1 udp 2113937151 31.13.65.130 3482 typ host generation 0 network-cost 50 ufrag kv6Jn8vBmEds/8\\r\\na=candidate:1581496399 1 udp 2113939711 2a03:2880:f211:d1:face:b00c:0:699c 3482 typ host generation 0 network-cost 50 ufrag kv6Jn8vBmEds/8\\r\\na=ice-ufrag:kv6Jn8vBmEds/8\\r\\na=ice-pwd:OhY8sT7v6PJe3bbs0Yx2TC/oPb5oatnK\\r\\na=ice-options:trickle\\r\\na=fingerprint:sha-256 46:14:2B:31:B1:9D:AF:15:81:E2:EF:45:B1:2B:96:3D:64:0E:63:F1:CC:9A:BD:88:D6:32:8F:E9:2A:13:3A:38\\r\\na=setup:active\\r\\na=mid:0\\r\\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\\r\\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\\r\\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\\r\\na=sendrecv\\r\\na=rtcp-mux\\r\\na=rtpmap:111 opus/48000/2\\r\\na=rtcp-fb:111 transport-cc\\r\\na=fmtp:111 minptime=10;useinbandfec=1\\r\\na=rtpmap:9 G722/8000\\r\\na=rtpmap:0 PCMU/8000\\r\\na=rtpmap:8 PCMA/8000\\r\\na=rtpmap:110 telephone-event/48000\\r\\na=rtpmap:126 telephone-event/8000\\r\\na=ssrc:433528572 cname:VBDcSNi/cg1Wg6D3\\r\\na=ssrc:433528572 msid:68a296ba-41cc-41db-8edb-3ddf4dbbb483 audio#wx3mq6BITjB\\r\\na=ssrc:433528572 mslabel:68a296ba-41cc-41db-8edb-3ddf4dbbb483\\r\\na=ssrc:433528572 label:audio#wx3mq6BITjB\\r\\n\",\"type\":\"answer\"}"}},"id":"wacid.HBgLMTY1MDMxMzM5NzQVAgARGCAwQTJCRDYwNkEzQUNCQUVCMEFGMzYzRTYxNjMxMDdFMxwYCzE0MDg1NTUyODk5FQIAAA==","to":"16501230000","event":"connect","timestamp":"1724467313","direction":"BUSINESS_INITIATED"}],"metadata":{"phone_number_id":"105615555715855","display_phone_number":"15551112222"},"messaging_product":"whatsapp"}}],"id":"112735964992110"}],"object":"whatsapp_business_account"}