Add Phone Numbers
curl --request POST \
--url https://dataapi.dncscrub.com/v1.5/TrustCall/Add \
--header 'Content-Type: <content-type>' \
--header 'loginId: <loginid>' \
--data '
{
"Phone": "<string>",
"Label": "<string>",
"ServiceType": "<string>",
"LegalEntityId": 123
}
'import requests
url = "https://dataapi.dncscrub.com/v1.5/TrustCall/Add"
payload = {
"Phone": "<string>",
"Label": "<string>",
"ServiceType": "<string>",
"LegalEntityId": 123
}
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({
Phone: '<string>',
Label: '<string>',
ServiceType: '<string>',
LegalEntityId: 123
})
};
fetch('https://dataapi.dncscrub.com/v1.5/TrustCall/Add', 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/TrustCall/Add",
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([
'Phone' => '<string>',
'Label' => '<string>',
'ServiceType' => '<string>',
'LegalEntityId' => 123
]),
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/TrustCall/Add"
payload := strings.NewReader("{\n \"Phone\": \"<string>\",\n \"Label\": \"<string>\",\n \"ServiceType\": \"<string>\",\n \"LegalEntityId\": 123\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/TrustCall/Add")
.header("loginId", "<loginid>")
.header("Content-Type", "<content-type>")
.body("{\n \"Phone\": \"<string>\",\n \"Label\": \"<string>\",\n \"ServiceType\": \"<string>\",\n \"LegalEntityId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dataapi.dncscrub.com/v1.5/TrustCall/Add")
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 \"Phone\": \"<string>\",\n \"Label\": \"<string>\",\n \"ServiceType\": \"<string>\",\n \"LegalEntityId\": 123\n}"
response = http.request(request)
puts response.read_body[
{
"Response": "Phone number added to monitor",
"Phone": "5039367187",
"LegalEntityId": 123,
"CurrScore": "Processing",
"MaxScore": "Processing",
"HistoricalScore": "0",
"VerizonScore": "Processing",
"ATTScore": "Processing",
"TMobileScore": "Processing",
"RoboKillerStatus": "Processing",
"NomoroboStatus": "Processing",
"FTCComplaints": null
},
{
"Response": "Phone number added to monitor",
"Phone": "8084565302",
"LegalEntityId": 456,
"CurrScore": "Processing",
"MaxScore": "Processing",
"HistoricalScore": "0",
"VerizonScore": "Processing",
"ATTScore": "Processing",
"TMobileScore": "Processing",
"RoboKillerStatus": "Processing",
"NomoroboStatus": "Processing",
"FTCComplaints": null
}
]
Call Deliverability (TrustCall)
Add Phone Numbers
Add phone numbers to TrustCall monitoring for automatic spam score checks
POST
/
v1.5
/
TrustCall
/
Add
Add Phone Numbers
curl --request POST \
--url https://dataapi.dncscrub.com/v1.5/TrustCall/Add \
--header 'Content-Type: <content-type>' \
--header 'loginId: <loginid>' \
--data '
{
"Phone": "<string>",
"Label": "<string>",
"ServiceType": "<string>",
"LegalEntityId": 123
}
'import requests
url = "https://dataapi.dncscrub.com/v1.5/TrustCall/Add"
payload = {
"Phone": "<string>",
"Label": "<string>",
"ServiceType": "<string>",
"LegalEntityId": 123
}
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({
Phone: '<string>',
Label: '<string>',
ServiceType: '<string>',
LegalEntityId: 123
})
};
fetch('https://dataapi.dncscrub.com/v1.5/TrustCall/Add', 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/TrustCall/Add",
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([
'Phone' => '<string>',
'Label' => '<string>',
'ServiceType' => '<string>',
'LegalEntityId' => 123
]),
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/TrustCall/Add"
payload := strings.NewReader("{\n \"Phone\": \"<string>\",\n \"Label\": \"<string>\",\n \"ServiceType\": \"<string>\",\n \"LegalEntityId\": 123\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/TrustCall/Add")
.header("loginId", "<loginid>")
.header("Content-Type", "<content-type>")
.body("{\n \"Phone\": \"<string>\",\n \"Label\": \"<string>\",\n \"ServiceType\": \"<string>\",\n \"LegalEntityId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dataapi.dncscrub.com/v1.5/TrustCall/Add")
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 \"Phone\": \"<string>\",\n \"Label\": \"<string>\",\n \"ServiceType\": \"<string>\",\n \"LegalEntityId\": 123\n}"
response = http.request(request)
puts response.read_body[
{
"Response": "Phone number added to monitor",
"Phone": "5039367187",
"LegalEntityId": 123,
"CurrScore": "Processing",
"MaxScore": "Processing",
"HistoricalScore": "0",
"VerizonScore": "Processing",
"ATTScore": "Processing",
"TMobileScore": "Processing",
"RoboKillerStatus": "Processing",
"NomoroboStatus": "Processing",
"FTCComplaints": null
},
{
"Response": "Phone number added to monitor",
"Phone": "8084565302",
"LegalEntityId": 456,
"CurrScore": "Processing",
"MaxScore": "Processing",
"HistoricalScore": "0",
"VerizonScore": "Processing",
"ATTScore": "Processing",
"TMobileScore": "Processing",
"RoboKillerStatus": "Processing",
"NomoroboStatus": "Processing",
"FTCComplaints": null
}
]
Add phone numbers to TrustCall monitoring. Numbers will be automatically checked for carrier spam scores.
When first added, scores may show as
Processing until checked with each carrier (typically within 24 hours).Request
Headers
string
required
Your API Key (LoginId from your DNCScrub account)
string
required
Must be
application/jsonRequest Body
The request body is a JSON array of phone number objects:string
required
10-digit North American phone number (without leading 1 or +)
string
Optional description or label for the phone number (max 50 characters)
string
Service type for the phone number. If omitted, defaults to
Each value requires the corresponding service to be enabled on your account. If the service is
not enabled, the item’s
Remediation for accounts with remediation service enabled, or Scanning for all other accounts.Valid values:| Value | Description |
|---|---|
Scanning | Standard monitoring service |
Remediation | Remediation service |
Remediation Daily Scans | Remediation with daily scanning |
One Time Scan | A single scan; the number is never re-scanned |
OTS Remediation | A one-time remediation scan; the number is not re-scanned |
Response field returns <value> service type is not allowed for this account.If an unrecognized value is provided, the item’s Response field returns Invalid Service type (HTTP status remains 200).integer
Optional legal entity identifier
Example Request
curl --location --request POST \
'https://dataapi.dncscrub.com/v1.5/TrustCall/Add' \
--header 'loginId: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '[
{ "Phone": "5039367187", "Label": "Customer Service", "LegalEntityId": 123 },
{ "Phone": "8084565302", "Label": "Marketing", "LegalEntityId": 456 }
]'
const response = await fetch(
'https://dataapi.dncscrub.com/v1.5/TrustCall/Add',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'loginId': 'YOUR_API_KEY'
},
body: JSON.stringify([
{ Phone: '5039367187', Label: 'Customer Service', LegalEntityId: 123 },
{ Phone: '8084565302', Label: 'Marketing', LegalEntityId: 456 }
])
}
);
const data = await response.json();
console.log(data);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("loginId", "YOUR_API_KEY");
var requestData = new[]
{
new { Phone = "5039367187", Label = "Customer Service", LegalEntityId = 123 },
new { Phone = "8084565302", Label = "Marketing", LegalEntityId = 456 }
};
var content = new StringContent(
JsonSerializer.Serialize(requestData),
Encoding.UTF8,
"application/json"
);
var response = await client.PostAsync(
"https://dataapi.dncscrub.com/v1.5/TrustCall/Add",
content
);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
[
{
"Response": "Phone number added to monitor",
"Phone": "5039367187",
"LegalEntityId": 123,
"CurrScore": "Processing",
"MaxScore": "Processing",
"HistoricalScore": "0",
"VerizonScore": "Processing",
"ATTScore": "Processing",
"TMobileScore": "Processing",
"RoboKillerStatus": "Processing",
"NomoroboStatus": "Processing",
"FTCComplaints": null
},
{
"Response": "Phone number added to monitor",
"Phone": "8084565302",
"LegalEntityId": 456,
"CurrScore": "Processing",
"MaxScore": "Processing",
"HistoricalScore": "0",
"VerizonScore": "Processing",
"ATTScore": "Processing",
"TMobileScore": "Processing",
"RoboKillerStatus": "Processing",
"NomoroboStatus": "Processing",
"FTCComplaints": null
}
]
Response Fields
string
Status message indicating the result of the add operation
string
The phone number that was added
integer
The legal entity identifier associated with the phone number
string
Current average carrier spam score:
Clean, Medium, High, or Processingstring
Maximum score recorded in the last 15 days
string
Historical score from 0-5 (0-1 = no issues, 5 = 50%+ high spam history)
string
Verizon carrier status:
Clean, Flagged, or Processingstring
AT&T carrier status:
Clean, Flagged, or Processingstring
T-Mobile carrier status:
Clean, Flagged, or Processingstring
RoboKiller app status:
Clean, Flagged, or Processingstring
Nomorobo app status:
Clean, Flagged, or Processingarray | null
Array of FTC complaints associated with the number, or
null if noneError Responses
| Status | Description |
|---|---|
| 400 Bad Request | Invalid request body or phone number format |
| 401 Unauthorized | Invalid or missing API key |
Limits
- Maximum 50 phone numbers per add request