WhatsApp API & Developers

WhatsApp Business Calling API: What It Does and Costs

Some conversations need a voice. A customer typing three paragraphs about a billing mix-up, a buyer who wants to talk through a quote, a delivery driver who cannot find the gate. For years the only way to call from a business WhatsApp number was to pick up the phone it lived on. Meta's WhatsApp Business Calling API changes that for numbers on the official platform: customers can call you from the chat, and with permission, you can call them.

This guide covers what the Calling API does, where it works and what it requires, how call permissions work, what calls cost, and how a call actually reaches your systems. Everything below was checked against Meta's Calling API documentation as of October 2026.

What the Calling API does

The Calling API adds VoIP voice calls between a business phone number on Cloud API and WhatsApp users. It works in both directions:

  • User-initiated calls. The customer taps the call icon or a call button in your chat and rings your business. You answer in your own software: a contact-centre platform, a browser softphone or a SIP system.
  • Business-initiated calls. Your agent calls the customer on WhatsApp, after the customer has given permission.

Around the call itself, Meta provides controls you would expect from a phone system: business calling hours and holiday closures, the option to block user-initiated calls, call buttons with an expiry, call deep links, callback requests, and control over where the call icon appears. Customers can switch between chat and call and keep chatting during a call. Meta lists video calling and screen sharing as planned or in development, so plan for voice only today.

Requirements and where it works

Calling is not switched on for every number by default. Before you build, check these on Meta's overview:

RequirementDetail
Number typeA business number on Cloud API, not the WhatsApp Business app
Messaging limitAt least 2,000 unique recipients per day (test numbers and sandbox accounts exempt)
WebhooksApp subscribed to the calls webhook field, unless you use SIP
Permissionwhatsapp_business_messaging
SettingCalling enabled on the business phone number

Availability. User-initiated calling works wherever Cloud API is available. Business-initiated calling works in the same places except the United States, Canada, Egypt, Vietnam and Nigeria. The restriction applies to the business number's country code; the customer's number can be from any Cloud API country.

The messaging limit requirement matters for new businesses. A fresh portfolio starts at 250, so you need to reach 2,000 first, through business verification or the scaling path. Our guide to WhatsApp API messaging limits explains both.

Permission to call: the rules

You cannot cold-call WhatsApp users. A business-initiated call needs the user's permission, which you can get three ways:

  1. Ask. Send a call permission request, either as a free-form interactive message inside the customer service window or as a template outside it.
  2. Callback. If you enable callback permission on the number and the user calls you, WhatsApp grants temporary permission automatically, so you can return a missed call.
  3. Business profile. The user grants permission from your profile.

Per Meta's call permissions docs, permission is either temporary (7 calendar days from approval) or permanent (until the user revokes it). The user chooses.

The limits are tight by design:

  • Requests. At most 1 permission request per business and user in 24 hours, and 2 within 7 days. The counters reset after any connected call between you.
  • Unanswered calls. 2 consecutive unanswered business-initiated calls trigger a system message asking the user to reconsider. 4 revoke the permission automatically.
  • Expiry is silent. No webhook fires when temporary permission ends. Read the expiration_timestamp from the acceptance webhook, or query the current state before calling.

Meta also caps connected calls per number per day, and the changelog shows that figure changing several times, so read the current limit on the permissions page before sizing a campaign.

What calls cost

Per Meta's calling pricing page, as of October 2026:

  • User-initiated calls are free. All of them.
  • Business-initiated calls are charged by duration, the destination country code and your volume tier. Duration is counted in 6-second pulses, and a partial pulse counts as a full one, so a 56-second call bills as 10 pulses.
  • Volume tiers are based on minutes called in the calendar month. If a call crosses into a cheaper tier, the whole call is priced at the lower rate.
  • Permission requests are messages. Call permission request messages are billed under normal per-message pricing.
  • Recording and transcription are currently free on top of call rates. Meta says separate pricing is planned and will give notice.
  • A payment method is required to place calls.

Meta publishes calling rate cards in several currencies. Calling rates did not change on October 1, 2026, even though nine markets moved to standalone rates on the messaging rate card. Do not quote a per-minute figure without checking your market's card. For messaging costs, see our WhatsApp API pricing explainer.

How a call reaches your system

You have two signaling options. The default uses Graph API calls and webhooks over HTTPS, with media over WebRTC. The alternative is SIP over TLS, which connects WhatsApp calls to an existing SIP system such as a PBX or contact-centre platform; Meta has an Asterisk integration guide. Audio uses the OPUS codec, and G.711 (PCMA and PCMU) is also supported.

For a user-initiated call on the default path, the flow is:

  1. WhatsApp sends a connect event to your calls webhook with the call id, the caller and an SDP offer.
  2. Your media stack (a WebRTC endpoint) generates an SDP answer.
  3. You optionally pre_accept the call to start setting up media, then accept it.
  4. Media flows once you get a 200 OK back. Either side can terminate.

