WhatsApp Link API: How wa.me e api.whatsapp.com Links Actually Work
What is a 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.What is the exact wa.me link format?
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.Use: https://wa.me/1XXXXXXXXXX
Don't use: https://wa.me/+001-(XXX)XXXXXXX+.What is the difference between wa.me and api.whatsapp.com/send?
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.phone query parameterapi.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.How do you add a pre-filled message to a WhatsApp link?
?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.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%20listingtext still pre-fills once a contact is picked. + encodes to %2B. For everything else, emoji included, don't build the table yourself: call encodeURIComponent() in JavaScript or urllib.parse.quote() in Python. // JavaScript
const number = "1XXXXXXXXXX";
const text = "Hi! I have a question.";
const link = `https://wa.me/${number}?text=${encodeURIComponent(text)}`;# Python
from urllib.parse import quote
number, text = "1XXXXXXXXXX", "Hi! I have a question."
link = f"https://wa.me/{number}?text={quote(text)}"Generate your WhatsApp link
Does a WhatsApp link send the message?
What can a WhatsApp link not do?
How do you get the reply back into your app?
// 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?"{Link, Cloud API or connected account: which one do you need?
How do you embed a WhatsApp link in a product?
<!-- 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>wa.me link into a scannable code for print, packaging or in-person signage.Why is my WhatsApp link not working?
text parameter that was not URL-encoded.+, no leading 0, no spaces, dashes or brackets.encodeURIComponent() in JavaScript or urllib.parse.quote() in Python before appending it.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.