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/lookupCheck 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:
- In your Workflow / Zap, add a Custom Webhook / HTTP Request step.
- Set Request Method to
POSTand URL tohttps://cleanmynumbers.com/api/litigator/lookup. - Add Header:
X-API-KEY: cn_live_98a7b6c5d4e3f210abcdef0123456789abcdef0112246fgee3g. - Pass Body:
{"phone": "{{contact.phone}}"}. - Add an If / Else Branch:
• If
clean == true→ Continue campaign. • Ifclean == false→ Add tagHigh-Risk-Blacklistand 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. |