The connect webhook carries the essentials:

{
  "field": "calls",
  "value": {
    "messaging_product": "whatsapp",
    "metadata": { "phone_number_id": "PHONE_NUMBER_ID", "display_phone_number": "919800012345" },
    "contacts": [ { "profile": { "name": "Priya" }, "wa_id": "919811122233" } ],
    "calls": [ {
      "id": "CALL_ID",
      "event": "connect",
      "direction": "USER_INITIATED",
      "from": "919811122233",
      "session": { "sdp_type": "offer", "sdp": "v=0 ..." }
    } ]
  }
}

Accepting is a POST to the number's calls endpoint. The examples use v23.0; use the current Graph API version from Meta's changelog.

curl https://graph.facebook.com/v23.0/PHONE_NUMBER_ID/calls \
  -H "Authorization: Bearer $WHATSAPP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "messaging_product": "whatsapp",
    "call_id": "CALL_ID",
    "action": "accept",
    "session": { "sdp_type": "answer", "sdp": "SDP_ANSWER_FROM_YOUR_WEBRTC_STACK" }
  }'

Timing is strict: Meta gives you roughly 30 to 60 seconds after the connect webhook to accept before the caller sees "Not Answered". Do not route the webhook through a slow queue. As usernames roll out, from may be missing for some callers, so key calls on the user id (BSUID) in the payload as well as wa_id. The WhatsApp API webhooks guide covers verification and fast acknowledgement.

Use cases, and what it will not do

Calling fits best where a chat is already happening and voice resolves it faster:

  • Support escalation. A "Call us" button in a support chat, routed to your contact centre during business hours.
  • Callbacks. Customer calls after hours, gets voicemail in the chat, and your agent returns the call next morning under callback permission.
  • Sales follow-up. A buyer who asked for a call grants permanent permission and your rep calls from the business number, not a personal phone.
  • Delivery coordination. A rider calls the customer through the business number rather than exposing personal numbers.

The limits to plan around:

  • No calling in groups. Meta's Groups API lists calling among unsupported features. See sending messages to a WhatsApp group by API for what groups do support.
  • No WhatsApp Business app numbers. The number must be on Cloud API.
  • No cold outreach. Permission requests are capped, unanswered calls revoke permission, and US, Canadian, Egyptian, Vietnamese and Nigerian business numbers cannot place business-initiated calls at all.
  • You supply the phone system. Meta handles signaling and transport; answering, routing, queueing, recording storage and agent software are yours or your provider's.

For the wider map of the platform's pieces, see the WhatsApp Business Platform overview.

Where Tenashi fits

Tenashi does not place or receive WhatsApp calls. Its API sends text, media and quoted replies through your existing number, linked as a device, and calls still ring on the phone that owns the number. If voice calling from a business number into your contact centre is the requirement, the Calling API on Cloud API (directly or through a provider) is the tool.

Where Tenashi fits is the chat around the call: the shared inbox where your team handles WhatsApp DMs and groups together, notes like "called her, sending the revised quote", follow-ups and deals in the CRM, on the number customers already have saved, from $18/mo. The complete guide to the WhatsApp API covers how the official and linked-number routes compare.

See every feature · Get started

FAQ

Is the WhatsApp Business Calling API free?

User-initiated calls are free: customers calling your business cost you nothing per call. Business-initiated calls are billed per 6-second pulse based on the destination country and your monthly volume tier. Call permission request messages are billed as ordinary messages. Recording and transcription are currently free, with separate pricing planned by Meta.

Can a business call any WhatsApp user through the API?

No. You need the user's permission first, granted through a permission request, a callback after they called you, or your business profile. Permission is temporary for 7 days or permanent until revoked. You can send at most 1 request per user per 24 hours and 2 per 7 days.

Which countries support business-initiated WhatsApp calls?

Business-initiated calls work wherever Cloud API is available except for business numbers from the United States, Canada, Egypt, Vietnam and Nigeria. The restriction depends on the business number's country code, not the customer's. User-initiated calls work in every location where Cloud API is available.

Can I use the Calling API with a WhatsApp Business app number?

No. Meta requires the business number to be on Cloud API, not the WhatsApp Business app, and the business needs a messaging limit of at least 2,000 unique recipients per day. Test numbers and sandbox accounts are exempt from the messaging limit requirement but are only for development.

Does the WhatsApp Calling API support video calls?

Not yet. Meta's documentation lists video calling and screen sharing as planned or in development. Today the API supports voice calls, with OPUS audio and G.711 codecs, over WebRTC or SIP. Check the Calling API overview and changelog before promising video to customers, since availability may change.

Voice belongs on the Calling API; the conversation around it belongs with your team. See how Tenashi's shared inbox works for every WhatsApp chat your business has.