Check Phone on WhatsApp

Check if a phone number is registered on WhatsApp.

GET
https://api.wawp.net/v2/contacts/check-exists?access_token=123456789&instance_id=123456789&phone=1234567890

Authentication Required

Login to swap the placeholders with your real Instance ID and Access Token.

Log In
Test /v2/contacts/check-exists endpoint
GET
GET

No query parameters required

This endpoint doesn't expect data in the URL.

The Gatekeeper: Validating Phone Numbers

The /v2/contacts/check-exists endpoint is your first line of defense against low-quality data. It queries the WhatsApp Global Directory to verify if a specific MSISDN (phone number) corresponds to an active WhatsApp account.


🏗️ Why is this Critical?

Sending messages to invalid numbers is one of the fastest ways to get your bot banned.

  • The Signal: If you try to message +12345 and it fails because the user doesn't exist, WhatsApp's spam algorithms flag your account as "Blindly Broadcasting".
  • The Threshold: A high failure rate indicates you bought a low-quality lead list.
  • The Fix: Validate 100% of new numbers using this endpoint before queuing your first message.

🧹 Input Sanitization

WhatsApp requires a clean format for verification: [CountryCode][Number].

  • Supported Input: 15551234567
  • Supported Input: +15551234567 (The API strips the plus)
  • Unsupported: (555) 123-4567 (You must strip symbols)
  • Unsupported: 0015551234567 (Do not use 00 prefix)

The Brazil/Mexico Rule

Some countries have variable number lengths.

  • Mexico: Mobile numbers need a 1 after the country code +52.
  • Brazil: Numbers might have an extra 9.
  • Auto-Correction: The Wawp API attempts to auto-correct common formatting errors for these regions, but it is best if you provide the E.164 standard format.

🚦 Rate Limits & Safety

This endpoint performs a real-time network lookup.

  • The Limit: You should not exceed 1 verification per second per instance.
  • The "Scraping" Risk: If you feed a sequential list (e.g., +15550001, tips: [ { type: 'info', title: 'Validation', content: 'Verifies if a phone number is registered on WhatsApp.' }, { type: 'warning', title: 'Anti-Scraping', content: 'Excessive checks on random numbers may flag your account as a scraper.' } ], recommendations: [ "Validate numbers before sending your first message to improve delivery rates.", "Do not use this to 'warm up' numbers; use it strictly for verification." ]

+15550002, +15550003) into this API, WhatsApp will detect pattern recognition scraping and permanently ban your number.

  • Best Practice: Only check numbers that users have explicitly provided to you (e.g., via a signup form). Do not use this to "clean" a bought database.

🔮 Integration Patterns

Pattern A: The Registration Form

  1. User signs up on your website.
  2. Backend calls /v2/contacts/check-exists.
  3. Result:
    • exists: true: Show "WhatsApp" logo next to their number on the confirmation page.
    • exists: false: Disable the "Send via WhatsApp" button or fallback to SMS.

Pattern B: The CRM Cleaner

  1. You have a list of 10,000 stale leads.
  2. Wrong Way: Loop through all 10,000 now.
  3. Right Way:
    • Wait until you need to message one.
    • Check existence JIT (Just-In-Time) 1 second before sending.
    • If invalid, mark as "Bad Data" in CRM and skip.
    • If valid, send and cache the result.

❓ FAQ

Q: Does the user know I checked them? A: No. This is a silent directory lookup. It does not trigger a notification, blue tick, or "online" status.

Q: Can I get their profile picture here? A: No. This endpoint is purely boolean (Exists/Not Exists) involved with the basic JID. To get the photo, you must first confirm existence, then call /v2/contacts/profile-picture.

Q: What if the API returns false but I know they have WhatsApp? A: Ensure you are using the correct Country Code. In 99% of cases, it's a formatting error (e.g., missing a digit or adding an extra '0' prefix).

Request Parameters

Configure the parameters required to interact with this endpoint. All query and body arguments are listed below with their details.

URL Parameters

Passed in the URL query string
string

Your unique WhatsApp Instance ID

Example:
string

Your API Access Token

Example:
string

Phone number to check (digits only)

Example:

Request Samples

Use these ready-to-go code snippets to integrate our API into your project quickly and efficiently. Choose your preferred language and library.

1const baseUrl = "https://api.wawp.net";
2const endpoint = "/v2/contacts/check-exists";
3const params = new URLSearchParams({
4 "instance_id": "123456789",
5 "access_token": "123456789",
6 "phone": "1234567890"
7}).toString();
8
9
10fetch(`${baseUrl}${endpoint}${params ? '?' + params : ''}`, {
11 method: "GET",
12 headers: { "Content-Type": "application/json" },
13
14})
15 .then(async (response) => {
16 if (response.ok) {
17 const data = await response.json();
18 console.log("Success:", data);
19 return data;
20 }
21
22 // Error Handling
23 if (response.status === 401) {
24 console.error("Error 401: Unauthorized - Invalid or Missing Access Token");
25 }
26 if (response.status === 400) {
27 console.error("Error 400: Bad Request - Invalid Parameter Format");
28 }
29 if (response.status === 500) {
30 console.error("Error 500: Internal Server Error - Unexpected Failure");
31 }
32
33 const errorText = await response.text();
34 console.error(`Error ${response.status}: ${errorText}`);
35 })
36 .catch((error) => console.error("Network Error:", error));
Interactive Samples
Ln 36, Col 1javascript

Expected Responses

Explore all possible responses and outcomes from the server. We have documented each status code with data examples to make success and error handling easier.

Check completed
application/json
boolean *
string *

Example

{
"exists": true,
"jid": "1234567890@c.us"
}
Bad Request - Invalid Parameter Format
Unauthorized - Invalid or Missing Access Token
Internal Server Error - Unexpected Failure
Previous TopicGet Contact Info
Next TopicGet Contact Profile Picture

Command Palette

Search for a command to run...