POST /<PHONE_NUMBER_ID>/settings
| Placeholder | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number for which you are updating Calling API settings. | +12784358810 |
{ "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" } } ] } } }
| Parameter | Description | Sample Value |
|---|---|---|
statusString | Optional Enable or disable the Calling API for the given business phone number. | “ENABLED”“DISABLED” |
call_icon_visibilityString | Optional Configure whether the WhatsApp call button icon displays for users when chatting with the business. | |
call_hoursJSON object | Optional Allows you to specify and trigger call settings for incoming calls based on your timezone, business operating hours, and holiday schedules. Any previously configured values in call_hours will be replaced with the values passed in the request body of this API call. | |
callback_permission_statusString | Optional Configure whether a WhatsApp user is prompted with a call permission request after calling your business. Note: The call permission request is triggered from either a missed or connected call. | “ENABLED”“DISABLED” |
sipJSON object | Optional Configure call signaling via signal initiation protocol (SIP). Note: When SIP is enabled, you cannot use calling related endpoints and will not receive calling related webhooks. |
|
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.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.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.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.DEFAULT
DISABLE ALL

call_hours setting, you can specify the timezone, business operating hours, and holiday schedules that will be enforced for all user-initiated calls.callback_permission_status is ENABLED. The user will also be shown the next available calling slot on the option screen.
"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" } ] }
| Parameter | Description | Sample Values | ||
|---|---|---|---|---|
statusString | Required Enable or disable the call hours for the business. If call hours are disabled, the business is considered open all 24 hours of the day, 7 days a week. | “ENABLED”“DISABLED” | ||
timezone_idString | Required The timezone that the business is operating within. | “America/Menominee”“Asia/Singapore” | ||
weekly_operating_hoursList of JSON object | Required The operating hours schedule for each day of the week. Each entry is an JSON object with 3 key/value pairs: day_of_week — (Enum) [Required]The day of the week. Can take one of seven values: "MONDAY", “TUESDAY”, “WEDNESDAY”, “THURSDAY”, “FRIDAY”, “SATURDAY”, “SUNDAY”
Opening and closing times represented in 24 hour format, for example "1130" = 11:30AM
|
| ||
holiday_scheduleString | Optional An optional override to the weekly schedule. Up to 20 overrides can be specified. Note: If holiday_schedule is not passed in the request, then the existing holiday_schedule will be deleted and replaced with an empty schedule.date — (String) [Required]Date for which you want to specify the override. YYYY-MM-DD format.
Opening and closing times represented in 24 hour format, for example, ”1130” = 11:30AM
|
|
{ "success": true }
call_hourscall_hours is a past datecall_hoursweekly_operating_hours in call_hours cannot be emptyholiday_schedule for call_hours is invalidweekly_operating_hours schedule in call_hourscall_hours is not allowedPOST /<PHONE_NUMBER_ID>/settings
| Parameter | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number for which you are getting Calling API settings. | +12784358810 |
whatsapp_business_management: Advanced access is required to use the API for end business clients{ "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" } } ] } } }
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}" } ] } } }
GET /<PHONE_NUMBER_ID>/settings endpoint returns Calling API settings, along with other configuration information for your WhatsApp business phone number.POST <PHONE_NUMBER_ID>/calls
| Placeholder | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number which you are using Calling API features from. | +12784358810 |
{
"messaging_product": "whatsapp",
"call_id": "wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh",
"action": "pre_accept",
"session" : {
"sdp_type" : "answer",
"sdp" : "<<RFC 8866 SDP>>"
}
}
| Parameter | Description | Sample Value |
|---|---|---|
call_idString | Required The ID of the phone call. 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 The action being taken on the given call ID. Values can be connect | pre_accept | accept | reject | terminate | “pre_accept” |
sessionJSON object | Optional Contains the session description protocol (SDP) type and description language. 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. | |
{
"messaging_product": "whatsapp",
"success" : true
}
call-idphone-number-idPOST <PHONE_NUMBER_ID>/calls
| Placeholder | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number which you are using Calling API features from. | +12784358810 |
{
"messaging_product": "whatsapp",
"call_id": "wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh",
"action": "accept",
"session" : {
"sdp_type" : "answer",
"sdp" : "<<RFC 8866 SDP>>"
},
"biz_opaque_callback_data": "random_string"
}
| Parameter | Description | Sample Value |
|---|---|---|
call_idString | Required The ID of the phone call. 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 The action being taken on the given call ID. Values can be connect | pre_accept | accept | reject | terminate | “accept” |
sessionJSON object | Optional Contains the session description protocol (SDP) type and description language. 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. | |
biz_opaque_callback_dataString | Optional An arbitrary string you can pass in that is useful for tracking and logging purposes. Any app subscribed to the “calls” webhook field on your WhatsApp Business Account can receive this string, as it is included in the calls object within the subsequent Terminate webhook payload.Cloud API does not process this field, it just returns it as part of the Terminate webhook. Maximum 512 characters | “8huas8d80nn” |
{
"messaging_product": "whatsapp",
"success" : true
}
call-idphone-number-idcall-idPOST <PHONE_NUMBER_ID>/calls
| Placeholder | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number which you are using Calling API features from. | +12784358810 |
{
"messaging_product": "whatsapp",
"call_id": "wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh",
"action": "reject"
}
| Parameter | Description | Sample Value |
|---|---|---|
call_idString | Required The ID of the phone call. 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 The action being taken on the given call ID. Values can be connect | pre_accept | accept | reject | terminate | “reject” |
{
"messaging_product": "whatsapp",
"success" : true
}
call-idphone-number-idPOST <PHONE_NUMBER_ID>/calls
| Placeholder | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number from which you are initiating a new call. | +12784358810 |
{
"messaging_product": "whatsapp",
"to": "14085551234",
"action": "connect",
"session": {
"sdp_type": "offer",
"sdp": "<<RFC 8866 SDP>>"
},
"biz_opaque_callback_data": "0fS5cePMok"
}
| Parameter | Description | Sample Value |
|---|---|---|
toInteger | Required The number being called (callee) | “17863476655” |
actionString | Required The action being taken on the given call ID. Values can be connect | pre_accept | accept | reject | terminate | “connect” |
sessionJSON object | Optional Contains the session description protocol (SDP) type and description language. 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. | |
biz_opaque_callback_dataString | Optional An arbitrary string you can pass in that is useful for tracking and logging purposes. Any app subscribed to the “calls” webhook field on your WhatsApp Business Account can receive this string, as it is included in the calls object within the subsequent Call Terminate Webhook payload.Cloud API does not process this field. Maximum 512 characters | “0fS5cePMok” |
{
"messaging_product": "whatsapp",
"calls" : [{
"id" : "wacid.ABGGFjFVU2AfAgo6V",
}]
}
phone-number-idRTCP BYE packet in the media path. Ending the call this way also ensures pricing is more accurate.POST <PHONE_NUMBER_ID>/calls
| Parameter | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number which you are terminating a call from. | 18274459827 |
{
"messaging_product": "whatsapp",
"call_id": "wacid.ABGGFjFVU2AfAgo6V-Hc5eCgK5Gh",
"action": "terminate"
}
| Parameter | Description | Sample Value |
|---|---|---|
call_idString | Required The ID of the phone call. 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 The action being taken on the given call ID. Values can be connect | pre_accept | accept | reject | terminate | “terminate” |
{
"messaging_product": "whatsapp",
"success" : true
}
call idphone-number-idGET /<PHONE_NUMBER_ID>/call_permissions?user_wa_id=<CONSUMER_WHATSAPP_ID>
| Parameter | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>String | Required The business phone number you are fetching permissions against. | +18762639988 |
<CONSUMER_WHATSAPP_ID>Integer | Required The phone number of the WhatsApp user who you are requesting call permissions from. | +13057765456 |
{
"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,
}
]
}
]
}
| Parameter | Description |
|---|---|
permissionJSON Object | The permission object contains two values: status (String) — The current status of the permission.Can be either:
expiration (Integer) — The Unix time at which the permission will expire in UTC timezone. |
actionsJSON Object | A list of actions a business phone number may undertake to facilitate a call permission or a business initiated call. Current actions are: send_call_permission_request: Represents the action of sending new call permissions request messages to the WhatsApp user.start_call: Represents the action of establishing a new call with the WhatsApp user. Establishing a new call means that the call was successfully picked up by the consumer.For example, send_call_permission_request having a can_perform_action of true means that your business can send a call permission request to the WhatsApp user in questioncan_perform_action (Boolean) —A flag indicating whether the action can be performed now, taking into account all limits. |
limitsJSON Object | A list of time-bound restrictions for the given action_name.Each action_name has 1 or more restrictions depending on the timeframe.For example, a business can only send 2 permission requests in a 24-hour period. limits contains the following fields:time_period (String) — The span of time in which the limit applies, represented in the ISO 8601 format.max_allowed (Integer) — The maximum number of actions allowed within the specified time period.current_usage (Integer) — The current number of actions the business has taken within the specified time period.limit_expiration_time (Integer) — The Unix time at which the limit will expire in UTC timezone.If current_usage is under the max allowed for the limit, this field won’t be present. |
phone-number-idno_permission.SDP Answer).SDP Answer received in the webhook to your WebRTC stack in order to initiate the media connection.{
"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"
}
]
}
]
}
"calls"| Placeholder | Description |
|---|---|
idString | A unique ID for the call |
toInteger | The number being called (callee) |
fromInteger | The number of the caller |
eventInteger | The calling event that this webhook is notifying the subscriber of |
timestampInteger | The UNIX timestamp of the webhook event |
directionString | The direction of the call being made. Can contain either: BUSINESS_INITIATED, for calls initiated by your business.USER_INITIATED, for calls initiated by a WhatsApp user. |
sessionJSON object | Optional Contains the session description protocol (SDP) type and description language. 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. |
contactsJSON object | Profile information of the callee. Contains two values: name — The WhatsApp profile name of the callee.wa_id — The WhatsApp ID of the callee. |
{
"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"
}
]
}
]
}
"statuses"| Placeholder | Description |
|---|---|
idString | A unique ID for the call |
timestampInteger | The UNIX timestamp of the webhook event |
recipient_idInteger | The phone number of the WhatsApp user receiving the call |
statusInteger | The current call status. Possible values: RINGING: Business initiated call is ringing the userACCEPTED: Business initiated call is accepted by the userREJECTED: Business initiated call is rejected by the user |
biz_opaque_callback_dataString | Arbitrary string your business passes into the call for tracking and logging purposes. Will only be returned if provided through Initiate New Call API requests |
POST /<PHONE_NUMBER_ID>/calls endpoint with an action of terminate or reject.{
"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"
}
]
}
]
}
"calls"| Placeholder | Description |
|---|---|
idString | A unique ID for the call |
toInteger | The number being called (callee) |
fromInteger | The number of the caller |
eventInteger | The calling event that this webhook is notifying the subscriber of |
timestampInteger | The UNIX timestamp of the webhook event |
directionString | The direction of the call being made. Can contain either: BUSINESS_INITIATED, for calls initiated by your business.USER_INITIATED, for calls initiated by a WhatsApp user. |
start_timeInteger | The UNIX timestamp of when the call started. Only present when the call was picked up by the other party. |
end_timeInteger | The UNIX timestamp of when the call ended. Only present when the call was picked up by the other party. |
durationInteger | Duration of the call in seconds. Only present when the call was picked up by the other party. |
biz_opaque_callback_dataString | Arbitrary string your business passes into the call for tracking and logging purposes. Will only be returned if provided through New Call API requests or Accept Call requests |
{
. . .
"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]"
}
}
],
. . .
}
"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]"
}
}
],
. . .
}
| Placeholder | Description |
|---|---|
customer_phone_numberString | The phone number of the customer |
context.idString | Can be either of two values
|
responseString | The WhatsApp users response to the call permission request message Can be accept or reject |
expiration_timestampInteger | Time in seconds when this call permission expires if the WhatsApp user approved it |
response_sourceString | The source of this permission Possible values for accepted call permissions are:
|
v=0
o=- 3626166318745852955 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0
a=extmap-allow-mixed
a=msid-semantic: WMS d8b26053-4474-4eb7-b3c3-c93d6c8c9b2e
m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 110 126
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-256 35: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:63 111/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-11a1ad21a3bc
v=0
o=- 741807839102053725 2 IN IP4 127.0.0.1
s=-
t=0 0
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 111 9 0 8 110 126
c=IN IP4 31.13.65.130
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:2754936280 1 udp 2113937151 31.13.65.130 3482 typ host generation 0 network-cost 50 ufrag JHqAXFH4HcAY/8
a=candidate:1581496399 1 udp 2113939711 2a03:2880:f211:d1:face:b00c:0:699c 3482 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-256 9C: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#nuxVMf9EAJX
v=0
o=- 7602563789789945080 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS 6932bc1c-db1a-4abe-b437-0c4168be8a13
a=ice-lite
m=audio 40012 UDP/TLS/RTP/SAVPF 111 126
c=IN IP4 31.13.65.60
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:1972637320 1 udp 2113937151 31.13.65.60 40012 typ host generation 0 network-cost 50 ufrag 6k2qP1R6kBfI/2
a=candidate:1652262791 1 udp 2113939711 2a03:2880:f211:cf:face:b00c:0:6443 40012 typ host generation 0 network-cost 50 ufrag 6k2qP1R6kBfI/2
a=ice-ufrag:6k2qP1R6kBfI/2
a=ice-pwd:UApvJw3NcwFRDvIMKdM0vWCdlXah25E9
a=fingerprint:sha-256 1B: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#R5wfXFcdmT6
v=0
o=- 2822644248144643933 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE audio
a=msid-semantic: WMS eb909cf0-87f0-4358-a4c9-7861680d9431
m=audio 9 UDP/TLS/RTP/SAVPF 111 126
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-256 2E: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-19bfac750a36
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"
}
}'
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"
}'
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"
}
}'
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\"}"
}
}
}'
{
"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"
}