Reporting/Insights Hub/Ads.txt Insights
/report/insight/ads-txt
An audit of one publisher’s current ads.txt or app-ads.txt file: errors, missing lines, direct and reseller lines by exchange, and whether it is up to date
GET
/
v1
/
report
/
insight
/
ads-txt
/report/insight/ads-txt
curl --request GET \
--url https://api.tagdeliver.com/v1/report/insight/ads-txt \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tagdeliver.com/v1/report/insight/ads-txt"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tagdeliver.com/v1/report/insight/ads-txt', 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://api.tagdeliver.com/v1/report/insight/ads-txt",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://api.tagdeliver.com/v1/report/insight/ads-txt"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tagdeliver.com/v1/report/insight/ads-txt")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tagdeliver.com/v1/report/insight/ads-txt")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"results": {
"domain": "example.com",
"source": "web",
"adstxt_health": {
"managed": false,
"file_found": 1,
"content_type": "text/plain",
"ci_present": 1,
"up_to_date": 0,
"last_updated": "2026-10-22 06:15:03",
"insight": {
"total_account": 4,
"total_comment": 1,
"total_direct": 3,
"total_empty": 1,
"total_exchange": 3,
"total_file_lines": 9,
"total_issues": 2,
"total_present_lines": 3,
"total_reseller": 1
},
"domain_lines": [
"ownerdomain=example.com",
"managerdomain=contentignite.com"
],
"missing_lines": [
"appnexus.com, 15666, RESELLER, f5ab79cb980f11d1"
],
"unique_errors": {
"duplicate": 1,
"syntax": 1
},
"exchanges": {
"contentignite.com": {
"Tracked Third Party Requirements": {
"direct": [
4
]
}
},
"google.com": {
"Google Ad Manager - Content Ignite": {
"reseller": [
5
]
}
},
"openx.com": {
"Untracked": {
"direct": [
6,
7
]
}
}
},
"lines": [
{
"raw": "OWNERDOMAIN=example.com",
"comment": false,
"formatted": "ownerdomain=example.com",
"errors": [],
"present": false
},
{
"raw": "MANAGERDOMAIN=contentignite.com",
"comment": false,
"formatted": "managerdomain=contentignite.com",
"errors": [],
"present": true
},
{
"raw": "",
"comment": false,
"formatted": null,
"errors": [],
"present": false
},
{
"raw": "# Content Ignite",
"comment": true,
"formatted": null,
"errors": [],
"present": false
},
{
"raw": "contentignite.com, 3, DIRECT",
"comment": false,
"formatted": "contentignite.com,3,direct",
"errors": [],
"fields": {
"exchange": "contentignite.com",
"account_id": 3,
"relationship_type": "direct",
"tag_id": null
},
"present": true
},
{
"raw": "google.com, pub-1234567890123456, RESELLER, f08c47fec0942fa0",
"comment": false,
"formatted": "google.com,pub-1234567890123456,reseller,f08c47fec0942fa0",
"errors": [],
"fields": {
"exchange": "google.com",
"account_id": "pub-1234567890123456",
"relationship_type": "reseller",
"tag_id": "f08c47fec0942fa0"
},
"present": true
},
{
"raw": "openx.com, 561473087, DIRECT, 6a698e2ec38604c6",
"comment": false,
"formatted": "openx.com,561473087,direct,6a698e2ec38604c6",
"errors": [],
"fields": {
"exchange": "openx.com",
"account_id": 561473087,
"relationship_type": "direct",
"tag_id": "6a698e2ec38604c6"
},
"present": false
},
{
"raw": "openx.com, 561473087, DIRECT, 6a698e2ec38604c6",
"comment": false,
"formatted": "openx.com,561473087,direct,6a698e2ec38604c6",
"errors": [
{
"type": "duplicate",
"message": "Duplicate of line 6"
}
],
"fields": {
"exchange": "openx.com",
"account_id": 561473087,
"relationship_type": "direct",
"tag_id": "6a698e2ec38604c6"
},
"present": false
},
{
"raw": "appnexus.com, RESELLER",
"comment": false,
"formatted": "appnexus.com,reseller",
"errors": [
{
"type": "syntax",
"message": "This line seems malformed"
}
],
"present": false
}
]
}
},
"success": true
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
A single publisher ID
Environment or platform to report from
Available options:
app, web Was this page helpful?
⌘I
/report/insight/ads-txt
curl --request GET \
--url https://api.tagdeliver.com/v1/report/insight/ads-txt \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.tagdeliver.com/v1/report/insight/ads-txt"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.tagdeliver.com/v1/report/insight/ads-txt', 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://api.tagdeliver.com/v1/report/insight/ads-txt",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://api.tagdeliver.com/v1/report/insight/ads-txt"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.tagdeliver.com/v1/report/insight/ads-txt")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tagdeliver.com/v1/report/insight/ads-txt")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"results": {
"domain": "example.com",
"source": "web",
"adstxt_health": {
"managed": false,
"file_found": 1,
"content_type": "text/plain",
"ci_present": 1,
"up_to_date": 0,
"last_updated": "2026-10-22 06:15:03",
"insight": {
"total_account": 4,
"total_comment": 1,
"total_direct": 3,
"total_empty": 1,
"total_exchange": 3,
"total_file_lines": 9,
"total_issues": 2,
"total_present_lines": 3,
"total_reseller": 1
},
"domain_lines": [
"ownerdomain=example.com",
"managerdomain=contentignite.com"
],
"missing_lines": [
"appnexus.com, 15666, RESELLER, f5ab79cb980f11d1"
],
"unique_errors": {
"duplicate": 1,
"syntax": 1
},
"exchanges": {
"contentignite.com": {
"Tracked Third Party Requirements": {
"direct": [
4
]
}
},
"google.com": {
"Google Ad Manager - Content Ignite": {
"reseller": [
5
]
}
},
"openx.com": {
"Untracked": {
"direct": [
6,
7
]
}
}
},
"lines": [
{
"raw": "OWNERDOMAIN=example.com",
"comment": false,
"formatted": "ownerdomain=example.com",
"errors": [],
"present": false
},
{
"raw": "MANAGERDOMAIN=contentignite.com",
"comment": false,
"formatted": "managerdomain=contentignite.com",
"errors": [],
"present": true
},
{
"raw": "",
"comment": false,
"formatted": null,
"errors": [],
"present": false
},
{
"raw": "# Content Ignite",
"comment": true,
"formatted": null,
"errors": [],
"present": false
},
{
"raw": "contentignite.com, 3, DIRECT",
"comment": false,
"formatted": "contentignite.com,3,direct",
"errors": [],
"fields": {
"exchange": "contentignite.com",
"account_id": 3,
"relationship_type": "direct",
"tag_id": null
},
"present": true
},
{
"raw": "google.com, pub-1234567890123456, RESELLER, f08c47fec0942fa0",
"comment": false,
"formatted": "google.com,pub-1234567890123456,reseller,f08c47fec0942fa0",
"errors": [],
"fields": {
"exchange": "google.com",
"account_id": "pub-1234567890123456",
"relationship_type": "reseller",
"tag_id": "f08c47fec0942fa0"
},
"present": true
},
{
"raw": "openx.com, 561473087, DIRECT, 6a698e2ec38604c6",
"comment": false,
"formatted": "openx.com,561473087,direct,6a698e2ec38604c6",
"errors": [],
"fields": {
"exchange": "openx.com",
"account_id": 561473087,
"relationship_type": "direct",
"tag_id": "6a698e2ec38604c6"
},
"present": false
},
{
"raw": "openx.com, 561473087, DIRECT, 6a698e2ec38604c6",
"comment": false,
"formatted": "openx.com,561473087,direct,6a698e2ec38604c6",
"errors": [
{
"type": "duplicate",
"message": "Duplicate of line 6"
}
],
"fields": {
"exchange": "openx.com",
"account_id": 561473087,
"relationship_type": "direct",
"tag_id": "6a698e2ec38604c6"
},
"present": false
},
{
"raw": "appnexus.com, RESELLER",
"comment": false,
"formatted": "appnexus.com,reseller",
"errors": [
{
"type": "syntax",
"message": "This line seems malformed"
}
],
"present": false
}
]
}
},
"success": true
}