Green API is a hosted WhatsApp API from a company based in Astana, Kazakhstan, that links a number to an instance by QR code, the same linked-device model wuapi uses. It has been around for years, it is inexpensive, and it has official client libraries in more languages than most. This page compares the two on what a number costs and what comes with it.
- Advantage: A lower list price per number, and lower again from the second number.
- Advantage: A sticky residential exit per number in the country you pick.
- Advantage: HMAC-SHA256 over the timestamp and the raw body on every webhook.
- Advantage: Separate per-minute, first-contact and typing controls, plus idempotent sends.
- Disadvantage: One official SDK, for TypeScript; other languages call REST or generate a client.
- Disadvantage: No polled notification queue: webhooks are the main path.
- Disadvantage: Proxy traffic past 0.5 GB a month per number costs $0.99 per GB.
- Advantage: Official client libraries in many languages.
- Advantage: Receive by webhook or by polling a queue kept for 24 hours.
- Advantage: Handset hosting, and an official Cloud API product under the same roof.
- Advantage: A free Developer plan to try the API.
- Disadvantage: The Developer plan is limited to 3 chats.
- Disadvantage: Webhooks carry a token; the body is not signed.
- Disadvantage: No residential exit per instance is documented.
- Disadvantage: The instance token travels in the URL path.
#What Green API is
An instance on Green API is one linked number. You create it in the console, scan a QR code from the phone's Linked devices screen, and call the API with the instance's id and token in the URL:
POST {apiUrl}/waInstance{idInstance}/sendMessage/{apiTokenInstance}
with a chatId and a message in the body. Each instance gets its own API host from the console.
Things it does that are worth knowing:
- Two ways to receive. Your server can poll a queue with
receiveNotification, then acknowledge each item withdeleteNotification, or Green API can POST each event to your webhook. Notifications wait in the queue for 24 hours. - A send queue. Messages queue while the instance is not authorized, for up to 24 hours, and leave at an interval you set with
delaySendMessagesMilliseconds, from 500 ms up to 10 minutes. - Libraries. Official clients for Python, JavaScript, Go, PHP, Java, C++ and 1C, plus webhook-server helpers and n8n nodes.
- An MCP gateway published by the company, and a separate product for the official WhatsApp Business Platform.
- Handset hosting, where the phone itself sits in their data center.
#What it costs
From the Green API pricing page, in US dollars, per instance:
- Developer is free, with a limit of 3 chats you can interact with and 100 number checks a month, and one Developer instance per console.
- Business is $12 a month, with no cap on chats or messages and 30,000 number checks a month.
- Chatbot is $24 a month, and adds features such as broadcasts.
- Partner is $0.40 a day per instance, with white label, instance management by API and daily billing.
Plans apply to each instance separately, and annual billing is offered.
#What wuapi costs
$6 for the first number, $4.50 for each from the second to the fiftieth, $3.50 from the fifty-first. A residential proxy is part of each number, with 0.5 GB of traffic a month included per paid number and anything past that at $0.99 per GB.
On list price wuapi costs less per number than Green API's Business plan from the first number on, and the gap grows with volume, since wuapi's price per number drops at the second and the fifty-first. Green API's Developer plan and wuapi's Free plan are shaped differently: Developer caps you at 3 chats, while the Free plan has no chat limit and counts 2,000 messages a month, sent and received together, on 1 number with 0.5 GB of proxy traffic.
#A month at three sizes
The linked numbers on each list price, before any traffic past the included proxy allowance on wuapi:
| numbers | Green API Business | wuapi |
|---|---|---|
| 1 | $12 | $6 |
| 5 | $60 | $24 |
| 10 | $120 | $46.50 |
| 25 | $300 | $114 |
Each wuapi number includes 0.5 GB of residential proxy traffic a month, pooled, so ten numbers share 5 GB. A text-only support number uses a small part of that. Numbers that send and receive a lot of photos and video use more, and traffic past the pool is billed at $0.99 per GB, which the dashboard shows as it accrues.
Green API's Chatbot plan, at $24 an instance, adds features such as broadcasts that wuapi does not package as a plan. wuapi has no plans at all: every number gets the whole API, groups included.
#The differences that matter
#Proxies
Green API mentions a free proxy for countries where WhatsApp is blocked, which is about getting access at all. We did not find a residential exit per instance in its docs. On wuapi every number connects through a residential proxy with a sticky exit in the country and city you choose, from 134 countries, and if that proxy is down the number stays offline rather than connecting from a datacenter address. A network identity that stays put is one of the signals covered here.
#Webhook authentication
Green API can send a token you choose in the Authorization header of each webhook, as Bearer or Basic, and publishes the IP addresses its webhooks come from. There is no signature over the body.
wuapi signs every delivery: Wuapi-Signature: t=<unix>,v1=<hex>, an HMAC-SHA256 of the timestamp and the raw body. That proves the body is ours and unchanged, and the timestamp lets you refuse a replay. Signed webhooks shows the check.
#Retries
Green API retries a webhook at one-minute intervals and says an incoming webhook is delivered within 24 hours. wuapi retries at 30s, 2m, 10m, 1h and 6h, six attempts, and keeps every delivery in the dashboard for 30 days, with each attempt's status and a resend button.
#Pacing
Green API's pacing is one interval between messages from the queue, and its FAQ gives advice such as warming a new number for at least ten days. wuapi has three separate controls per number: a per-minute cap, a lower cap for people who never wrote to the number, and a typing indicator sized to the message. They are off by default, and we recommend 12 a minute and 5 to new contacts for anything that starts with you. The guide says when.
#Idempotency
wuapi keeps an Idempotency-Key for 24 hours on any POST, so a retried send returns the first result. We did not find the equivalent in Green API's docs.
#When a number drops
Linked sessions drop and reconnect by themselves many times a day, usually within seconds. On wuapi those blips are not events: account.disconnected fires only if the number is still not ready after a 20 second grace, and a send made during a blip waits for the number and goes out once it is back, with the same message id so it cannot arrive twice. A drop the session cannot recover from, such as the phone logging the device out, is reported at once, and the engine stops reconnecting instead of looping.
You also hear about it without writing any code. The dashboard emails the owner and admins, and can post to Slack, when a number stays offline past a threshold you set (10 minutes by default), needs to be linked again, or a webhook endpoint keeps failing.
#Side by side
| Green API | wuapi | |
|---|---|---|
| model | linked device, hosted | linked device, hosted |
| price per number | $12 a month on Business | $6 first, $4.50 each to 50, $3.50 after |
| free tier | Developer: 3 chats, one instance | 1 number, 2,000 messages a month |
| residential proxy per number | not documented | included, sticky, fails closed |
| receiving | webhook or polled queue | webhooks, plus GET /v1/messages |
| webhook authentication | token in Authorization, IP list | HMAC-SHA256 over timestamp and raw body |
| webhook retries | every minute, within 24 hours | 30s, 2m, 10m, 1h, 6h |
| pacing | one delay between queued sends | per-minute cap, first-contact cap, typing |
| idempotent sends | not documented | Idempotency-Key, 24 hours |
| auth | token in the URL path | bearer key in a header |
| SDKs | many languages | TypeScript SDK, OpenAPI 3.1 |
| MCP server | yes | local and hosted |
| multi-tenant | partner plan | projects with their own keys and usage |
#Moving from Green API
| Green API | wuapi |
|---|---|
| instance | account |
idInstance and apiTokenInstance in the URL | account id in the body, key in Authorization |
sendMessage with chatId, message | POST /v1/messages with accountId, to, text |
79001234567@c.us | +79001234567 |
receiveNotification, deleteNotification | a webhook endpoint, or GET /v1/messages |
incomingMessageReceived | message.received |
outgoingMessageStatus | message.sent, message.delivered, message.read, message.failed |
stateInstanceChanged | account.connected, account.disconnected |
delaySendMessagesMilliseconds | pacing.messagesPerMinute |
// Green API
await fetch(`${apiUrl}/waInstance${idInstance}/sendMessage/${apiTokenInstance}`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ chatId: "79001234567@c.us", message: "Your order is ready." }),
})
// wuapi
await wuapi.messages.send({ accountId, to: "+79001234567", text: "Your order is ready." })Things to plan:
- Relink each number. Sessions do not move between providers, so each phone scans a new QR code or enters a pairing code.
- Swap polling for webhooks. If you polled the notification queue, create a webhook endpoint and verify each delivery as the docs show. Handle events by
id, since a delivery can arrive twice. - Move the token out of the URL. Keys go in a header on wuapi, which keeps them out of access logs.
- Map your delay to pacing. If you set a send interval on Green API for outbound campaigns, turn on the per-minute and first-contact caps on the accounts that send them, and leave them off on numbers that only reply.
#Questions people ask
How much does Green API cost?
On the day we checked, the Developer plan was free with a 3 chat limit, Business was $12 a month per instance, Chatbot was $24 a month, and the Partner plan was $0.40 a day per instance. Plans apply per instance.
Does Green API sign webhooks?
It can send a token you choose in the Authorization header and publishes its source IP addresses, but it does not sign the body. wuapi signs every delivery with an HMAC-SHA256 over the timestamp and the raw body.
Does Green API include a residential proxy?
We did not find a residential exit per instance in its docs. It mentions a free proxy for countries where WhatsApp is blocked. wuapi includes a residential proxy with a sticky exit in the country you choose for every number.
Is wuapi cheaper than Green API?
On list price, yes: $6 a month for one number against $12 on Business, and $46.50 against $120 for ten. wuapi bills proxy traffic past 0.5 GB a month per number at $0.99 per GB, so a number heavy on media can add to that.
Can I poll for messages on wuapi like Green API's queue?
You can list messages with GET /v1/messages and page through them, but the intended path is a webhook endpoint. Deliveries are signed and retried for about seven hours, so a short outage on your side does not lose events.