Reassigned Authority (POST)
curl --request POST \
--url https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority \
--header 'Content-Type: <content-type>' \
--header 'loginId: <loginid>' \
--data '
{
"Data": [
{
"PhoneNumber": "<string>",
"Date": "<string>"
}
],
"useSandbox": true
}
'import requests
url = "https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority"
payload = {
"Data": [
{
"PhoneNumber": "<string>",
"Date": "<string>"
}
],
"useSandbox": True
}
headers = {
"loginId": "<loginid>",
"Content-Type": "<content-type>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {loginId: '<loginid>', 'Content-Type': '<content-type>'},
body: JSON.stringify({Data: [{PhoneNumber: '<string>', Date: '<string>'}], useSandbox: true})
};
fetch('https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'Data' => [
[
'PhoneNumber' => '<string>',
'Date' => '<string>'
]
],
'useSandbox' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>",
"loginId: <loginid>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority"
payload := strings.NewReader("{\n \"Data\": [\n {\n \"PhoneNumber\": \"<string>\",\n \"Date\": \"<string>\"\n }\n ],\n \"useSandbox\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("loginId", "<loginid>")
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority")
.header("loginId", "<loginid>")
.header("Content-Type", "<content-type>")
.body("{\n \"Data\": [\n {\n \"PhoneNumber\": \"<string>\",\n \"Date\": \"<string>\"\n }\n ],\n \"useSandbox\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["loginId"] = '<loginid>'
request["Content-Type"] = '<content-type>'
request.body = "{\n \"Data\": [\n {\n \"PhoneNumber\": \"<string>\",\n \"Date\": \"<string>\"\n }\n ],\n \"useSandbox\": true\n}"
response = http.request(request)
puts response.read_body[
{
"PhoneNumber": "7075276405",
"IsReassigned": false,
"IsValid": true,
"LineType": "Landline",
"Carrier": "AT&T California",
"Locale": "Santa Rosa",
"Region": "CA",
"Country": "US",
"TZ": "America/Los_Angeles",
"UTCOffset": "-420"
},
{
"PhoneNumber": "5039367187",
"IsReassigned": false,
"IsValid": true,
"LineType": "Wireless",
"Carrier": "Verizon Wireless",
"Locale": "Portland",
"Region": "OR",
"Country": "US",
"TZ": "America/Los_Angeles",
"UTCOffset": "-420"
}
]
Reassigned Scrub
Reassigned Authority (POST)
Check multiple phone numbers for reassignment since a given consent date
POST
/
v1.5
/
Data
/
TCPAAuthority
Reassigned Authority (POST)
curl --request POST \
--url https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority \
--header 'Content-Type: <content-type>' \
--header 'loginId: <loginid>' \
--data '
{
"Data": [
{
"PhoneNumber": "<string>",
"Date": "<string>"
}
],
"useSandbox": true
}
'import requests
url = "https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority"
payload = {
"Data": [
{
"PhoneNumber": "<string>",
"Date": "<string>"
}
],
"useSandbox": True
}
headers = {
"loginId": "<loginid>",
"Content-Type": "<content-type>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {loginId: '<loginid>', 'Content-Type': '<content-type>'},
body: JSON.stringify({Data: [{PhoneNumber: '<string>', Date: '<string>'}], useSandbox: true})
};
fetch('https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'Data' => [
[
'PhoneNumber' => '<string>',
'Date' => '<string>'
]
],
'useSandbox' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>",
"loginId: <loginid>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority"
payload := strings.NewReader("{\n \"Data\": [\n {\n \"PhoneNumber\": \"<string>\",\n \"Date\": \"<string>\"\n }\n ],\n \"useSandbox\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("loginId", "<loginid>")
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority")
.header("loginId", "<loginid>")
.header("Content-Type", "<content-type>")
.body("{\n \"Data\": [\n {\n \"PhoneNumber\": \"<string>\",\n \"Date\": \"<string>\"\n }\n ],\n \"useSandbox\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["loginId"] = '<loginid>'
request["Content-Type"] = '<content-type>'
request.body = "{\n \"Data\": [\n {\n \"PhoneNumber\": \"<string>\",\n \"Date\": \"<string>\"\n }\n ],\n \"useSandbox\": true\n}"
response = http.request(request)
puts response.read_body[
{
"PhoneNumber": "7075276405",
"IsReassigned": false,
"IsValid": true,
"LineType": "Landline",
"Carrier": "AT&T California",
"Locale": "Santa Rosa",
"Region": "CA",
"Country": "US",
"TZ": "America/Los_Angeles",
"UTCOffset": "-420"
},
{
"PhoneNumber": "5039367187",
"IsReassigned": false,
"IsValid": true,
"LineType": "Wireless",
"Carrier": "Verizon Wireless",
"Locale": "Portland",
"Region": "OR",
"Country": "US",
"TZ": "America/Los_Angeles",
"UTCOffset": "-420"
}
]
Check multiple phone numbers for reassignment since given consent dates using the TCPA Authority API. Use POST for batch processing up to 1,000 numbers per request.
For single number lookups, you can use the GET
method instead.
Request
Headers
string
required
Your API Key (LoginId from your DNCScrub account)
string
required
Must be
application/jsonRequest Body
array
required
boolean
default:"false"
(Optional) Set to
true to use sandbox mode for testing (returns random
results)Example Request
curl --location --request POST \
'https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority' \
--header 'loginId: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"Data": [
{
"PhoneNumber": "7075276405",
"Date": "20210209"
},
{
"PhoneNumber": "5039367187",
"Date": "20210209"
}
]
}'
const response = await fetch(
"https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority",
{
method: "POST",
headers: {
"Content-Type": "application/json",
loginId: "YOUR_API_KEY",
},
body: JSON.stringify({
Data: [
{ PhoneNumber: "7075276405", Date: "20210209" },
{ PhoneNumber: "5039367187", Date: "20210209" },
],
}),
}
);
const data = await response.json();
console.log(data);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("loginId", "YOUR_API_KEY");
var requestData = new
{
Data = new[]
{
new { PhoneNumber = "7075276405", Date = "20210209" },
new { PhoneNumber = "5039367187", Date = "20210209" }
}
};
var content = new StringContent(
JsonSerializer.Serialize(requestData),
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync(
"https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority",
content
);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
[
{
"PhoneNumber": "7075276405",
"IsReassigned": false,
"IsValid": true,
"LineType": "Landline",
"Carrier": "AT&T California",
"Locale": "Santa Rosa",
"Region": "CA",
"Country": "US",
"TZ": "America/Los_Angeles",
"UTCOffset": "-420"
},
{
"PhoneNumber": "5039367187",
"IsReassigned": false,
"IsValid": true,
"LineType": "Wireless",
"Carrier": "Verizon Wireless",
"Locale": "Portland",
"Region": "OR",
"Country": "US",
"TZ": "America/Los_Angeles",
"UTCOffset": "-420"
}
]
Response Fields
Each object in the response array contains:string
The phone number that was checked
boolean | null
Indicates if the phone was reassigned after the consent date: -
true -
Reassigned after the date. Do not call. - false - Not reassigned. Safe
to call. - null - Insufficient information to determine reassignment status.boolean
true if the phone number is valid and callable, false if not validstring
Type of phone line:
Wireless, VoIP, Landline, Paging, or Unknownstring
Original carrier the phone number was assigned to
string
City based on original phone number assignment
string
State/region based on original phone number assignment
string
Two-digit ISO country code
string
Timezone in ISO IANA format (e.g.,
America/Los_Angeles)string
UTC offset in minutes
Error Responses
| Status | Description |
|---|---|
| 400 Bad Request | Invalid request body, phone number format, or date format |
| 401 Unauthorized | Invalid or missing API key |
| 403 Forbidden | Account not authorized for this API or insufficient credits |
Batch Processing Example
async function checkReassignedNumbers(phoneRecords) {
const response = await fetch(
"https://dataapi.dncscrub.com/v1.5/Data/TCPAAuthority",
{
method: "POST",
headers: {
"Content-Type": "application/json",
loginId: "YOUR_API_KEY",
},
body: JSON.stringify({ Data: phoneRecords }),
}
);
const results = await response.json();
// Categorize results
const safeToCall = results.filter((r) => r.IsReassigned === false);
const doNotCall = results.filter((r) => r.IsReassigned === true);
const unknown = results.filter((r) => r.IsReassigned === null);
return {
safeToCall: safeToCall.map((r) => r.PhoneNumber),
doNotCall: doNotCall.map((r) => r.PhoneNumber),
unknown: unknown.map((r) => r.PhoneNumber),
};
}
// Usage
const records = [
{ PhoneNumber: "7075276405", Date: "20210209" },
{ PhoneNumber: "5039367187", Date: "20210209" },
];
const result = await checkReassignedNumbers(records);
console.log("Safe to call:", result.safeToCall.length);
console.log("Do not call:", result.doNotCall.length);
⌘I