Skip to main content
POST
https://dataapi.dncscrub.com
/
v1.5
/
Data
/
TCPAAuthority
TCPA 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
}
'
[
  {
    "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

loginId
string
required
Your API Key (LoginId from your DNCScrub account)
Content-Type
string
required
Must be application/json

Request Body

Data
array
required
Array of phone number and date pairs to check
UseSandbox
boolean
default:"false"
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"
      }
    ]
  }'
[
  {
    "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:
PhoneNumber
string
The phone number that was checked
IsReassigned
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.
IsValid
boolean
true if the phone number is valid and callable, false if not valid
LineType
string
Type of phone line: Wireless, VoIP, Landline, Paging, or Unknown
Carrier
string
Original carrier the phone number was assigned to
Locale
string
City based on original phone number assignment
Region
string
State/region based on original phone number assignment
Country
string
Two-digit ISO country code
TZ
string
Timezone in ISO IANA format (e.g., America/Los_Angeles)
UTCOffset
string
UTC offset in minutes

Error Responses

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

Rate Limits

  • 100 requests per minute
  • Up to 1,000 numbers per request
  • Average response time: ~569ms

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);