WhatsApp API: official Business API vs unofficial integrations

19 August 2026 · 9 min read

“WhatsApp API” means two very different things, with different costs, capabilities and risks. Picking the wrong one wastes either months of approval or a phone number. Here is the honest comparison.

The two options

The official WhatsApp Business API (now the Cloud API) is Meta’s sanctioned product. You apply through Meta or a Business Solution Provider, verify your business, register a number that is not on the WhatsApp app, and send using templates Meta approves in advance. You pay per conversation.

An unofficial integration links an ordinary WhatsApp account as a companion device — the same mechanism behind WhatsApp Web and WhatsApp Desktop. No application, no templates, no per-message fee. This is what uni-msg does, and it is not authorised by Meta.

Side by side

Official Business APIUnofficial (companion device)
SetupBusiness verification, days to weeksScan a QR code, minutes
CostPer 24-hour conversation, plus provider feesFlat subscription, no per-message fee
TemplatesPre-approved by Meta for outboundAny message, no approval
NumberDedicated, cannot use the WhatsApp appYour existing number, app keeps working
Green tickPossibleNot possible
GroupsNot supportedSupported
Terms of ServiceCompliantAgainst WhatsApp's ToS
Ban riskLow; policy violations still applyReal — the number can be banned
DurabilityStable, versionedMeta can change the protocol anytime

How the unofficial integration actually works

WhatsApp’s multi-device architecture lets one account run several clients at once. When you link a device, your phone hands that client its own encryption keys, and from then on it talks to WhatsApp’s servers directly — your phone does not need to stay online.

Two routes to the same destination: a long upper path through several gates, and a short direct lower path
Both routes end at the same message. The official one passes through business verification, a provider, and template approval; the unofficial one links your existing number directly. The gates buy you Meta’s guarantees — and cost you weeks and a per-conversation fee.

An unofficial client speaks that same protocol. Practically that means:

  • Messages stay end-to-end encrypted between you and your contacts.
  • The session runs server-side, so it works while your phone is off.
  • It appears in Linked devices like any other client.
  • It can do things the official API cannot, such as groups and communities.

The catch: the protocol is undocumented and unsupported for third parties. Meta changes it whenever it likes, clients break, and accounts using them can be restricted.

The risks, stated plainly

  1. It violates WhatsApp’s Terms of Service. That is not a grey area. Accepting that is the price of entry.
  2. Your number can be banned. Usually driven by recipient blocks and reports rather than the client itself — see the ban guide.
  3. Protocol changes break things. Expect occasional disruption when WhatsApp ships a change.
  4. No official support. Nobody at Meta will help you.
  5. No green tick or official business profile.

Which should you choose?

Pick the official API when you are an enterprise or regulated business, you need the verified badge, you send very high volume that justifies per-conversation pricing, or an outage is unacceptable.

Pick an unofficial integration when you are a small or mid-sized business, you want your existing number and normal chat behaviour, you need groups, you want predictable flat pricing, and you can accept the ToS and ban risk.

A pragmatic middle path: start unofficial to validate that WhatsApp is a channel worth investing in, and migrate to the official API once the volume justifies the cost and the setup.

What uni-msg’s API gives you

A REST API with API-key auth for text, media, documents, locations, buttons and lists, plus webhooks that push inbound messages and delivery status to your endpoint in real time. The Developer plan is API-only. Sending is as simple as:

POST /api/v1/messages/send
Authorization: Bearer <api-key>

{
  "deviceId": "dev_...",
  "to": "+971500000000",
  "type": "text",
  "content": "Your order has shipped."
}

Start free → · More in the FAQ