WhatsApp Link API: wa.me & api.whatsapp.com Explained

WhatsApp Click-to-Chat Links

WhatsApp Link API: How wa.me e api.whatsapp.com Links Actually Work

A WhatsApp link is a URL, not an API. This guide gives you the exact wa.me e api.whatsapp.com/send formats, the text parameter, a free generator, and the point where the link stops and an actual integration has to start.
7-day free trial, no credit card required
Just a URL
No auth, no code
wa.me/1XXXXXXXXXX?text=Hi...
Hi! I have a question about your product. Pre-filled, still editable
Opens the chat. A human still has to press send.
Definizione

What is a WhatsApp link API?

There is no WhatsApp link API. https://wa.me/<number> e https://api.whatsapp.com/send?phone=<number> are click-to-chat URLs: clicking one opens a conversation in WhatsApp. They require no authentication, no developer account and no code. The WhatsApp APIs are a separate layer, and they begin exactly where the link stops.
Criterio
A WhatsApp API
Format
APIAn authenticated HTTP endpoint
Impostazione
APIAccount linking, an API key, a client library
What happens on click / call
APISends, receives and lists messages programmatically
Who acts
APIYour software acts on behalf of the linked account
Format

What is the exact wa.me link format?

The documented format is https://wa.me/<number>, where <number> is a full phone number in international format. WhatsApp's Help Center states you must omit any zeroes, brackets or dashes.
wa.me-format.txt
Use: https://wa.me/1XXXXXXXXXX Don't use: https://wa.me/+001-(XXX)XXXXXXX
What to keep
Country code plus subscriber number, digits only. No leading +.
What to strip
Leading zeroes, spaces, dashes, parentheses. None of them belong in the path.
Source: WhatsApp Help Center, "How to use click to chat"
Confronto

What is the difference between wa.me and api.whatsapp.com/send?

Both open the same conversation. wa.me/<number> is the short form documented in WhatsApp's Help Center, with the number in the path. api.whatsapp.com/send?phone=<number> is the long form, still in wide use, that carries the number as a query parameter.
URL anatomy, segment by segment
https://wa.me/1XXXXXXXXXX?text=Hi
https://api.whatsapp.com/send?phone=1XXXXXXXXXX&text=Hi
Host
Fixed path
The number
The message
Criterio
wa.me
api.whatsapp.com/send
Where the number lives
wa.meIn the URL path
api.whatsapp.comNel phone query parameter
Documented in WhatsApp's Help Center
wa.meYes, this exact format
api.whatsapp.comNot on the current help page we could find
Observed behavior
wa.meOpens the chat
api.whatsapp.comOpens the same chat
A documentation gap, not a deprecation. We could not find a current, official WhatsApp or Meta page that documents api.whatsapp.com/send. That does not mean it stopped working: both formats redirect to the same conversation today. It means WhatsApp's own Help Center only covers wa.me. Build new links on the documented format.
The text parameter

How do you add a pre-filled message to a WhatsApp link?

Append ?text= followed by the URL-encoded message: https://wa.me/<number>?text=<urlencodedtext>. The text lands in the chat input field, pre-filled and editable.
prefilled-variants.txt
https://wa.me/1XXXXXXXXXX?text=I'm%20interested%20in%20your%20car%20for%20sale // no number: opens a contact picker instead https://wa.me/?text=I'm%20inquiring%20about%20the%20apartment%20listing
Without a number, WhatsApp opens the sender's contact list instead of a specific chat. The text still pre-fills once a contact is picked.
Encoding, the certain mappings
Character
Space
New line
&
#
Encoded as
%20
%0A
%26
%23
Also worth knowing: + encodes to %2B. For everything else, emoji included, don't build the table yourself: call encodeURIComponent() in JavaScript or urllib.parse.quote() in Python.
Build the link in code
build-link.js
// JavaScript const number = "1XXXXXXXXXX"; const text = "Hi! I have a question."; const link = `https://wa.me/${number}?text=${encodeURIComponent(text)}`;
build_link.py
# Python from urllib.parse import quote number, text = "1XXXXXXXXXX", "Hi! I have a question." link = f"https://wa.me/{number}?text={quote(text)}"
Free tool

Generate your WhatsApp link

