/v2/report/health-check/:uid/:id
curl --request GET \
--url https://api.tagdeliver.com/v2/report/health-check/{uid}/{id}import requests
url = "https://api.tagdeliver.com/v2/report/health-check/{uid}/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.tagdeliver.com/v2/report/health-check/{uid}/{id}', 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/v2/report/health-check/{uid}/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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/v2/report/health-check/{uid}/{id}"
req, _ := http.NewRequest("GET", url, nil)
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/v2/report/health-check/{uid}/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tagdeliver.com/v2/report/health-check/{uid}/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"results": {
"public": true,
"domain_info": {
"primary_category": [
"News"
],
"secondary_category": [
"Local News"
],
"domain": "example.com",
"description": "Local news, weather and events for the Example Valley area."
},
"score": {
"health_score": 72,
"health_score_date": "2026-10-20 09:14:02",
"previous_health_score": 65,
"previous_health_score_date": "2026-07-14 10:02:45",
"comment": null
},
"ads_txt": {
"file_found": 1,
"last_updated": "2026-10-19 23:04:17",
"total_reseller": 180,
"total_direct": 34,
"total_issues": 4,
"total_account": 214,
"total_exchange": 41,
"total_file_lines": 230,
"unique_errors": {
"duplicate": 3,
"syntax": 1
},
"comment": "Most of your accounts are resellers and four lines have errors. Remove the duplicate lines and fix the malformed one so buyers can read the file."
},
"cwv": {
"dates": [
"2026-10-19",
"2026-10-18",
"2026-10-17"
],
"cwv_lcp_50th": [
1800,
1900,
1750
],
"cwv_lcp_50th_average": 1816.6666666666667,
"cwv_inp_50th": [
150,
160,
170
],
"cwv_inp_50th_average": 160,
"cwv_fcp_50th": [
1100,
1200,
null
],
"cwv_fcp_50th_average": 1150,
"cwv_cls_50th": [
0.04,
0,
0.06
],
"cwv_cls_50th_average": 0.05,
"comment": "All four Core Web Vitals are within the recommended limits, so page speed is unlikely to be holding back ad revenue."
},
"implementation": {
"direct_tag": 1204,
"cmp_error_rate": 0.62,
"mobile_ad_density": 18,
"tag_latency": 2900,
"comment": "Your tag loads after almost 3 seconds. Loading it earlier in the page would let more ads render before visitors scroll away."
},
"risk": {
"invalid_traffic": "low",
"click_fraud": "low",
"viewability": "high",
"domain_masking": "low",
"traffic_sources": "Direct",
"brand_safety": {
"adult_content": "low",
"alcohol_content": "low",
"drug_content": "low",
"hate_speech": "low",
"phishing": "low",
"malware": "low"
},
"social_media_traffic": 4.2,
"private": false,
"comment": "Viewability risk is high. Moving ad slots closer to the content people read would raise viewable impressions."
},
"ethical_media": {
"emi_score": 61,
"advertising": {
"score": 72,
"invalid_traffic": 80,
"adselection_display": 65,
"viewability": 70
},
"content": {
"score": 55,
"iab_category": 1,
"media_quality": 60,
"sdg_count": 2
},
"corporate": {
"score": 58,
"esg_environment": 47.333333333333336,
"esg_community": 52,
"esg_compensation": 40,
"esg_diversity": 55,
"esg_governance": 61.5,
"domain_rep": 0.82,
"green_energy": 1,
"mediadistribution": 0.5
},
"comment": "Your Ethical Media Index is above 50. The corporate score is the weakest area."
},
"header_bidding": {
"aps": true,
"pbjs": {
"timeout": 1500,
"version": "9.21.0",
"versions_behind": 3,
"bidders": 7
},
"comment": "Prebid.js is recent and the timeout is within the recommended range."
},
"benchmarking": {
"health_score": {
"cohort": 68,
"network": 74
},
"lcp": {
"cohort": 2210.5,
"network": 2380.25
},
"tag_latency": {
"cohort": 2650,
"network": 3100
},
"prebid_timeout": {
"network": 2000
}
},
"sustainability": {
"is_green": false,
"cleaner_than": 0.58,
"bytes": 2483021,
"energy": 0.0012,
"co2_grams": 0.47,
"co2_litres": 0.26,
"engagement": {
"visits": 182000,
"month": 9,
"year": 2026
},
"comment": "Your pages are cleaner than 58% of those tested. Switching to a green host would lower emissions further."
},
"section_map": {
"plan": true
},
"actions": "- Remove duplicate and malformed ads.txt lines\n- Load the ad tag earlier in the page\n- Move ad slots closer to the main content",
"plan": {
"crawl": {
"health_score": 72,
"actions": "- Remove duplicate and malformed ads.txt lines"
},
"walk": {
"health_score": 76,
"actions": "- Load the ad tag earlier in the page"
},
"run": {
"health_score": 79,
"actions": "- Move ad slots closer to the main content"
}
},
"health_score_details": {
"ivt": 0,
"click_fraud": 0,
"viewability": 3,
"adult_content": 0,
"alcohol_content": 0,
"drug_content": 0,
"hate_speech": 0,
"phishing": 0,
"malware": 0,
"social_traffic": 0,
"time_on_site": 0,
"page_per_visit": 5,
"visits": 0,
"cmp_error_rate": 0,
"tag_latency": 10,
"mobile_ad_density": 0,
"direct_tag": 0,
"ads_txt_issues": 5,
"ads_txt_accounts": 2.5,
"cwv_cls": 0,
"cwv_lcp": 0,
"cwv_inp": 0,
"cwv_fcp": 0,
"emi_score": 0,
"sustainability_score": 2.5,
"prebid_versions_behind": 0,
"prebid_timeout": 0,
"missing_pixalate_report": 0,
"missing_similar_web_report": 0,
"missing_goodnet_report": 0,
"missing_website_carbon_report": 0
}
},
"success": true
}Reporting/Health Check
/v2/report/health-check/:uid/:id
The full report for one health check: score, commentary on each area reviewed, comparison with similar sites and an action plan
GET
/
v2
/
report
/
health-check
/
{uid}
/
{id}
/v2/report/health-check/:uid/:id
curl --request GET \
--url https://api.tagdeliver.com/v2/report/health-check/{uid}/{id}import requests
url = "https://api.tagdeliver.com/v2/report/health-check/{uid}/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.tagdeliver.com/v2/report/health-check/{uid}/{id}', 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/v2/report/health-check/{uid}/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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/v2/report/health-check/{uid}/{id}"
req, _ := http.NewRequest("GET", url, nil)
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/v2/report/health-check/{uid}/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tagdeliver.com/v2/report/health-check/{uid}/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"results": {
"public": true,
"domain_info": {
"primary_category": [
"News"
],
"secondary_category": [
"Local News"
],
"domain": "example.com",
"description": "Local news, weather and events for the Example Valley area."
},
"score": {
"health_score": 72,
"health_score_date": "2026-10-20 09:14:02",
"previous_health_score": 65,
"previous_health_score_date": "2026-07-14 10:02:45",
"comment": null
},
"ads_txt": {
"file_found": 1,
"last_updated": "2026-10-19 23:04:17",
"total_reseller": 180,
"total_direct": 34,
"total_issues": 4,
"total_account": 214,
"total_exchange": 41,
"total_file_lines": 230,
"unique_errors": {
"duplicate": 3,
"syntax": 1
},
"comment": "Most of your accounts are resellers and four lines have errors. Remove the duplicate lines and fix the malformed one so buyers can read the file."
},
"cwv": {
"dates": [
"2026-10-19",
"2026-10-18",
"2026-10-17"
],
"cwv_lcp_50th": [
1800,
1900,
1750
],
"cwv_lcp_50th_average": 1816.6666666666667,
"cwv_inp_50th": [
150,
160,
170
],
"cwv_inp_50th_average": 160,
"cwv_fcp_50th": [
1100,
1200,
null
],
"cwv_fcp_50th_average": 1150,
"cwv_cls_50th": [
0.04,
0,
0.06
],
"cwv_cls_50th_average": 0.05,
"comment": "All four Core Web Vitals are within the recommended limits, so page speed is unlikely to be holding back ad revenue."
},
"implementation": {
"direct_tag": 1204,
"cmp_error_rate": 0.62,
"mobile_ad_density": 18,
"tag_latency": 2900,
"comment": "Your tag loads after almost 3 seconds. Loading it earlier in the page would let more ads render before visitors scroll away."
},
"risk": {
"invalid_traffic": "low",
"click_fraud": "low",
"viewability": "high",
"domain_masking": "low",
"traffic_sources": "Direct",
"brand_safety": {
"adult_content": "low",
"alcohol_content": "low",
"drug_content": "low",
"hate_speech": "low",
"phishing": "low",
"malware": "low"
},
"social_media_traffic": 4.2,
"private": false,
"comment": "Viewability risk is high. Moving ad slots closer to the content people read would raise viewable impressions."
},
"ethical_media": {
"emi_score": 61,
"advertising": {
"score": 72,
"invalid_traffic": 80,
"adselection_display": 65,
"viewability": 70
},
"content": {
"score": 55,
"iab_category": 1,
"media_quality": 60,
"sdg_count": 2
},
"corporate": {
"score": 58,
"esg_environment": 47.333333333333336,
"esg_community": 52,
"esg_compensation": 40,
"esg_diversity": 55,
"esg_governance": 61.5,
"domain_rep": 0.82,
"green_energy": 1,
"mediadistribution": 0.5
},
"comment": "Your Ethical Media Index is above 50. The corporate score is the weakest area."
},
"header_bidding": {
"aps": true,
"pbjs": {
"timeout": 1500,
"version": "9.21.0",
"versions_behind": 3,
"bidders": 7
},
"comment": "Prebid.js is recent and the timeout is within the recommended range."
},
"benchmarking": {
"health_score": {
"cohort": 68,
"network": 74
},
"lcp": {
"cohort": 2210.5,
"network": 2380.25
},
"tag_latency": {
"cohort": 2650,
"network": 3100
},
"prebid_timeout": {
"network": 2000
}
},
"sustainability": {
"is_green": false,
"cleaner_than": 0.58,
"bytes": 2483021,
"energy": 0.0012,
"co2_grams": 0.47,
"co2_litres": 0.26,
"engagement": {
"visits": 182000,
"month": 9,
"year": 2026
},
"comment": "Your pages are cleaner than 58% of those tested. Switching to a green host would lower emissions further."
},
"section_map": {
"plan": true
},
"actions": "- Remove duplicate and malformed ads.txt lines\n- Load the ad tag earlier in the page\n- Move ad slots closer to the main content",
"plan": {
"crawl": {
"health_score": 72,
"actions": "- Remove duplicate and malformed ads.txt lines"
},
"walk": {
"health_score": 76,
"actions": "- Load the ad tag earlier in the page"
},
"run": {
"health_score": 79,
"actions": "- Move ad slots closer to the main content"
}
},
"health_score_details": {
"ivt": 0,
"click_fraud": 0,
"viewability": 3,
"adult_content": 0,
"alcohol_content": 0,
"drug_content": 0,
"hate_speech": 0,
"phishing": 0,
"malware": 0,
"social_traffic": 0,
"time_on_site": 0,
"page_per_visit": 5,
"visits": 0,
"cmp_error_rate": 0,
"tag_latency": 10,
"mobile_ad_density": 0,
"direct_tag": 0,
"ads_txt_issues": 5,
"ads_txt_accounts": 2.5,
"cwv_cls": 0,
"cwv_lcp": 0,
"cwv_inp": 0,
"cwv_fcp": 0,
"emi_score": 0,
"sustainability_score": 2.5,
"prebid_versions_behind": 0,
"prebid_timeout": 0,
"missing_pixalate_report": 0,
"missing_similar_web_report": 0,
"missing_goodnet_report": 0,
"missing_website_carbon_report": 0
}
},
"success": true
}Was this page helpful?
⌘I