Contacts and Profile
API to check if a number has WhatsApp
Checks whether one or more numbers are registered on WhatsApp. Returns JID, verified name, and status.
https://api.zapzapapi.com/api/v1/{instanceId}/chat/checkAuthentication with the x-api-key and x-api-secret headers.
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
numbers | textarea | body | Yes | Numbers to check (array) |
Request example
curl
curl -X POST "https://api.zapzapapi.com/api/v1/{instanceId}/chat/check" \
-H "x-api-key: YOUR_API_KEY" \
-H "x-api-secret: YOUR_API_SECRET" \
-H "Content-Type: application/json" \
-d '{"numbers":"[\"5511999999999\", \"5521888888888\"]"}'Node.js
const res = await fetch("https://api.zapzapapi.com/api/v1/{instanceId}/chat/check", {
method: "POST",
headers: {
"x-api-key": "YOUR_API_KEY",
"x-api-secret": "YOUR_API_SECRET",
"Content-Type": "application/json",
},
body: JSON.stringify({
"numbers": "[\"5511999999999\", \"5521888888888\"]"
}),
});
console.log(await res.json());Python
import requests
res = requests.post(
"https://api.zapzapapi.com/api/v1/{instanceId}/chat/check",
headers={"x-api-key": "YOUR_API_KEY", "x-api-secret": "YOUR_API_SECRET"},
json={"numbers":"[\"5511999999999\", \"5521888888888\"]"},
)
print(res.json())Response example
JSON
[
{
"query": "5511999999999",
"isInWhatsapp": true,
"jid": "5511999999999@s.whatsapp.net"
}
]Values are illustrative; the fields follow the real response format.
What checking a number is for
The POST /{instanceId}/chat/check endpoint takes a list of numbers in numbers and returns, for each one, whether it is registered on WhatsApp (isInWhatsapp) and its JID. It is a lookup: it does not send a message to anyone.
The most common use is cleaning a list before a bulk send. Numbers without WhatsApp cause errors and wasted work, so checking first keeps the list clean. That is one of the anti-ban layers, which reduces risk to the number but does not remove it.
How to use it in 3 steps
1. Normalize each number to digits only with the country code, for example 5511999999999. The E.164 format tool does this in your browser.
2. Send a POST with the numbers array and the x-api-key and x-api-secret headers, using your instance's instanceId in the URL. cURL, Node.js and Python examples are above.
3. Read the response: each item has query (the number checked), isInWhatsapp and jid. Send only to the ones that return isInWhatsapp true.
Validating the format is not the same as checking the account
The site's format validator checks the country code, area code and digit count, all in your browser, and it does not know whether the number has WhatsApp. This API does the registration lookup. Use both in order: format first, then the check.
FAQ about checking a number
How do I check if a number has WhatsApp through the API?
Call POST /{instanceId}/chat/check with the numbers array. The response has, for each number, the isInWhatsapp field and the jid.
Does this endpoint send a message to the number?
No. It is a registration lookup and it does not send a message.
Can I check several numbers at once?
Yes, numbers is an array, so you query a list in one call.
What is the difference between this endpoint and the site's validator?
The site's validator only checks the number format, in your browser, and sends nothing. This endpoint checks whether the number is registered on WhatsApp.
See also
Other endpoints in this category
Get your API keys
Create your account, connect a number in minutes and start using the API. R$15 per active number/month, with a welcome credit when you create the account, subject to the current campaign.