Enter a number and a message. Get the wa.me link, the api.whatsapp.com equivalent, the encoded text, an HTML snippet and the official button, all at once.
Runs entirely in your browser. No number is ever sent to a server.
Full international number. No +, no 0, no spaces or dashes.
Optional. Lands in the chat input field, still editable by the sender.
wa.me link
https://wa.me/15550123456?text=Hi!%20I%20have%20a%20question%20about%20your%20product.
api.whatsapp.com equivalent
https://api.whatsapp.com/send?phone=15550123456&text=Hi!%20I%20have%20a%20question%20about%20your%20product.
text parameter, encoded
Hi!%20I%20have%20a%20question%20about%20your%20product.
HTML snippet, ready to paste
<a href="https://wa.me/15550123456?text=Hi!%20I%20have%20a%20question%20about%20your%20product." target="_blank" rel="noopener" aria-label="Chat on WhatsApp">Chat on WhatsApp</a>
Official "Chat on WhatsApp" button
Chat on WhatsApp
<a href="https://wa.me/15550123456?text=Hi!%20I%20have%20a%20question%20about%20your%20product." target="_blank" rel="noopener"><img src="whatsapp-icon.svg" alt=""> Chat on WhatsApp</a>
This link opens a chat. It does not send the message, and your product will not see the reply.

Does a WhatsApp link send the message?

No. A click-to-chat link opens the conversation and pre-fills the text field. Nothing is delivered until the person holding the phone presses send.
The honest part

What can a WhatsApp link not do?

A click-to-chat link is stateless. Your product never learns whether the link was clicked, whether the message was sent, or whether the recipient replied.
Where the link stops
Link clicked
Chat opens
Message pre-filled
Manual send
Collegamentostopsqui
Reply received
Conversation history
Webhook event
Per-user attribution
No delivery or read confirmation
No reply routed back to your application
No conversation history
No attachments
No server-side trigger. It takes a human and a click
No per-user attribution in a multi-tenant product
Silent failure if the number has no active WhatsApp account
Different behavior across desktop, WhatsApp Web and mobile
No group creation or management. A link only opens a one-to-one chat, see the WhatsApp Group API limits for anything group-related
A link cannot report clicks, replies or history. An API can. Build a real WhatsApp integration
Past the link

How do you get the reply back into your app?

You need an API that holds a WhatsApp session. Two routes exist: Meta's Cloud API, which requires a verified Business account, or a connected-account API such as Unipile, where the end user links their own WhatsApp account on behalf of the authenticated user, by QR code or pairing code.
API Meta CloudVerified business
Requires a verified WhatsApp Business account
Billed per message since July 1, 2025, see the Prezzi API di WhatsApp Business breakdown
The 24-hour customer service window still exists, it determines what's free, not what's billed
Built for templated notifications at scale
Connected account, UnipileNo verification
Each end user links their own WhatsApp account, on behalf of the authenticated user
By QR code or pairing code, no Meta Business verification
Reads and sends from the actual linked inbox, replies included
Same connect, send, list, listen pattern as LinkedIn, Instagram, Telegram, Gmail, Outlook and IMAP
connected-account-flow.js
// 1. Link the account, on behalf of the authenticated user const {qrCodeString}= await client.account.connectWhatsapp(); // 2. Send a message once linked POST /api/v1/chats/{chat_id}/messages { "testo": "Hi! Your order has shipped." } // 3. Receive replies through a webhook, no polling{ "evento": "message_received", "chat_id": "chat_182...", "messaggio": "Is this still available?"{
For the full sending guide, payloads and webhook handling, see how to send WhatsApp messages via API. Endpoint reference: developer.unipile.com/docs/whatsapp.
Decisione

Link, Cloud API or connected account: which one do you need?

Use a link when a human initiates the conversation from a page you control. Use the Cloud API when a verified business sends templated notifications at scale. Use a connected-account API when your product must read and send from the user's own WhatsApp inbox.
Criterio
Collegamento
API Meta Cloud
Account collegato
Who initiates
CollegamentoA human, from a page you control
API del cloudYour business sends first, templated
Account collegatoEither side, from the linked inbox
Autorizzazione richiesta
CollegamentoNessuno
API del cloudVerified Meta Business account
Account collegatoQR code or pairing code, no Business verification
Costo
CollegamentoGratuito
API del cloudPer message, since July 1, 2025
Account collegatoUnipile plan pricing, not billed per message
Receives replies
CollegamentoNo
API del cloudYes, via webhook
Account collegatoYes, via webhook
Conversation history
CollegamentoNo
API del cloud
Account collegato
Multi-tenant products
CollegamentoBreaks, one hardcoded number
API del cloudNeeds custom routing per business number
Account collegatoNative, one linked account per end user
Tempo di configurazione
CollegamentoVerbale
API del cloudDays to weeks, Business verification
Account collegatoMinutes to hours
Just need a link
Utilizzare il generator above. No account, no setup.
Sending templated notifications
Reading and sending per user
Most products outgrow the link within a week. Start where you'll actually end up. Iniziare a costruire
Implementazione

