Bird vs Wati
Bird vs Wati for WhatsApp
Wati is a WhatsApp product for business teams, with an API attached. Bird carries the same team-facing products, an agent inbox, a no-code chatbot builder and campaigns, and puts a WhatsApp API with its own endpoint, SDKs and agent tools underneath them. So the comparison is one of scope: a single WhatsApp tool, or those products plus the integration surface below them.
What Wati is great at.
Where Bird is different.
What Wati is great at
One purchase, aimed at the people who will use it. A shared team inbox, a no-code chatbot builder and broadcast campaigns, sold to marketing, sales and support rather than to engineering. Bird ships all three as well, on the platform that sits around the WhatsApp API, so what you are choosing between is a single WhatsApp tool and a wider account that happens to include one.
Seats, not just traffic. Their plans are priced around users and inclusions, with per-seat rates published for the higher tiers. If the value you are buying is a team working a shared inbox, that shape matches what you are actually paying for better than a per-message rate does.
Scoped API tokens with an expiry. A token is created in the dashboard with selectable scopes and an optional expiry date. Bird's API keys are scoped too, and putting an expiry in the creation flow is the kind of small thing a security review notices.
Where Bird is different
One host, not one per tenant. Wati's base URL carries your account in the path, so the host differs per customer and every example has to be rewritten before it runs. Bird's is a regional host that is the same for everyone in that region, with the workspace carried by the key.
A retry that cannot double-send. An Idempotency-Key header on the send makes a repeat safe, and on WhatsApp a duplicate opens a second billable conversation rather than merely repeating itself.
An agent can run the channel. 43 WhatsApp tools on the hosted server at mcp.bird.com, covering the send, the template lifecycle through submission to Meta, number registration and profile, and statistics, alongside typed SDKs in TypeScript, Python, Go and PHP.
The matrix
Capability by capability.
Wati is bought by the team that will work the inbox; Bird is bought by that team and the engineers behind it. Read the even rows as genuinely even, because both sides ship the inbox, the chatbot builder and the campaigns. What separates them is the integration underneath, where Bird takes the host, the retry, the SDKs and the agent tools. Scope is the argument in Wati's favour: if WhatsApp is all you want, the rest of a platform is weight you are not using.
| Capability | Bird | Wati | Who wins? |
|---|---|---|---|
| Send request | JSON to /v1/whatsapp/messages on your regional host with a bearer API key. The host is the same for every workspace in a region. | JSON to a template-send path on a per-tenant host that carries your account in the URL, with a bearer token created in the dashboard. The version sits in the path. | |
| Safe retries | An Idempotency-Key header on the send makes a retry safe. | No idempotency key or header appears in their API documentation, so a retry after a timeout can send twice. | |
| Content types | One send body selects text, template, image, video, audio, sticker, document, location, interactive or contact cards. | Their API groups messaging, contacts, media and operator assignment, with separate paths for sending a template and sending a session message. | |
| Typed SDKs | Typed SDKs for TypeScript, Python, Go and PHP, generated from the API. | REST over JSON with a documented reference. Their documentation index names client libraries in seven languages, but no first-party package is published on npm, PyPI or Packagist; the Wati packages on those registries are community-maintained. | |
| Agent surface | 43 WhatsApp tools on the hosted server at mcp.bird.com, covering the send, templates, numbers and statistics. | Their AI products are Copilot, AI Agents and a bring-your-own-agent option, aimed at answering customers inside their inbox rather than at operating the account from your own agent. | |
| A team inbox out of the box | A unified agent inbox ships with the Bird platform: WhatsApp beside SMS, email and social DMs, with internal notes, tagging, and ticket routing by skill and workload. It is a platform product, so the WhatsApp API itself gives you the send, the inbound events and the message log, which is what you use if you would rather feed the helpdesk you already run. | The core of the product: a shared inbox with operator assignment, a no-code chatbot builder, and broadcast campaigns. | |
| Published pricing | Rates are published per country on the WhatsApp pricing page. | Per-seat and add-on rates are published, and the base monthly rate for the Growth, Pro and Business plans is not stated as a number on the pricing page. | |
| Channels beyond WhatsApp | SMS, email, voice, Verify and Realtime under the same base URL and key. | WhatsApp is the core, with Instagram, Facebook, website chat, SMS and TikTok DMs named alongside it. |
The same message
Sending one WhatsApp template.
The host is the first thing to notice: Wati's carries your account, so this snippet does not run for anyone else without editing the URL. Bird's is regional and constant, with the workspace carried by the key, and the send takes an Idempotency-Key.
Wati
const orderId = "ord_8f21";
const account = process.env.WATI_ACCOUNT_ID!;
const response = await fetch(
`https://live-mt-server.wati.io/${account}/api/ext/v3/messageTemplates/send`,
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.WATI_API_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
whatsappNumber: "15551234567",
template_name: "order_shipped",
broadcast_name: "order_shipped_sep",
parameters: [{ name: "1", value: orderId }],
}),
},
);
const result = await response.json();
console.log(result.result);
Bird
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const orderId = "ord_8f21";
const { data, error } = await bird.whatsapp
.send(
{
from: "+13124495648",
to: "+15551234567",
template: {
slug: "order_shipped",
language: "en_US",
components: [{ type: "body", parameters: [{ type: "text", text: orderId }] }],
},
},
{ idempotencyKey: orderId },
)
.safe();
if (error) console.error(error.message);
else console.log(data.id, data.status);
Switching cost
Low for the code. Retraining for the people.
The API move is small. Both sides are JSON with a bearer token, so the send is a URL change, a body reshape and a header, and the per-tenant host becomes a regional one. If you only ever used Wati's API, this is an afternoon.
The inbox is the bigger item, and it is retraining rather than rebuilding. A support team that works Wati's shared inbox every day moves to Bird's, which carries WhatsApp beside SMS, email and social DMs with its own notes, tagging and routing, so the conversations still arrive somewhere staffed. Budget the change of habit. If you would rather not move the team at all, route the inbound events into the helpdesk you already run and leave the agents where they are.
Questions people actually ask
Is Bird a good Wati alternative?
What do I have to build myself on Bird?
Why does the base URL matter?
Can an AI agent operate either one?
Where to go next
The sending guide is the one to start with: it covers the send call and the window rules.