WhatsApp API, the way it should be.
Link a number by QR or pairing code, send and receive over REST and signed webhooks.
No credit card required
- Read https://wuapi.dev/agent-setup.md and follow it to set up wuapi in this project.
- Logging in to wuapinpx @wuapidev/cli loginapprove HWDR-7KQP in your browserdone
- Installing wuapi skillsnpx skills add wuapidev/wuapi-skillsdone
- Installing @wuapidev/sdkdone
- Connecting the wuapi MCP servernpx @wuapidev/cli mcp adddone
- Linking your number…open the link in your browser: wuapi.dev/invite/…
- Number readydone
- Sending a test message to +58 424 111 2233
- 202 queuedmessage.sentmessage.deliveredmessage.readdone
- Done. Your agent can send and receive WhatsApp now.
100+ organizations already run their WhatsApp on wuapi.
00/Agent setup
Let your agent set it up
The session in the Agent tab, run in your own project.
What the prompt does
- loginnpx @wuapidev/cli login
- skillswuapi agent skills
- docsllms-full.txt
- sdk@wuapidev/sdk
- mcp86 tools, connected
- linknumber + test message
01/Price
Save up to 99% vs the official API
The official Cloud API charges every message, replies included. wuapi charges per connected number. Here is 100,000 messages a month, 5% of it marketing and the rest utility and replies, for your recipients.
Official Cloud API
$951/mo
charged per message
wuapi
$7/mo
1 number · no per-message fee
You save
99%
$11,328 less a year
Brazil: marketing $0.0625 · utility and replies $0.0068 · rates effective Oct 1, 2026 · checked 2026-09-27. Up to 99% is Germany, the highest at 100,000 messages a month, 5% marketing, before provider fees.
02/Security
Safe for your numbers, and for your customers'
Our team has spent 10+ years with WhatsApp, building agents and building SaaS. We designed wuapi to be easy, to scale with you and to be secure without you redesigning anything: a proxy layer and a security layer protect your accounts and your customers' accounts.
Every number, yours and your customers', connects from its own residential IP in its country, and never falls back to a datacenter.
Signed webhooks, keys scoped to each customer's project, API keys stored as hashes and sessions stored encrypted.
The same API from one number to hundreds, with a project per customer and queued sends that wait out a dropped connection.
Pacing and first-contact limits are opt-in, per account.
How we protect your numbers03/Support
People who know WhatsApp answer you
The same team, with 10+ years building on WhatsApp, answers you in chat. The connection itself is watched for you around the clock.
Reconnects and proxy drops are handled around the clock. You hear about a number only when it stays down.
A public status page checked every minute, and an SLA with service credits up to 99.95%.
Chat directly with our engineers on every plan, Free included. Response times follow your support plan: as little as 30 minutes on Enterprise.
Open the chat100+ organizations on the same build, the same engine and the same status page
04/How it works
Start using the API in a minute
Sign up, link the number you already have, and send. No business verification, no templates to approve.
Sign up, no card
The Free plan has one number and 2,000 messages a month, with sending, webhooks and the Inbox working.
Link a number
Scan a QR under Linked devices on the phone, or type a pairing code. The number keeps working on the phone.
Send over REST
You get a 202 at once, then sent, delivered and read as they happen.
Get events two ways
Webhooks POST to your endpoint, signed and retried. Streams reach code with no public URL.
One send, from the outside: the call returns at once, then each step arrives on your webhook or your stream.
- →POST /v1/messages202 queued+0.0s
- ·typing…shown to the recipient+0.1s
- ←message.sentwebhook · stream+1.9s
- ←message.deliveredwebhook · stream+2.4s
- ←message.readwebhook · stream+41s
streams
Building a desktop app? Can't receive webhooks? Use Streams.
- Your events, except presence updates, over one connection your code opens
- Resume from the last event within 28 minutes
- A heartbeat every 15 s
- Included in every plan: 3 stream connections at once on Free; 25, or 5 per connected account, on a paid plan
Both carry your events, except presence updates, which only webhooks get. Pick the one your code can receive.
Streams docswebhooks
Your server has a public HTTPS endpoint
- Signed with HMAC-SHA256
- 6 attempts, retried 30s · 2m · 10m · 1h · 6h
- Delivery log kept 30 days
Webhooks don't change.
Webhooks docsSend your customers a link to connect their WhatsApp
Built for SaaS and AI agent builders
They open a page with your name and logo, scan or type a code, and their WhatsApp is in your project. You never see a QR.
- 1
Give each customer a project
- 2
Send them a link with your name and logo
- 3
Their number lands in their project
Everything a linked device can do, over REST
12message types on one endpoint
- Text, image, video, audio, voice notes, documents, stickers
- Location, contacts, polls, calendar events
- Replies, mentions, reactions, stars
- Edit, and delete for everyone
- Create groups and communities
- Add, remove, promote and demote
- Invite links, join by invite
- Approve or reject join requests
- Read receipts, mark read or unread
- Typing and recording, online presence
- Archive, pin, mute, delete, labels
- Disappearing messages timer
- Create, follow, mute
- Post text, images, video and documents
- Read, react, mark viewed
- Post a story from any number
- Queued and paced like a send
- Read your story privacy settings
- Check which numbers are on WhatsApp
- Look up names, pictures, business profiles
- Block, unblock, your contact link
- Name, about and picture
- Every privacy setting, read and write
- call.received and call.ended on your webhook
- Reject a call, or every call with a text reply
- 40 event types, per endpoint
- Signed with HMAC-SHA256
- Retried 30s · 2m · 10m · 1h · 6h
- Import recent chats when a number links
- Off by default, per account
- One webhook per batch, with counts
- A project per customer, own keys and webhooks
- Branded invitation links
- Usage per project, for rebilling
- Typed TypeScript SDK
- OpenAPI 3.1 spec
- MCP server for Claude, Cursor and VS Code
- The docs as one file, for agents
147 operations · OpenAPI 3.1 · REST, TypeScript SDK and MCP
See all 147 operations- 147 operationsOpenAPI 3.1, REST + TypeScript SDK
- 1,580 citiesresidential proxy, 134 countries
- Live statusstatus.wuapi.dev, checked every minute
- 14-day money-backon your first payment
- Payments by Stripecard data never touches wuapi
05/When not to use wuapi
When the official API is the better tool
wuapi is a number linked as a device, built for conversations. Some jobs belong to WhatsApp's official Cloud API, and we'd rather say so now.
Use the official Cloud API when
- You start most conversations, and need approved templates at volume.
- You send marketing broadcasts to people who haven't written to you.
- You need the green tick next to your business name.
- You're a large regulated sender that needs a contract with the platform.
Or use both
One number, two sides. Put your WhatsApp Business app number on the official API through coexistence and send templates there. Link wuapi to the same number as a companion, and answer from it: replies sent from the app side carry no per-message fee.
- All official
- $220
- Coexistence + wuapi
- $132
Brazil · one number · 2,000 templates + 15,000 replies a month · rates effective October 1, 2026
How to run both, step by stepDo I need business verification or approved templates?
No. You link a number you already have, by QR code or pairing code, and send over REST. Verification, templates and the 24-hour window belong to WhatsApp's official Cloud API. If you start most conversations with templates at volume, that is the better tool, and the two can run side by side.
Run the official API and wuapi togetherIs there a free plan?
Yes, and it needs no card: 1 number, 2,000 messages and 0.5 GB of proxy traffic a month, with sending, webhooks, Streams and the Inbox all working. Streams allow 3 stream connections at once per organization on Free; a paid plan allows 25, or 5 per connected account, whichever is greater. Messages count sent and received together. When a limit is reached the number pauses, stays linked and reconnects on its own when the month ends (UTC). Upgrade any time to connect more numbers and lift the limits; your first payment has a 14-day money-back guarantee.
Webhooks or Streams?
Both carry the same events, except presence updates (typing and online status), which only webhooks send. Use Webhooks when your server has a public HTTPS endpoint: each event is signed with HMAC-SHA256 and retried 30s · 2m · 10m · 1h · 6h, with a delivery log kept 30 days. Use Streams when it doesn't, like a desktop app or a script on your laptop: your code opens one connection and, after a drop, resumes from the last event within 28 minutes.
Can my customers connect their own numbers?
Yes. Give each customer a project and send them an invitation link: a page with your name, logo and color where they scan a QR code or type a pairing code. Their number lands in their project, with its own keys and webhooks, and you get invitation.status_changed when it connects. The White label add-on ($100 a month) removes the wuapi mark from the page and the email.
What happens if a phone goes offline?
The number stays linked and wuapi keeps reconnecting it, through the same proxy exit. Messages sent during a short drop wait and go out once it's back. If it stays down, you get account.disconnected on your webhook and account.connected when it returns, plus notifications in the dashboard.
Your first number is one QR scan away.
Sign up and link a number without a card. Free includes 1 number, 2,000 messages and 0.5 GB of proxy traffic a month. When you upgrade, your first payment is covered by a 14-day money-back guarantee.
Talk to sales
Bigger plans? Let's talk.
Tell us what you're building. A person reads every message and writes back by email.
- Rolling out hundreds of numbers
- Enterprise support from $4,900/month
- A platform with a project per customer
- Security review or custom terms