How do you embed a WhatsApp link in a product?

Generate the link server-side, per user, and never hardcode a phone number in a multi-tenant product. The link is just an anchor, so it belongs in your template layer, not in your API layer.
chat-button.html
<!-- template layer, not your API layer --> <a href="https://wa.me/{{ user.whatsapp_number }}?text={{ prefilled_text | url_encode }}" target="_blank" rel="noopener" aria-label="Chat on WhatsApp"> Chat on WhatsApp </a>
Official button
WhatsApp publishes a ready-made "Chat on WhatsApp" badge, green and white, in a few fixed sizes, meant to be used without modification.
Chat on WhatsApp
Codice QR
Any QR code generator that accepts a URL turns a wa.me link into a scannable code for print, packaging or in-person signage.
Mobile Opens the WhatsApp app directly, with the chat and pre-filled text ready.
Desktop, app installed Opens the WhatsApp desktop app instead of the browser.
Desktop, no app Opens WhatsApp Web in the browser, and prompts a QR sign-in if the session isn't already active.
Why the link breaks in multi-tenant products: a single hardcoded number cannot tell your customers apart. Generate the link from the specific user or workspace record every time, so it carries whichever number that user actually owns, not a number pasted once into a template.
Risoluzione dei problemi

Why is my WhatsApp link not working?

The two most common causes are a phone number that is not in plain international format, and a text parameter that was not URL-encoded.
CausaPhone number not in plain international format
RisolviUse the full international number, digits only: no +, no leading 0, no spaces, dashes or brackets.
CausaThe text parameter was not URL-encoded
RisolviRun the message through encodeURIComponent() in JavaScript or urllib.parse.quote() in Python before appending it.
CausaThe number has no active WhatsApp account
RisolviThe link still opens, but the chat fails silently. Verify the number is actually registered on WhatsApp first.
CausaOpened inside a third-party app's in-app browser
RisolviIn-app browsers from social or ad platforms sometimes block or mishandle the redirect. Open the link in the system browser instead.
CausaA link preview crawler rewrote the URL
RisolviSome platforms wrap outbound links in their own redirect, which can drop the query string. Test the raw wa.me URL directly.

WhatsApp Link API - FAQ

Everything developers ask about wa.me, api.whatsapp.com, the text parameter, and where the link stops.

No single WhatsApp link API exists. wa.me e api.whatsapp.com/send are click-to-chat URLs: opening one starts a conversation in WhatsApp, with no authentication, developer account or code required. WhatsApp's own APIs are a separate layer that begins exactly where the link stops, once a person has to reply.

The documented format is https://wa.me/<number>, where <number> is the full phone number in international format. WhatsApp's Help Center instructs omitting any leading zeroes, brackets, spaces or dashes, for example https://wa.me/1XXXXXXXXXX.

Both open the same conversation. wa.me/<number> is the short form documented in WhatsApp's Help Center, with the number in the URL path. api.whatsapp.com/send?phone=<number> is the long form, still widely used, that carries the number as a query parameter instead.

No. A click-to-chat link opens the conversation and can pre-fill the text field, but nothing is delivered until the person holding the phone presses send.

Yes. Append ?text= followed by a URL-encoded message, for example https://wa.me/1XXXXXXXXXX?text=Hi%2C%20I%20have%20a%20question. The text lands in the chat input field, pre-filled and still editable before sending. Try it in the generator above.

The two most common causes are a phone number that isn't in plain international format and a text parameter that wasn't URL-encoded. Also check that the number has an active WhatsApp account and that the link wasn't opened inside a third-party app's in-app browser.

No. A wa.me o api.whatsapp.com/send link requires no Business account, no verification and no API access. The WhatsApp Business Platform, or Cloud API, is a separate verified product for businesses that need to send templated notifications at scale or receive replies programmatically. See the complete WhatsApp API guide.

A link itself cannot report replies back to your app, it is stateless. To read and send from an actual inbox, you need an API that holds a WhatsApp session: either Meta's Cloud API with a verified Business account, or a connected-account API such as Unipile, where each end user links their own WhatsApp account on behalf of the authenticated user, by QR code or pairing code. See how to send WhatsApp messages via API.

Still not sure whether you need a link or an API? Our team can help you decide.

Parlare con un esperto
it_ITIT