CN

CleanMyNumbers API Docs

Single Number Verification • v1.0

API Active & Ready

Single Phone Number Verification API

Verify and clean phone numbers in real time against high-risk blacklists and compliance databases. Instantly know whether a phone number is safe to dial before placing outbound calls or sending SMS.

Base Domain: https://cleanmynumbers.com Protocol: HTTPS / JSON Feature: Single Number Scrubbing

1 API Credentials & Endpoints

Production Endpoint URL
https://cleanmynumbers.com/api/litigator/lookup
Demo API Key (Replace with Your Key)
cn_live_98a7b6c5d4e3f210abcdef0123456789abcdef0112246fgee3g
Authentication Header: Include your API key in the request header as X-API-KEY: cn_live_.... You can also send it via Authorization: Bearer <key> or as a query parameter ?api_key=<key>.

2 Single Phone Number Lookup

POST /api/litigator/lookup

Check whether a specific phone number is Clean or Flagged (High-Risk). Costs 1 Coin per check. If your coin balance reaches 0, the API returns HTTP 403 and will not clean the number.

Parameter Type Required Description
phone string Required Any valid phone number format: 2012070837, (201) 207-0837, or +1 201 207 0837. Non-digit characters are stripped automatically.

Possible API Responses

🟢 Clean Number (HTTP 200) Safe to Call
{
  "success": true,
  "phone": "2012070837",
  "clean": true,
  "status": "clean",
  "message": "PHONE NUMBER IS CLEAN",
  "coins_used": 1,
  "remaining_coins": 499
}
🔴 Flagged Number (HTTP 200) DO NOT CALL
{
  "success": true,
  "phone": "2522383783",
  "clean": false,
  "status": "not_clean",
  "message": "PHONE NUMBER IS NOT CLEAN (Found in database)",
  "coins_used": 1,
  "remaining_coins": 498
}
⚠️ Insufficient Coins (HTTP 403 Forbidden) Number NOT Cleaned
{
  "success": false,
  "error": "Insufficient Coins",
  "message": "You don't have coins to clean number",
  "clean": false,
  "phone": "2012070837",
  "coins": 0,
  "coins_access": 1
}

3 Code Integration Examples (Single Number)

cURL (Command Line)
curl -X POST https://cleanmynumbers.com/api/litigator/lookup \
  -H "X-API-KEY: cn_live_98a7b6c5d4e3f210abcdef0123456789abcdef0112246fgee3g" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"phone": "2012070837"}'
JavaScript / Node.js (Fetch API)
async function verifyNumber(phoneNumber) {
  const response = await fetch("https://cleanmynumbers.com/api/litigator/lookup", {
    method: "POST",
    headers: {
      "X-API-KEY": "cn_live_98a7b6c5d4e3f210abcdef0123456789abcdef0112246fgee3g",
      "Content-Type": "application/json",
      "Accept": "application/json"
    },
    body: JSON.stringify({ phone: phoneNumber })
  });

  const data = await response.json();

  if (response.status === 200) {
    if (data.clean === true) {
      console.log("SAFE: Phone is clean! Remaining coins:", data.remaining_coins);
      return true;
    } else {
      console.warn("DANGER: High-risk number flagged! Do not call.");
      return false;
    }
  } else {
    console.error("API Error (" + response.status + "):", data.message);
    return false;
  }
}

// Call function
verifyNumber("2012070837");
PHP (cURL)
<?php

$apiKey = "cn_live_98a7b6c5d4e3f210abcdef0123456789abcdef0112246fgee3g";
$phone = "2012070837";

$ch = curl_init("https://cleanmynumbers.com/api/litigator/lookup");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "X-API-KEY: " . $apiKey,
    "Content-Type: application/json",
    "Accept: application/json"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["phone" => $phone]));

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$result = json_decode($response, true);

if ($httpCode === 200 && ($result['clean'] ?? false) === true) {
    echo "Phone is CLEAN! Coins left: " . $result['remaining_coins'];
} elseif ($httpCode === 200 && ($result['clean'] ?? false) === false) {
    echo "WARNING: Flagged number detected! Do not contact.";
} else {
    echo "Error (" . $httpCode . "): " . ($result['message'] ?? 'Unknown error');
}
Python (Requests)
import requests

api_url = "https://cleanmynumbers.com/api/litigator/lookup"
headers = {
    "X-API-KEY": "cn_live_98a7b6c5d4e3f210abcdef0123456789abcdef0112246fgee3g",
    "Content-Type": "application/json"
}
payload = {
    "phone": "2012070837"
}

response = requests.post(api_url, headers=headers, json=payload)
data = response.json()

if response.status_code == 200:
    if data.get("clean") is True:
        print("✅ Phone is Clean! Coins left:", data.get("remaining_coins"))
    else:
        print("🚫 Warning: High-risk number flagged! Do not dial.")
else:
    print(f"Error ({response.status_code}):", data.get("message"))

CRM & No-Code Webhooks (GoHighLevel, Zapier, Make)

To protect your CRM leads automatically before triggering automated SMS or outbound calls:

  1. In your Workflow / Zap, add a Custom Webhook / HTTP Request step.
  2. Set Request Method to POST and URL to https://cleanmynumbers.com/api/litigator/lookup.
  3. Add Header: X-API-KEY: cn_live_98a7b6c5d4e3f210abcdef0123456789abcdef0112246fgee3g.
  4. Pass Body: {"phone": "{{contact.phone}}"}.
  5. Add an If / Else Branch: • If clean == true → Continue campaign. • If clean == false → Add tag High-Risk-Blacklist and stop outreach.

4 HTTP Status Codes Reference

Code Status Meaning Action
200 OK Phone number was checked. Result available in clean field. Read data.clean boolean.
403 Forbidden Insufficient Coins. Number was not cleaned. Add coins in account or contact support.
401 Unauthorized Invalid or missing API key. Check X-API-KEY header.
422 Unprocessable Missing phone input or invalid format (needs 7-15 digits). Correct input phone parameter.