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.

POSThttps://api.zapzapapi.com/api/v1/{instanceId}/chat/check

Authentication with the x-api-key and x-api-secret headers.

Parameters

NameTypeInRequiredDescription
numberstextareabodyYesNumbers 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 the full reference

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.