Back to blog

Unofficial WhatsApp API: how it works, what breaks, and the real risk

By José Pedro · Co-founder of CRPRO

An unofficial WhatsApp API occupies a linked-device slot with no contract and no warning before it breaks. See how it works internally, what it costs today, what changed on October 1, 2026, and where the real ban risk lives compared to the official API.

An unofficial WhatsApp API is a server that connects to WhatsApp by occupying the same slot as WhatsApp Web — the one that opens when someone scans a QR code on screen. It isn't a Meta product, it has no contract, and it can stop working without warning. It's also cheap, spins up in minutes, and charges nothing per message, which is why a large share of the Brazilian market runs on it. Below: how it actually works, what breaks in real operation, and where the real risk lives. CRPRO sells both paths, so there's no reason here to spin the argument either way.

How does an unofficial WhatsApp API work under the hood?

In 2021 WhatsApp became multi-device: every connected device got its own keys and started talking directly to Meta's server, instead of mirroring the phone and dying along with it whenever the phone lost signal. That's what made the unofficial connection stable enough to become a product.

An unofficial library occupies that connected-device slot. The flow is always the same:

  1. your server requests a pairing and returns a QR code (or an eight-digit code);
  2. you scan it with your phone, under Linked devices;
  3. the server receives a set of keys — the session — and starts sending and receiving as if it were just another WhatsApp Web;
  4. that session gets saved to a file, Redis, or a database. Lose the session, get a new QR code.

None of this should be confused with a modified phone app, like GB WhatsApp: there, the entire app is swapped for a modified version, with its own risks. Here the phone's app stays original; only who sits in the connected-device seat changes.

Two implementation families, two server bills

The choice of library doesn't change what Meta sees, but it does change how much you pay in infrastructure and what tends to break first.

Direct protocol (Baileys and wrappers)Browser automation (WPPConnect, Venom)
How it talks to MetaDirect WebSocket, no browser in the middleHeadless Chrome controlling web.whatsapp.com
Server loadLight — dozens of numbers per machineHeavy — each number holds an open browser
What breaks firstA change in the internal protocolA change in the page layout

In practice, nearly every Brazilian vendor selling "QR code connection" sits on top of the first family. It's worth asking which library it is, because that's what determines the size of your server bill.

What takes the operation down without warning?

The session isn't forever. It dies when the main phone goes roughly 14 days without connecting, when someone taps "Log out of all devices," when the phone is swapped or the app reinstalled, and when it hits the limit of four linked devices per number (the limit in force as of August 2026).

None of those events send a warning. Support stops until someone scans a new QR code — and if the owner's phone is in their pocket on a Saturday, you're offline until Monday.

The protocol has the same problem. The official API has versioning, a changelog, and a deprecation window. The unofficial one has none of that: it's an internal protocol read from the outside, not a published interface. When Meta changes it, the library breaks and your queue sits stuck until a maintainer ships a fix — no deadline, and no one you can escalate to.

What do you lose by operating without a quality rating?

You lose the whole dashboard. The official path has per-number quality rating, template category, a visible sending limit, and per-message diagnostics. The quality rating is calculated over the last 7 days, weighted — that window is in Meta's documentation and still holds as of August 2026 — which means a bad week shows up on the dashboard before it turns into a restriction.

On QR code there's no indicator at all. You find out the number's health got worse when it stops working, with no note, no history, and no week of advance warning.

What does exist keeps moving. Buttons, interactive lists, and some media formats change behavior with every update, and each library works around it its own way — instability you only feel after you've built a flow on top of it.

And if the number gets restricted, there's no review form and no email explaining why. The path becomes the same as any regular user's, described in WhatsApp banned: what to do.

Does sending a message outside the 24-hour window bring the number down?

The line that goes around is: "whoever uses an unofficial API gets banned for messaging outside the 24-hour window." It's wrong on both counts.

On the official API, messaging outside the window isn't grounds for a ban — it's impossible. The endpoint refuses and returns error 131047. Once 24 hours have passed since the customer's last message, only an approved template can reopen the conversation. You can't break that rule even if you try: the system won't let you. The whole concept is covered in the 24-hour window.

On QR code, nothing stops you. You can send at three in the morning, to someone who never talked to you, six months after the last contact. The window risk exists only on this side, and it isn't regulatory — it's a human reaction. What takes a number down isn't the clock, it's the block and the report from someone who wasn't expecting your message.

In other words, the window isn't a rule you break: it's a rail. On the official side, it holds the car on track. On the unofficial side there's no rail, and the discipline comes from your own process — registered opt-in, opt-out honored the first time someone says "stop," no purchased lists. The line for what Meta actually counts as abuse is in what Meta really counts as spam.

