Calling API Pricing

At the moment, user-initiated calls are free of charge for your business.

Overview

Placing business-initiated calls is charged based on:

  • The duration of the call (calculated in six-second increments, rounding up)
  • The country code of the phone number associated with the user being called.

A valid payment method is required to place calls.

Note: Call permission request messages are subject to messaging charges

Volume-Based Pricing (VBP) Rate card

These rate cards represent the current VBP rates for the WhatsApp Busines Calling API:

How calling changes the 24 hour customer service window

Available since October 1, 2024

Currently, when a WhatsApp user messages you, a 24-hour timer called a customer service window begins, or refreshes.

When you are within the window, your business is allowed to send any type of message to the WhatsApp user, which is otherwise not allowed.

With the introduction of the Calling API, the customer service window now also starts or refreshes for calls:

  • When a WhatsApp user calls you, regardless of if you accept the call or not
  • When a WhatsApp user accepts your call.

Get cost and call analytics

You can call the GET /<WHATSAPP_BUSINESS_ACCOUNT_ID> endpoint with a ?fields=call_analytics query parameter to obtain call analytics for your WhatsApp Business Account (WABA).

The endpoints can provide useful information like cost, counts of completed calls, and average call duration.

Get call analytics

Use this endpoint to get analytics for your calls, like cost, counts of completed calls, and average call duration.

Request syntax

GET /<WHATSAPP_BUSINESS_ACCOUNT_ID>?fields=call_analytics
  .<FILTERING_PARAMETERS>
  &access_token=<ACCESS_TOKEN>
ParameterDescriptionSample Value

<WHATSAPP_BUSINESS_ACCOUNT_ID>

String

Required


Your WhatsApp Business Account ID.

Learn how to find your WABA ID

“waba-90172398162498126”

<FILTERING_PARAMETERS>

Multiple

Required


Filtering parameters for call analytics data.

See Filtering Parameters below

See Filtering Parameters below

<ACCESS_TOKEN>

String

Required


Your access token.

Example response

{
  "call_analytics": {
    "data": [
      {
        "data_points": [
          {
            "start": 1676361600,
            "end": 1676448000,
            "cost": 10,
            "count": 10,
            "average_duration": 1
          }
        ]
      }
    ]
  },
  "id": "114525791557199"
}

Filtering parameters

ParameterDescriptionSample Value

start

Integer

Required


The unix timestamp start date for the date range you want call analytics for.

1676361600

end

Integer

Required


The unix timestamp end date for the date range you want call analytics for.

1676448000

granularity

Enum

Required


The desired sampling of the analytics you would like to retrieve.

Supported options: HALF_HOUR | DAILY | MONTHLY

MONTHLY

country_codes

Array of String

Optional


Filter data by country codes which you have called.

Provide an array with 2 letter country codes for the countries you would like to include.

If country_codes is not provided in your filter parameters, analytics for all countries you have called are returned.

View list of approved country codes

["011","55"]

phone_numbers

Array of String

Optional


Filter data by specific business phone numbers on your WABA.

If phone_numbers is not provided, all phone numbers added to your WABA are included.

["550987659923","17862258930"]

metric_types

List of Enum

Optional


The list of metrics you would like to receive.

If metric_types is not provided we return results for all metric types.

Supported options:

COST — Cost calculated for total duration of the call by applying the rate card based on direction of the call and consumer country code.

COUNT — Total number of calls completed.

AVERAGE_DURATION — Average duration of calls completed computed by sum of call duration of all calls divided by count of the calls

[COST, COUNT]

directions

Enum

Optional


Filter data by the calling direction of the placed call.

If directions is not provided, all phone numbers added to your WABA are included.

Supported options: USER_INITIATED | BUSINESS_INITIATED

BUSINESS_INITIATED

dimensions

Enum

Required


List of breakdowns you would like to apply to your metrics.

If dimensions is not provided, we return results without any breakdowns.

Supported options: DIRECTION | COUNTRY | PHONE

DIRECTION

Error response

View Calling API Error Codes and Troubleshooting for more information

View general Cloud API Error Codes here

Sample cost and call analytics requests

Only required parameters

Request

GET /{whatsapp-business-account-id}?fields=call_analytics
      .start(1643702400).end(1646121600)
      .granularity(MONTHLY)
      .phone_numbers([])
  &access_token={access-token}

Response

{
  "call_analytics": {
    "data": [
      {
        "data_points": [
          {
            "start": 1676361600,
            "end": 1676448000,
            "cost": 10,
            "count": 10,
            "average_duration": 1
          }
        ]
      }
    ]
  },
  "id": "114525791557199"
}

With breakdowns

Request

GET /{whatsapp-business-account-id}?fields=call_analytics
      .start(1643702400).end(1646121600)
      .granularity(MONTHLY)
      .dimensions([DIRECTION])
  &access_token={access-token}

Response

{
  "call_analytics": {
    "data": [
      {
        "data_points": [
          {
            "start": 1676361600,
            "end": 1676448000,
            "direction":"USER_INITIATED",
            "cost": 0.6,
            "count": 5,
            "average_duration": 1
          },
          {
            "start": 1676361600,
            "end": 1676448000,
            "direction": "BUSINESS_INITIATED",
            "cost": 0.4,
            "count": 5,
            "average_duration": 1
          }
        ]
      }
    ]
  },
  "id": "114525791557199"
}