Twilio vs. WaAPI

A Twilio alternative for WhatsApp with flat pricing

Twilio charges every message — $0.005 plus Meta’s fee — and needs Meta’s business verification before production. WaAPI costs a flat $10 per number and connects the number you already have.

Twilio pricing for WhatsApp

What 1,000 messages cost, and where a flat rate wins

Cost per message = $0.005 Twilio fee + Meta’s fee for the recipient’s country. Calculated with utility messages, the category notifications use; since 1 October 2026 the same rate applies to replies inside the 24-hour window.

Recipient country Cost per message 1,000 messages 5,000 messages WaAPI ($10) is cheaper from
United States $0.0084 $8.40 $42.00 about 1,200 messages a month
Germany $0.0600 $60.00 $300.00 about 170 messages a month
India $0.0064 $6.40 $32.00 about 1,600 messages a month
Brazil $0.0118 $11.80 $59.00 about 850 messages a month

Below the line, Twilio is cheaper

A few hundred messages a month to the United States, India or Brazil cost less on Twilio than a flat $10. That’s the honest reading of the table.

Marketing costs far more

1,000 marketing messages cost $141.50 to Germany, $16.80 to India, $67.50 to Brazil. Marketing templates to US numbers are not allowed at all.

WaAPI’s numbers have a limit too

With send protection on, a number starts up to 60 new conversations a day. 5,000 messages a month are realistic to people you already talk to, not to 5,000 strangers.

As of October 2026. Sources: Twilio pricing and Meta fee list · Meta, non-template messages. Rates in USD; break-even rounded.

At a glance

Beyond the price

 
Twilio
On Meta's platform
WaAPI
Independent · flat rate
Pricing model No base fee. $0.005 per message, sent or received, plus Meta's fee per message. Failed messages $0.001. Phone numbers from $1.15 a month $10 per connected number a month, nothing per message
Before the first message Upgraded account, Meta business portfolio, WhatsApp Business Account, and a number not yet registered with WhatsApp Link a number that runs the app by QR code or pairing code
Business verification Meta's verification before production; according to Twilio it can take several weeks Not required
Templates Approval usually in minutes, up to 48 hours on manual review None needed
Throughput Up to 80 messages per second; Meta's sending tiers apply Paced at 1–2 s between messages per number by default; scale with more numbers
Groups Group messaging through Twilio Conversations Groups and channels through the same API
SDKs C#, Java, Node.js, PHP, Python, Ruby, Go PHP, Laravel, Python, Node.js, plus an n8n node and an MCP server
Testing Trial account without card: up to 5 verified recipients, expires after 30 days. Shared sandbox number, one message every 3 seconds Free trial on your own number

As of October 2026, read on each provider’s own pages. Sources: Twilio pricing · Twilio messaging pricing · Twilio self sign-up · Twilio trials · Twilio sandbox · Template approvals · Twilio libraries · Throughput

Which one fits

Twilio or WaAPI?

When Twilio is the better choice

  • You send large volumes to people who never wrote to you.
  • You need the official sender, high throughput — up to 80 messages a second — or more channels such as SMS from one provider.
  • Your volume per number stays below the break-even in the table above.

When WaAPI fits better

  • You want to use your own existing number.
  • Your volume per number is above the break-even for your recipients' country.
  • You need groups and channels.
  • You want to start today, not after a business verification.

Switching

Moving a project from Twilio

  1. 1. Link a number that runs the app. The sender you registered with Twilio is on Meta’s API; WaAPI links your app number or a new one by QR code.
  2. 2. Swap the address format. Recipients become a chat id: the number without the plus sign, followed by @c.us.
  3. 3. Replace templates with text. No content templates, no approval: the body is the message.
  4. 4. Move the status callback. Delivery updates and incoming messages go to the instance’s webhook URL.
curl --request POST \
  --url https://waapi.app/api/v1/instances/123/client/action/send-message \
  --header 'authorization: Bearer your-api-token' \
  --header 'content-type: application/json' \
  --data '{
    "chatId": "[email protected]",
    "message": "Your appointment is confirmed for Tuesday, 10:30."
}'
<?php

$instanceId = 123;
$apiToken = 'your-api-token';

$ch = curl_init("https://waapi.app/api/v1/instances/{$instanceId}/client/action/send-message");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'authorization: Bearer ' . $apiToken,
        'content-type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'chatId' => '[email protected]',
        'message' => 'Your appointment is confirmed for Tuesday, 10:30.',
    ]),
]);

echo curl_exec($ch);
import requests

instance_id = 123
api_token = "your-api-token"

response = requests.post(
    f"https://waapi.app/api/v1/instances/{instance_id}/client/action/send-message",
    headers={"authorization": f"Bearer {api_token}"},
    json={
        "chatId": "[email protected]",
        "message": "Your appointment is confirmed for Tuesday, 10:30.",
    },
)

print(response.json())
const instanceId = 123;
const apiToken = 'your-api-token';

fetch(`https://waapi.app/api/v1/instances/${instanceId}/client/action/send-message`, {
  method: 'POST',
  headers: {
    authorization: `Bearer ${apiToken}`,
    'content-type': 'application/json',
  },
  body: JSON.stringify({
    "chatId": "[email protected]",
    "message": "Your appointment is confirmed for Tuesday, 10:30.",
  }),
})
  .then((res) => res.json())
  .then(console.log);

Limits

Limits and sending safely

There is no cap on how many messages you send. What gets numbers restricted is contacting many people who never wrote to you — so send protection is on by default for every new number.

1–2 s
pause between two messages, per number
20
new conversations per hour, per number
60
new conversations per day, per number

What counts as a new conversation: a person who has never written to your number and whom you have not messaged in the last 7 days. Replies to people who wrote to you first and messages to groups and channels never count, and a follow-up within those 7 days doesn’t count twice.

Need more? Spread new contacts across several numbers, or switch send protection off for a number after confirming the warning — at your own risk.

How to avoid restrictions

Your first instance is free
One instance, free for your first month — with code FREEINSTANCE, entered at checkout.
Flat rate

Flat rate, simple

$10 / month, per connected number

Unlimited messages. Media, groups, channels, SDKs and MCP included. Cancel anytime.

  • No per-message fees
  • No per-user fees
  • No setup fee
  • Cancel anytime

Twilio vs. WaAPI: questions

Cost, setup and what changes in your code.

$0.005 for each message sent or received, plus Meta’s fee for the category and the recipient’s country. In the United States a utility message comes to $0.0084 in total, in Germany to $0.0600 (as of October 2026).

For utility messages the break-even is about 1,200 messages a month to US numbers and about 170 messages a month to German numbers. Below that, per-message pricing costs less than $10.

No. There is no business portfolio, no verification and no template review. You link a number by QR code and send.

WaAPI links numbers that run in the app. A number registered on Meta’s API through Twilio doesn’t, so use your app number or a new one.

No, only this one messaging channel. If you need SMS from the same provider, that is a reason to stay with Twilio.

Swap the meter for a flat rate

3-day free trial · No credit card · Cancel anytime.