What changes in ban risk between QR code and the official API?

Worth being direct here, because a lot of sales material lies about this point: the official API doesn't eliminate ban risk. Meta keeps the field waba_ban_state in the account_update webhook, with values like SCHEDULE_FOR_DISABLE and DISABLE, plus error 368 for a restricted account. A number on the official API can be banned.

What it gives you is something else, and it's a real advantage: visibility and due process.

What you getQR code / unofficial APIOfficial API
Warning before the penaltyNoneSCHEDULE_FOR_DISABLE in the account_update webhook
Quality ratingDoesn't existGreen, yellow, or red per number, calculated over the last 7 days
Review channelDoesn't existYes, through Business Manager
24-hour windowNot enforcedEnforced by the system (error 131047)
Per-message cost charged by MetaZeroPer delivered template message

On the regular app and on unofficial connections, a ban can arrive with no warning and no review queue. That's the difference that matters, and it doesn't need exaggeration.

What does each path cost today?

Cost is what the unofficial path wins, and it's honest to admit it. Meta charges per delivered template message — the per-conversation model died on July 1, 2025.

Path and message typeUnit price in BrazilIn effect
QR code / unofficial APINo per-message cost charged by Meta—
Official API, marketingUS$0.0625 per message (roughly R$0.32)rate in effect as of August 2026
Official API, utilityabout US$0.0068 per message (roughly R$0.035)rate in effect as of August 2026
Official API, authenticationabout US$0.0068 per message (roughly R$0.035)rate in effect as of August 2026
Official API, service and utility inside the open windowcharged per messagesince October 1, 2026 (free until September 30, 2026)

Besides cost, QR code keeps three things the official API doesn't have: groups, status updates, and the number working inside the phone app.

What changed on October 1, 2026?

The free part shrank. Until September 30, 2026, what matters most for support was free of charge: service messages and utility templates delivered inside the open window. Since October 1, 2026, Meta charges per message for service messages and utility templates sent inside the 24-hour window — and service messages get no volume discount, while utility and authentication still do. The 72-hour window opened by a Click-to-WhatsApp ad didn't change.

The service-message rate is in Meta's current price table. Anyone with heavy inbound support and little campaign volume needs to redo the math with it — the simulation by volume tier is in the anti-ban playbook got a price tag, and the cases where migrating doesn't pay off are in when not to migrate to the official API.

If you're going with QR code anyway, demand this from the vendor

  • Persisted session and automatic reconnection. A session sitting in a loose file inside a container disappears on the first deploy.
  • An alert when the session drops. Within minutes, not from the customer complaining.
  • Opt-out honored for real. "Stop," "remove me," and blocking need to stop the sending on their own.
  • No "anti-ban" promise. Anyone who guarantees your number won't fall is selling something they can't deliver: nobody controls the recipient's report button.
  • A way out. If the account turns, can you move the number to the official path without switching tools and without losing history?

Frequently Asked Questions

Is an unofficial WhatsApp API illegal?

It's not a crime, but it isn't a connection authorized by Meta either: it exists outside what the platform supports and publishes. In practice, there's no contract, no guarantee it'll keep working, and no review channel if the number gets restricted.

Does using an unofficial API get my number banned right away?

No. What takes a number down is behavior: messaging people who never gave permission, purchased lists, copy that triggers reports. Plenty of operations run for years on QR code with no incident because they only talk to people who asked. The flip side is that on this path, the ban can arrive with no warning at all.

Does the official API prevent bans?

No. Meta can ban a number on the official API — the account_update webhook carries the waba_ban_state field, and error 368 exists. What the official API gives you is advance warning in the webhook, a per-number quality rating calculated over the last 7 days, and a formal review channel. Visibility and process, not immunity.

Can I send a message outside the 24-hour window?

On the official API, no: the attempt returns error 131047, and only an approved template can reopen the conversation. On QR code, technically yes, because nothing blocks it — and that's exactly where the risk lives, because whoever receives it at the wrong hour blocks you and reports you.

What does each path cost today?

QR code has no per-message cost charged by Meta. On the official API, marketing runs around US$0.0625 per message in Brazil, and utility and authentication run around US$0.0068 per message (rates in effect as of August 2026). Service messages and utility templates inside the window were free until September 30, 2026, and have been charged per message since October 1, 2026.

Two numbers, two modes

A good share of operations solve this with two numbers: one official for template campaigns, another on QR code for day-to-day chat, groups, and status. The same number can't run both modes at once.

CRPRO connects both ways and sets up the account with your numbers before you decide. If you don't have those numbers yet, start by measuring — the decision gets a lot clearer once you check your volume against Meta's current price table.