Batch check multiple phone numbers using TCPA Authority Plus (Enhanced RND), which combines CCC’s authoritative carrier data with the FCC Reassigned Number Database.
For single number lookups, use the GET method instead.
Request
Your API Key (LoginId from your DNCScrub account)
Request Body
The request body is a JSON array of objects:
10-digit North American phone number (without leading 1 or +)
Consent date in format YYYYMMDD, MM/DD/YYYY, YYYY-MM-DD, or MM/DD/YY
Example Request
curl --location --request POST \
'https://dataapi.dncscrub.com/v1.5/Data/EnhancedRND' \
--header 'loginId: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '[
{ "phoneNumber": "7075276405", "date": "20211109" },
{ "phoneNumber": "5039367187", "date": "20211109" }
]'
[
{
"PhoneNumber": "7075276405",
"IsReassigned": false,
"HasSafeHarbor": true,
"CCCIsReassigned": false
},
{
"PhoneNumber": "5039367187",
"IsReassigned": false,
"HasSafeHarbor": true,
"CCCIsReassigned": false
}
]
Response Fields
Each object in the response array contains:
The phone number that was checked
Combined result - use this field to determine if to place the call:
true - Reassigned. Do not call.
false - Not reassigned. Safe to call.
null - Insufficient information.
true if an FCC safe harbor exemption may be available
Result from CCC’s carrier data only. For informational purposes.
Error Responses
Invalid request body, phone number format, or date format
Invalid or missing API key
Rate Limits
- 50 requests per minute
- Up to 1,000 numbers per request
- Average response time: ~1,575ms
Batch Processing Example
async function checkEnhancedRND(phoneRecords) {
const response = await fetch(
'https://dataapi.dncscrub.com/v1.5/Data/EnhancedRND',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'loginId': 'YOUR_API_KEY'
},
body: JSON.stringify(phoneRecords)
}
);
const results = await response.json();
// Categorize by IsReassigned (the combined result)
const safeToCall = results.filter(r => r.IsReassigned === false);
const doNotCall = results.filter(r => r.IsReassigned === true);
const unknown = results.filter(r => r.IsReassigned === null);
// Numbers with safe harbor protection
const withSafeHarbor = safeToCall.filter(r => r.HasSafeHarbor);
return {
safeToCall: safeToCall.map(r => r.PhoneNumber),
doNotCall: doNotCall.map(r => r.PhoneNumber),
unknown: unknown.map(r => r.PhoneNumber),
safeHarborCount: withSafeHarbor.length
};
}
// Usage
const records = [
{ phoneNumber: '7075276405', date: '20211109' },
{ phoneNumber: '5039367187', date: '20211109' }
];
const result = await checkEnhancedRND(records);
console.log(`Safe to call: ${result.safeToCall.length}`);
console.log(`With safe harbor: ${result.safeHarborCount}`);