One-Time Scan Status
curl --request GET \
--url https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan \
--header 'loginId: <loginid>'import requests
url = "https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan"
headers = {"loginId": "<loginid>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {loginId: '<loginid>'}};
fetch('https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan', 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/OneTimeScan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("loginId", "<loginid>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan")
.header("loginId", "<loginid>")
.asString();require 'uri'
require 'net/http'
url = URI("https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["loginId"] = '<loginid>'
response = http.request(request)
puts response.read_body{
"JobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"Status": "Processing",
"PhoneCount": 3,
"ProcessedCount": 1
}
Call Deliverability (TrustCall)
One-Time Scan Status
Check the status of a one-time scan job
GET
/
v1.5
/
TrustCall
/
OneTimeScan
One-Time Scan Status
curl --request GET \
--url https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan \
--header 'loginId: <loginid>'import requests
url = "https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan"
headers = {"loginId": "<loginid>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {loginId: '<loginid>'}};
fetch('https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan', 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/OneTimeScan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("loginId", "<loginid>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan")
.header("loginId", "<loginid>")
.asString();require 'uri'
require 'net/http'
url = URI("https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["loginId"] = '<loginid>'
response = http.request(request)
puts response.read_body{
"JobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"Status": "Processing",
"PhoneCount": 3,
"ProcessedCount": 1
}
Check the status of a one-time scan job submitted via the Submit One-Time Scan endpoint.
Request
Headers
string
required
Your API Key (LoginId from your DNCScrub account)
Query Parameters
string
required
The job ID (UUID) returned from the POST OneTimeScan endpoint
Example Request
curl --location --request GET \
'https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan?jobId=a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
--header 'loginId: YOUR_API_KEY'
const response = await fetch(
'https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan?jobId=a1b2c3d4-e5f6-7890-abcd-ef1234567890',
{
method: 'GET',
headers: { 'loginId': 'YOUR_API_KEY' }
}
);
const data = await response.json();
console.log(data);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("loginId", "YOUR_API_KEY");
var url = "https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan?jobId=a1b2c3d4-e5f6-7890-abcd-ef1234567890";
var response = await client.GetStringAsync(url);
Console.WriteLine(response);
}
{
"JobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"Status": "Processing",
"PhoneCount": 3,
"ProcessedCount": 1
}
{
"JobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"Status": "Complete",
"PhoneCount": 3,
"ProcessedCount": 3,
"Results": [
{
"Phone": "5039367187",
"CurrScore": "Clean",
"VerizonScore": "Clean",
"ATTScore": "Clean",
"TMobileScore": "Clean",
"RoboKillerStatus": "Clean",
"NomoroboStatus": "Clean",
"FTCComplaints": null
},
{
"Phone": "8084565302",
"CurrScore": "Medium",
"VerizonScore": "Clean",
"ATTScore": "Flagged",
"TMobileScore": "Clean",
"RoboKillerStatus": "Clean",
"NomoroboStatus": "Clean",
"FTCComplaints": null
},
{
"Phone": "7867056421",
"CurrScore": "High",
"VerizonScore": "Flagged",
"ATTScore": "Flagged",
"TMobileScore": "Clean",
"RoboKillerStatus": "Clean",
"NomoroboStatus": "Flagged",
"FTCComplaints": [
{
"FTCComplaintId": "79923e06b1c74d47e6ad5826b7554046",
"Phone": "7867056421",
"CreatedDate": "08/15/2022 22:22:39",
"ViolationDate": "07/29/2022 12:04:00",
"Subject": "Dropped call or no message"
}
]
}
]
}
Response Fields
string (UUID)
The scan job identifier
string
Current job status:
Submitted- Job received, not yet startedProcessing- Scan in progressComplete- Scan finished, results availableFailed- Scan encountered an error
integer
Total number of phone numbers in the job
integer
Number of phone numbers processed so far
array
Array of scan results (only present when
Status is Complete). See result fields below.Result Fields
string
The phone number that was scanned
string
Current average carrier spam score:
Clean, Medium, or Highstring
Verizon carrier status:
Clean or Flaggedstring
AT&T carrier status:
Clean or Flaggedstring
T-Mobile carrier status:
Clean or Flaggedstring
RoboKiller app status (if
carrierandapps scan type)string
Nomorobo app status (if
carrierandapps scan type)array | null
Array of FTC complaints (if
carrierandapps scan type)Error Responses
| Status | Description |
|---|---|
| 400 Bad Request | Invalid or missing job ID |
| 401 Unauthorized | Invalid or missing API key |
| 403 Forbidden | Job belongs to a different account |
| 500 Server Error | Internal server error |
Polling Example
async function waitForScanResults(jobId, apiKey, maxWaitMs = 300000) {
const startTime = Date.now();
const pollInterval = 5000; // 5 seconds
while (Date.now() - startTime < maxWaitMs) {
const response = await fetch(
`https://dataapi.dncscrub.com/v1.5/TrustCall/OneTimeScan?jobId=${jobId}`,
{ headers: { 'loginId': apiKey } }
);
const data = await response.json();
if (data.Status === 'Complete') {
return data.Results;
}
if (data.Status === 'Failed') {
throw new Error('Scan job failed');
}
console.log(`Processing: ${data.ProcessedCount}/${data.PhoneCount}`);
await new Promise(resolve => setTimeout(resolve, pollInterval));
}
throw new Error('Scan timed out');
}