Get Page Broken Links
curl --request GET \
--url https://api.cm.conductor.com/v2/data/page/issues/broken_links \
--header 'Authorization: <api-key>'import requests
url = "https://api.cm.conductor.com/v2/data/page/issues/broken_links"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.cm.conductor.com/v2/data/page/issues/broken_links', 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.cm.conductor.com/v2/data/page/issues/broken_links",
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: <api-key>"
],
]);
$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.cm.conductor.com/v2/data/page/issues/broken_links"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.cm.conductor.com/v2/data/page/issues/broken_links")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cm.conductor.com/v2/data/page/issues/broken_links")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"next_page_cursor": "eyJwb3NpdGlvbiI6MTQxLCJ0b191cmxfaWQiOjQzNDEyNTIyMzh9",
"total": 2,
"links": [
{
"url": "https://www.example.com/retired-page/",
"anchor_text": "Read the guide",
"scope": "internal",
"status_code": 404
},
{
"url": "https://partner.example.org/gone/",
"anchor_text": "Partner site",
"scope": "external",
"status_code": 410
}
]
}{
"code": "auth_missing_token",
"message": "Authentication token must be passed in Authorization HTTP header.",
"errors": []
}{
"code": "terms_of_use_not_accepted",
"message": "Reporting API Terms of Use have not been accepted yet. Please accept Terms of Use in Account Settings.",
"errors": []
}{
"error": "Requested website ID was not found"
}{
"code": "auth_malformed",
"message": "Authorization HTTP header must conform to format described in docs.",
"errors": []
}{
"code": "rate_limit_exceeded",
"message": "Too many requests. Try again in a minute.",
"errors": []
}Data
Get page broken links
List the broken links found on a page, with anchor text, scope, and status code for each.
GET
/
v2
/
data
/
page
/
issues
/
broken_links
Get Page Broken Links
curl --request GET \
--url https://api.cm.conductor.com/v2/data/page/issues/broken_links \
--header 'Authorization: <api-key>'import requests
url = "https://api.cm.conductor.com/v2/data/page/issues/broken_links"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.cm.conductor.com/v2/data/page/issues/broken_links', 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.cm.conductor.com/v2/data/page/issues/broken_links",
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: <api-key>"
],
]);
$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.cm.conductor.com/v2/data/page/issues/broken_links"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.cm.conductor.com/v2/data/page/issues/broken_links")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cm.conductor.com/v2/data/page/issues/broken_links")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"next_page_cursor": "eyJwb3NpdGlvbiI6MTQxLCJ0b191cmxfaWQiOjQzNDEyNTIyMzh9",
"total": 2,
"links": [
{
"url": "https://www.example.com/retired-page/",
"anchor_text": "Read the guide",
"scope": "internal",
"status_code": 404
},
{
"url": "https://partner.example.org/gone/",
"anchor_text": "Partner site",
"scope": "external",
"status_code": 410
}
]
}{
"code": "auth_missing_token",
"message": "Authentication token must be passed in Authorization HTTP header.",
"errors": []
}{
"code": "terms_of_use_not_accepted",
"message": "Reporting API Terms of Use have not been accepted yet. Please accept Terms of Use in Account Settings.",
"errors": []
}{
"error": "Requested website ID was not found"
}{
"code": "auth_malformed",
"message": "Authorization HTTP header must conform to format described in docs.",
"errors": []
}{
"code": "rate_limit_exceeded",
"message": "Too many requests. Try again in a minute.",
"errors": []
}Authorizations
Send your Reporting API token as Authorization: token {reporting_api_token} — the literal string token, a space, then the token itself. Find it in Conductor Monitoring under Account > Account tab > Integration Tokens.
Query Parameters
Required.
Required. Full absolute URL of the page.
Optional. Pagination control. How many results to return per request, 1–1000. It counts result rows, not web pages on your site.
Required range:
1 <= x <= 1000Optional. Pagination control. Cursor from next_page_cursor in the previous response. Faster and more reliable than page on large result sets, and it takes precedence over page — do not send both.
