Check if a Number is on WhatsApp
Before you message anyone, you need to know the number is on WhatsApp and what its identifier is. The official API answers neither question. These endpoints do, and they are the ones to pace most carefully.
Can the official WhatsApp Cloud API do this?
Not really. There is no official validation endpoint.
Read the full comparisonHow it works
Normalise to international format, check in modest batches, and store every result with its date so you never check the same number twice.
Normalise the numbers first
Convert to international format with a real phone-number library before you check anything. A number with a national trunk prefix left on is a different number, and checking it wastes an allowance and teaches you nothing.
API reference for this stepCheck a batch
Send a modest batch rather than one request per number. The response tells you, per number, whether an account exists and what identity it maps to, which is the part worth storing.
API reference for this stepStore the result and watch the allowance
Write each answer back to your own database with the date you checked, then read the usage endpoint before the next batch. Re-checking numbers you already know about is the easiest way to burn an allowance and attract attention at the same time.
API reference for this step
curl --request POST \
--url https://api.wapito.com/v1/contacts/check \
--header 'Authorization: Bearer wpt_YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"phones":["+15551234567","+15559876543","+15550000000"]}'Endpoints
What you can build with it
- Clean a list before a campaign
A retailer checks its opted-in contacts once before a seasonal campaign, drops the numbers with no WhatsApp account, and sends only to the rest. The campaign spends nothing on unreachable numbers and the failure rate stays low enough not to look suspicious.
- Validate at the point of signup
A booking form checks the number as the customer types it, so someone who mistypes a digit is corrected before they leave the page. One check per signup is a tiny volume and it prevents a whole class of failed confirmations later.
- Route notifications by channel
A logistics system checks each recipient once and stores the answer, then sends delivery updates by WhatsApp to those who have it and by SMS to those who do not. The check is repeated only when a number changes.
What the official WhatsApp Cloud API does here
Meta's official WhatsApp Cloud API is built for business messaging: templates, customer-service windows and per-conversation pricing. A large part of what WhatsApp itself can do — groups, channels, status, presence, contact lookups — has no endpoint there at all, which is why so many teams end up looking past it. Everything below is checked against Meta's own published reference, with the link and the date we checked it.
Restricted on the Cloud API
Not really. There is no official validation endpoint.
Meta's Cloud API reference has no contact-check node. The only official way to discover that a number is not on WhatsApp is to send it a message - which for a business-initiated conversation means a pre-approved template that you are charged for - and then read the failure. Validation therefore exists, but only as a paid side effect of sending.
Paraphrase (not a verbatim quote), checked against the Cloud API reference index and the error-code guide: the reference documents no endpoint that reports whether a phone number is registered on WhatsApp; invalid recipients surface as errors on a send attempt.
The official workaround
Send a template to the number and treat a delivery failure as an invalid result. It works, it is charged per message, and it puts a message in front of every valid number whether or not you meant to contact them yet.
Wapito is an independent product. It is not affiliated with, endorsed by, sponsored by or certified by WhatsApp or Meta Platforms, Inc. WhatsApp is a trademark of Meta Platforms, Inc.
Gotchas
- A positive result means an account exists, not that the person will welcome a message. Validity is not consent, and treating a check result as a mailing list is how numbers get reported.
- Results go stale in both directions: people join WhatsApp and people leave. Re-check on a slow schedule measured in months, never in a loop, and always store the date you checked.
Tutorials by language
Automations and integrations
Frequently asked questions
How many numbers can I check per day?
Your plan sets an explicit daily allowance, and the API tells you how much is left through the usage endpoint. The harder limit is behavioural: even inside your allowance, checking a large list in a short burst is the pattern that draws attention, so spread it out.
Why is this riskier than sending a message?
Because a check involves no relationship at all. Sending a message to someone who wrote to you is normal behaviour; asking the network about thousands of numbers you have never contacted is what a scraper does. The abuse systems weight that difference heavily, and so does Wapito's metering.
Does a check tell me the person's name?
No. It tells you whether an account exists and gives you the identity you would address, nothing more. Profile details are a separate call with their own privacy rules, and a contact who has restricted their profile will not reveal a name or a photo to a stranger's number.
Can I check a number without a linked phone?
No. Every check runs through a real linked WhatsApp session, which is precisely why the operation carries ban risk - the question is asked by your number, and the network sees who is asking. Any service that claims otherwise is running someone else's number to do it.
Related
Try it on your own number
Create a channel, link a WhatsApp number by QR or pairing code, and call the API in a couple of minutes. The Sandbox plan is free and needs no card.