Introduction

The WhatsApp Checker API allows you to check if phone numbers are registered on WhatsApp. This documentation provides details about available endpoints, authentication, and usage guidelines.

To use this API, you need an API key that can be obtained through our Telegram bot or via the registration endpoint described below.

Authentication

All API requests (except registration and verification) require an API key to be included in the request headers:

x-api-key: your_api_key_here

Important

Keep your API key secure. Do not share it with others or expose it in client-side code.

Endpoints

POST /api/register

Register with your phone number to get a verification code.

Request Body

{
  "phoneNumber": "+12025550108",
  "telegramId": "1234567890" // Optional, if you want code sent to your Telegram
}

Response

{
  "message": "Verification code generated",
  "code": "123456",
  "expires": "2025-04-27T15:42:00.000Z"
}
POST /api/verify

Verify your phone number with the code received to get an API key.

Request Body

{
  "phoneNumber": "+12025550108",
  "code": "123456"
}

Response

{
  "message": "Phone verified successfully",
  "apiKey": "your_api_key_here"
}
POST /api/check

Check if phone numbers are registered on WhatsApp.

Headers

x-api-key: your_api_key_here

Request Body

{
  "numbers": ["+12025550108", "+12025550109"]
}

Response

{
  "success": true,
  "results": [
    {
      "number": "+12025550108",
      "registered": true,
      "status": "registered"
    },
    {
      "number": "+12025550109",
      "registered": false,
      "status": "not_registered"
    }
  ]
}

Limitations

Maximum 10 numbers per request.

GET /api/stats

Get usage statistics for your API key.

Headers

x-api-key: your_api_key_here

Response

{
  "success": true,
  "stats": {
    "totalChecks": 100,
    "registeredCount": 75,
    "notRegisteredCount": 25,
    "registeredPercentage": "75.00",
    "recentChecks": [
      {
        "number": "+12025550108",
        "result": "registered",
        "timestamp": "2025-04-28T12:34:56.789Z"
      },
      // ... more checks
    ]
  }
}

Code Examples

Node.js
Python
PHP
const axios = require('axios');

// Step 1: Register your phone number
async function registerPhone() {
  try {
    const response = await axios.post('http://192.168.102.35:3000/api/register', {
      phoneNumber: '+12025550108',
      telegramId: '1234567890' // Optional, if you want code sent to your Telegram
    });
    console.log('Verification code:', response.data.code);
    console.log('Expires:', response.data.expires);
    // Save the verification code to use in the next step
  } catch (error) {
    console.error('Error:', error.response?.data || error.message);
  }
}

// Step 2: Verify your phone with the code
async function verifyCode() {
  try {
    const response = await axios.post('http://192.168.102.35:3000/api/verify', {
      phoneNumber: '+12025550108',
      code: '123456' // The code you received from the registration response
    });
    console.log('Your API key:', response.data.apiKey);
    // Save this API key securely
  } catch (error) {
    console.error('Error:', error.response?.data || error.message);
  }
}

// Step 3: Use the API key to check phone numbers
async function checkNumbers() {
  try {
    const response = await axios.post('http://192.168.102.35:3000/api/check', {
      numbers: ['+12025550108', '+12025550109']
    }, {
      headers: {
        'x-api-key': 'your_api_key_here'
      }
    });
    
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error.response?.data || error.message);
  }
}
import requests

# Step 1: Register your phone number
def register_phone():
    url = 'http://192.168.102.35:3000/api/register'
    payload = {
        'phoneNumber': '+12025550108',
        'telegramId': '1234567890'  # Optional
    }
    
    response = requests.post(url, json=payload)
    
    if response.status_code == 200:
        data = response.json()
        print(f"Verification code: {data['code']}")
        print(f"Expires: {data['expires']}")
        # Save the verification code to use in the next step
    else:
        print(f"Error: {response.status_code}", response.text)

# Step 2: Verify your phone with the code
def verify_code():
    url = 'http://192.168.102.35:3000/api/verify'
    payload = {
        'phoneNumber': '+12025550108',
        'code': '123456'  # The code you received from registration
    }
    
    response = requests.post(url, json=payload)
    
    if response.status_code == 200:
        data = response.json()
        api_key = data['apiKey']
        print(f"Your API key: {api_key}")
        # Save this API key securely
    else:
        print(f"Error: {response.status_code}", response.text)

# Step 3: Use the API key to check phone numbers
def check_numbers():
    api_key = 'your_api_key_here'
    url = 'http://192.168.102.35:3000/api/check'
    
    headers = {
        'x-api-key': api_key
    }
    
    payload = {
        'numbers': ['+12025550108', '+12025550109']
    }
    
    response = requests.post(url, json=payload, headers=headers)
    
    if response.status_code == 200:
        print(response.json())
    else:
        print(f"Error: {response.status_code}", response.text)
// Step 1: Register your phone number
function registerPhone() {
    $url = 'http://192.168.102.35:3000/api/register';
    $data = [
        'phoneNumber' => '+12025550108',
        'telegramId' => '1234567890'  // Optional
    ];

    $curl = curl_init();
    curl_setopt_array($curl, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
        CURLOPT_POSTFIELDS => json_encode($data)
    ]);

    $response = curl_exec($curl);
    $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

    if ($httpCode === 200) {
        $result = json_decode($response, true);
        echo "Verification code: " . $result['code'] . "\n";
        echo "Expires: " . $result['expires'] . "\n";
        // Save the verification code to use in the next step
    } else {
        echo "Error: $httpCode - $response";
    }

    curl_close($curl);
}

// Step 2: Verify your phone with the code
function verifyCode() {
    $url = 'http://192.168.102.35:3000/api/verify';
    $data = [
        'phoneNumber' => '+12025550108',
        'code' => '123456' // The code you received from registration
    ];

    $curl = curl_init();
    curl_setopt_array($curl, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
        CURLOPT_POSTFIELDS => json_encode($data)
    ]);

    $response = curl_exec($curl);
    $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

    if ($httpCode === 200) {
        $result = json_decode($response, true);
        echo "Your API key: " . $result['apiKey'] . "\n";
        // Save this API key securely
    } else {
        echo "Error: $httpCode - $response";
    }

    curl_close($curl);
}

// Step 3: Use the API key to check phone numbers
function checkNumbers() {
    $apiKey = 'your_api_key_here';
    $url = 'http://192.168.102.35:3000/api/check';

    $data = [
        'numbers' => ['+12025550108', '+12025550109']
    ];

    $curl = curl_init();
    curl_setopt_array($curl, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_HTTPHEADER => [
            'Content-Type: application/json',
            "x-api-key: $apiKey"
        ],
        CURLOPT_POSTFIELDS => json_encode($data)
    ]);

    $response = curl_exec($curl);
    $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

    if ($httpCode === 200) {
        $result = json_decode($response, true);
        print_r($result);
    } else {
        echo "Error: $httpCode - $response";
    }

    curl_close($curl);
}

Error Codes

Status Code Description
400 Bad Request - Invalid parameters or request format
401 Unauthorized - Invalid or missing API key
403 Forbidden - API key is disabled
429 Too Many Requests - Rate limit exceeded
500 Server Error - Please contact support