API and Webhook Reference
Updated: Nov 25, 2025Calling API Endpoints
Configure/Update calling settings
Call the Update Phone Number Settings endpoint and pass in Calling API specific parameters to configure or update Calling API settings on an individual business phone number you designate in the request syntax.Request syntax
Endpoint parameters
| Placeholder | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number for which you are updating Calling API settings. | +12784358810 |
Request body
Body parameters
| 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. View call icon visibility behavior details below | View call icon visibility behavior details below | |
call_hoursJSON object | Optional Allows you 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.View call hours behavior details below | View call hours behavior details below | |
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. View callback permission status behavior details below | “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. Learn how to configure and use SIP call signaling | ``` “sip”: { “status”: “ENABLED | DISABLED (default)”, “servers”: [// one server per app] { “hostname”: SIP_SERVER_HOSTNAME “port”: SIP_SERVER_PORT, “request_uri_user_params”: { “KEY1”: “VALUE1”, // for cases like TGRP “KEY2”: “VALUE2”, } } ] } ``` |
Parameter details: Calling status
When thestatus 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 eventual 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 thecall_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:
DEFAULT
The 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 ALL
The 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
With thecall_hours setting, you can specify the timezone, business operating hours, and holiday schedules that will be enforced for all user-initiated calls.
Configuring this setting restricts calls only to available weekly hours you configure. User-initiated calls are unavailable outside of the weekly hours and holiday schedules you set.
The WhatsApp client app will show users an option to chat with the business, or request a callback, if callback_permission_status is ENABLED. The user will also be shown the next available calling slot on the option screen.
| 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. Learn more about supported values for timezone_id | “America/Menominee”“Asia/Singapore” |
weekly_operating_hoursList of JSON object | Required |
day_of_week — ( Enum) [Required]
The day of the week.
Can take one of seven values: "MONDAY", “TUESDAY”, “WEDNESDAY”, “THURSDAY”, “FRIDAY”, “SATURDAY”, “SUNDAY”
open_time | close_time — ( Integer) [Required] |
”1130” = 11:30AM
Maximum of 2 entries allowed per day of week
open_time must be before close_time
Overlapping entries not allowed | <br />{<br />"day_of_week": "MONDAY",<br />"open_time": "0400",<br />"close_time": "1020"<br />},<br />{<br />"day_of_week":"TUESDAY",<br />"open_time": "0108",<br />"close_time": "1020"<br />}<br />...<br /> |
| 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.
open_time | close_time — ( Integer) [Required] |
”1130” = 11:30AM
Maximum of 2 entries allowed per day of week
open_time must be before close_time
Overlapping entries not allowed | <br />{<br />"date": "2026-01-01",<br />"start_time": "0000",<br />"end_time": "2359",<br />}<br />...<br /> |
Success response
Error response
Possible errors that can occur: Permissions/Authorization errors Invalid status Invalid schedule forcall_hours
Holiday given in call_hours is a past date
Timezone is invalid in call_hours
weekly_operating_hours in call_hours cannot be empty
Date format in holiday_schedule for call_hours is invalid
More than 2 entries not allowed in weekly_operating_hours schedule in call_hours
Overlapping schedule in call_hours is not allowed
View Calling API Error Codes and Troubleshooting for more information.
View general Cloud API Error Codes here.
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
Endpoint parameters
| Parameter | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number for which you are getting Calling API settings. Learn more about formatting phone numbers in Cloud API | +12784358810 |
App permission required
whatsapp_business_management: Advanced access is required to update use the API for end business clients
Response body
Include SIP user password
Optionally, you can include SIP user credentials in your response body by adding the SIP credentials query parameter in the POST request:Response details
TheGET /<PHONE_NUMBER_ID>/settings endpoint returns Calling API settings, along with other configuration information for your WhatsApp business phone number.
Learn more about Calling API settings and their values
Error response
Possible errors that can occur: Permissions/Authorization errors View Calling API Error Codes and Troubleshooting for more information View general Cloud API Error Codes herePre-accept call
In essence, when you pre-accept an inbound call, you are allowing 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.Request Syntax
| Placeholder | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number which you are using Calling API features from. Learn more about formatting phone numbers in Cloud API | +12784358810 |
Request Body
Body Parameters
| 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. Learn more about Session Description Protocol (SDP) View example SDP structures | <br />"session" :<br />{<br />"sdp_type" : "offer",<br />"sdp" : "<<RFC 8866 SDP>>"<br />}<br /> |
Success Response
Error Response
Possible errors that can occur: Invalidcall-id
Invalid phone-number-id
Error related to your payment method
Invalid Connection info eg sdp, ice
Accept/Reject an already In Progress/Completed/Failed call
Permissions/Authorization errors
View Calling API Error Codes and Troubleshooting for more information.
View general Cloud API Error Codes here.
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
| Placeholder | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number which you are using Calling API features from. Learn more about formatting phone numbers in Cloud API | +12784358810 |
Request Body
Body Parameters
| 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. Learn more about Session Description Protocol (SDP) View example SDP structures | <br />"session" :<br />{<br />"sdp_type" : "offer",<br />"sdp" : "<<RFC 8866 SDP>>"<br />}<br /> |
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” |
Success Response
Error Response
Possible errors that can occur: Invalidcall-id
Invalid phone-number-id
Error related to your payment method
Invalid Connection info eg sdp, ice etc
Accept/Reject an already In Progress/Completed/Failed call
Permissions/Authorization errors
SDP answer provided in accept does not match the SDP answer given in the Pre-Accept endpoint for the same call-id
View Calling API Error Codes and Troubleshooting for more information.
View general Cloud API Error Codes here.
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.Request Syntax
| Placeholder | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number which you are using Calling API features from. Learn more about formatting phone numbers in Cloud API | +12784358810 |
Request Body
Body Parameters
| 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” |
Success Response
Error Response
Possible errors that can occur: Invalidcall-id
Invalid phone-number-id
Accept/Reject an already In Progress/Completed/Failed call
Permissions/Authorization errors
View Calling API Error Codes and Troubleshooting for more information.
View general Cloud API Error Codes here.
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
| Placeholder | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number from which you are initiating a new call from. Learn more about formatting phone numbers in Cloud API | +12784358810 |
Request Body
Body Parameters
| 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. Learn more about Session Description Protocol (SDP) View example SDP structures | <br />"session" :<br />{<br />"sdp_type" : "offer",<br />"sdp" : "<<RFC 8866 SDP>>"<br />}<br /> |
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” |
Success Response
Error Response
Possible errors that can occur: Invalidphone-number-id
Permissions/Authorization errors
Request format validation errors, e.g. connection info, sdp, ice
SDP validation errors
View Calling API Error Codes and Troubleshooting for more information.
View general Cloud API Error Codes here.
Terminate call
Use this endpoint to terminate an active call. This must be done even if there is anRTCP 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.
Request Syntax
| Parameter | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>Integer | Required The business phone number which you are terminating a call from. Learn more about formatting phone numbers in Cloud API | 18274459827 |
Request Body
Body Parameters
| 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” |
Success Response
Error Response
Possible errors that can occur: Invalidcall id
Invalid phone-number-id
The WhatsApp user has already terminated the call
Reject call is already in progress
Permissions/Authorization errors
View Calling API Error Codes and Troubleshooting for more information.
View general Cloud API Error Codes here.
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
Request parameters
| Parameter | Description | Sample Value |
|---|---|---|
<PHONE_NUMBER_ID>String | Required The business phone number you are fetching permissions against. Learn more about formatting phone numbers in Cloud API | +18762639988 |
<CONSUMER_WHATSAPP_ID>Integer | Required The phone number of the WhatsApp user who you are requesting call permissions from. Learn more about formatting phone numbers in Cloud API | +13057765456 |

