Twilio's WhatsApp API is one of the most common ways developers reach WhatsApp, because it sits next to Twilio's SMS and voice products and uses the same Messages endpoint. It runs on the official WhatsApp Cloud API: your number is registered as a business sender, messages outside a customer's 24 hour window need approved templates, and each message carries fees. wuapi is a different model, linking a number you already use as a device. This page covers when each one is right.
- Advantage: Your number stays in the WhatsApp app while the API uses it.
- Advantage: No fee per message: a flat price per number.
- Advantage: Groups, as a full member: create, add, remove and post.
- Advantage: A Free plan with a real number instead of a shared sandbox.
- Disadvantage: No templates, verified badge or official messaging tiers.
- Disadvantage: Not for bulk outbound to people who never wrote to the number.
- Disadvantage: WhatsApp only: no SMS or voice.
- Advantage: The official Cloud API: a verified business and approved templates.
- Advantage: Scales through messaging tiers, up to no cap.
- Advantage: SMS, voice and WhatsApp on one account and one bill.
- Advantage: SDKs in seven languages.
- Disadvantage: $0.005 per message both ways, plus WhatsApp's template fees.
- Disadvantage: The number cannot stay in the WhatsApp app once registered.
- Disadvantage: Service replies are charged from October 2026.
- Disadvantage: Webhook retries default to one attempt, on a connection failure.
#How Twilio's WhatsApp API works
You register a WhatsApp sender in the Twilio console. Self sign-up connects a WhatsApp Business Account to your Twilio account, the display name has to meet WhatsApp's guidelines, and a new business portfolio has to complete business verification before production use. The number can be a Twilio number or one you own, as long as it is not already registered with WhatsApp. Twilio's docs say plainly that once it is registered you can no longer use the WhatsApp or WhatsApp Business app with that number.
Sending is a POST to https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages.json with From and To written as whatsapp:+15551234567, and either a Body or a ContentSid pointing at a template from the Content Template Builder. Delivery updates arrive at a StatusCallback URL, signed with X-Twilio-Signature, an HMAC-SHA1 keyed with your auth token.
For testing there is a sandbox: a shared number that people join by sending a code, with three preset templates and one message every three seconds.
#What it costs
From Twilio's WhatsApp pricing page, in US dollars:
- Twilio's fee is $0.005 per message, sent or received.
- WhatsApp's own fee per template message is passed through. Utility and authentication templates start at $0.0034 a message, and marketing templates cost more and vary by country.
- Failed messages cost $0.001 each.
- A US phone number, if you rent one from Twilio, is $1.15 a month.
Inside a customer service window, the official platform does not charge for free-form replies or utility templates today. That changes on October 1, 2026: the platform's pricing docs say service messages start to be charged from that date, at the same rate as utility and authentication templates in each market, and utility templates inside the window stop being free. Each business phone number keeps 1,000 free service messages a month, service messages get no volume tiers, and free entry point windows stay free. Twilio's pricing page did not mention it yet on the day we checked.
#One support line, priced both ways
Take a single support number that receives 2,500 messages a month and sends 2,500 replies, all inside each customer's window.
On Twilio, the platform fee alone is $0.005 on each of the 5,000 messages, which is $25 a month, plus $1.15 if you rent the number from Twilio. From October 2026, WhatsApp's own fee is added on top for the 1,500 replies past the free 1,000, at the utility rate for each customer's country. If the same line also sent reminders to customers whose window had closed, each one would be a template with its own fee.
On wuapi, that number costs $6 a month, and the price does not move with the count. The reminders are normal messages. What you watch instead is the pace: a number that suddenly writes first to hundreds of people looks different from one that answers, which is why pacing exists and why we recommend it for that kind of sending.
The official platform starts to make sense on price when the traffic is mostly outbound and high volume, which is also where it makes sense for every other reason.
#When Twilio is the right call
The official platform exists for good reasons, and for some teams it is the only sensible choice.
- You send notifications that start with you. Order updates, delivery windows, reminders and one-time codes to people who have not written to you recently are what approved templates are designed for.
- You are a regulated or large sender. Banks, airlines and healthcare providers usually need the paper trail, the verified business name and a contract with a provider.
- You want the verified business path. A verified sender and the official business badge live only on the official platform.
- You already run SMS and voice on Twilio. One vendor, one bill and one webhook format across channels is worth something.
- Your volume is high and outbound. The official platform scales a sender through messaging tiers, from 250 unique recipients a day for a new business up to no cap, instead of pacing a single phone.
If that is your case, stay. Linked device or Cloud API lays out the split in more detail.
#When a linked number fits better
wuapi links a number to our API the way WhatsApp Web links to a phone. Nothing is registered: the number keeps working in the WhatsApp app, and the API sends and receives alongside it.
- Your number stays on the phone. The owner keeps chatting from the app, and every message, from the app or the API, shows up in both.
- No templates and no window. A linked number sends normal messages at any time, to anyone who expects them, without an approval step.
- A flat price per number. $6 for the first, $4.50 each from the second to the fiftieth, $3.50 after, and no fee per message from anyone. The price is the same whether the number sends ten messages a month or ten thousand.
- Groups as a member. A linked number can create groups, add and remove people, and post in them.
- A Free plan. 1 number, 2,000 messages a month and 0.5 GB of proxy traffic, with no card. See pricing.
The trade is the one the platform sets: a linked number is a person's account used by software. It has no templates, no buttons or list messages, and no verified business badge. It sends at a person's pace, and WhatsApp can restrict it for what it sends, the same as any account. Turn on pacing for anything that starts with you, and read keep your number healthy first.
#What wuapi adds around the number
- A residential proxy per number. Each number connects through a sticky residential exit in the country and city you pick, and stays offline rather than falling back to a datacenter IP.
- Pacing per number, off by default. A per-minute cap, a lower cap for first contacts and a typing indicator, set with
PATCH /v1/accounts/{accountId}. We recommend12a minute and5to new contacts for outbound sending. - Webhooks.
Wuapi-Signaturecarries an HMAC-SHA256 of the timestamp and the raw body, and a failed delivery is retried at 30s, 2m, 10m, 1h and 6h. Twilio's default is one retry, on a connection failure, which you can raise per URL. - Idempotent sends.
Idempotency-Keyon anyPOST, kept 24 hours. - A typed SDK and an MCP server.
@wuapidev/sdkfor TypeScript, and an MCP server whose tools send and read messages. Twilio's hosted MCP server, in public beta, searches its docs and API reference.
#Side by side
| Twilio WhatsApp | wuapi | |
|---|---|---|
| model | official Cloud API | linked device |
| setup | business account, verification, display name | scan a QR code or enter a pairing code |
| price | $0.005 per message plus WhatsApp's template fees | $6 first number, $4.50 each to 50, $3.50 after |
| per-message fees | yes, both ways | none |
| templates | required outside the 24 hour window | none |
| number on the WhatsApp app | no, per Twilio's docs | yes, it stays on the phone |
| groups | not documented as native | create, add, remove, post |
| verified business badge | available | not available |
| scale | messaging tiers, up to no cap | one number at a person's pace |
| free option | sandbox for testing | Free plan: 1 number, 2,000 messages a month |
| webhook signing | HMAC-SHA1 of URL and parameters | HMAC-SHA256 over timestamp and raw body |
| webhook retries | 1 by default, configurable | 30s, 2m, 10m, 1h, 6h |
| SDKs | seven languages | TypeScript, plus OpenAPI 3.1 |
| MCP server | docs and API search, in beta | sends and reads messages |
| SMS and voice | yes | no |
#Moving from Twilio
The code is the easy part.
| Twilio | wuapi |
|---|---|
| WhatsApp sender | account |
| Account SID and auth token | Authorization: Bearer wu_live_... |
Messages.json with From, To, Body | POST /v1/messages with accountId, to, text |
whatsapp:+15551234567 | +15551234567 |
ContentSid template | a normal message |
StatusCallback | message.sent, message.delivered, message.read, message.failed |
| inbound webhook | message.received |
X-Twilio-Signature | Wuapi-Signature |
// Twilio
await client.messages.create({
from: "whatsapp:+15551234567",
to: "whatsapp:+15557654321",
body: "Your table for two is ready.",
})
// wuapi
await wuapi.messages.send({ accountId, to: "+15557654321", text: "Your table for two is ready." })The part that takes planning is the number:
- A number registered with the official platform cannot be linked as it is. It has to be released from the platform first and set up in the WhatsApp or WhatsApp Business app again. Ask Twilio how to deregister the sender. Many teams link a different number instead.
- Keep templated traffic where it is. If some of what you send needs templates, keep that on Twilio and move the conversational traffic. Plenty of products run both.
- Replace the signature check with the one in the docs.
#Questions people ask
How much does Twilio charge for WhatsApp?
On the day we checked, Twilio's fee was $0.005 per message sent or received, plus WhatsApp's own fee for each template message, which Twilio passes through. Utility and authentication templates start at $0.0034. Failed messages cost $0.001.
Can I use my existing WhatsApp number with Twilio?
Only if it is not registered with WhatsApp already. Twilio's docs say the number has to be removed from the WhatsApp app before it can be registered, and afterwards it cannot be used in the app. wuapi links the number as a device, so it stays on the phone.
Does wuapi support WhatsApp templates like Twilio?
No. Templates belong to the official platform. A linked number sends normal messages without an approval step or a 24 hour window, which suits conversations and replies. For outbound notifications at volume, keep the official platform.
Is wuapi cheaper than Twilio for WhatsApp?
For conversational traffic, usually. wuapi is a flat price per number, from $6 a month, with no fee per message. Twilio charges per message both ways plus template fees, so the gap grows with volume.
Does WhatsApp start charging for service messages?
From October 1, 2026, per the official pricing docs, at each market's utility rate, after 1,000 free service messages a month per business number, with no volume tiers. Free entry point windows stay free. A linked number has no per-message fee.