curl --request GET \
--url https://api.peec.ai/customer/v1/agent-analytics/readiness \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.peec.ai/customer/v1/agent-analytics/readiness"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.peec.ai/customer/v1/agent-analytics/readiness', 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.peec.ai/customer/v1/agent-analytics/readiness",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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.peec.ai/customer/v1/agent-analytics/readiness"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<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.peec.ai/customer/v1/agent-analytics/readiness")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.peec.ai/customer/v1/agent-analytics/readiness")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"domain": "peec.ai",
"audit": {
"completed_at": "2026-10-01T09:30:00.000Z",
"level": 2,
"ceiling": 4,
"next_level": {
"level": 3,
"passed_gates": 3,
"total_gates": 5,
"blocking_check_ids": [
"page.structured_data",
"page.organization_schema"
]
},
"checks": [
{
"id": "domain.llms_txt",
"level": 2,
"tier": "emerging",
"outcome": "absent"
}
]
},
"competitors": [
{
"brand": {
"id": "kw_915e742b-396d-4a86-ad57-8bc84e8c2232",
"name": "Acme"
},
"domain": "acme.com",
"audit": {
"completed_at": "2026-10-01T09:30:00.000Z",
"level": 2,
"ceiling": 4,
"next_level": {
"level": 3,
"passed_gates": 3,
"total_gates": 5,
"blocking_check_ids": [
"page.structured_data",
"page.organization_schema"
]
},
"checks": [
{
"id": "domain.llms_txt",
"level": 2,
"tier": "emerging",
"outcome": "absent"
}
]
}
}
]
}{
"message": "<string>"
}Get Agent Readiness
How ready the project’s website and its competitors’ websites are for AI agents, from Peec’s agent readiness audit.
Each site gets a level from 0 to 5. A level is reached when every gate check of that level and of every level below it passes, so next_level.blocking_check_ids lists what to fix next. Each check also reports its own outcome, including the hygiene and emerging-standard checks that never block a level.
Reading this endpoint never starts an audit. A domain without an audit completed in the last 90 days returns audit: null.
curl --request GET \
--url https://api.peec.ai/customer/v1/agent-analytics/readiness \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.peec.ai/customer/v1/agent-analytics/readiness"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.peec.ai/customer/v1/agent-analytics/readiness', 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.peec.ai/customer/v1/agent-analytics/readiness",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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.peec.ai/customer/v1/agent-analytics/readiness"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<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.peec.ai/customer/v1/agent-analytics/readiness")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.peec.ai/customer/v1/agent-analytics/readiness")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"domain": "peec.ai",
"audit": {
"completed_at": "2026-10-01T09:30:00.000Z",
"level": 2,
"ceiling": 4,
"next_level": {
"level": 3,
"passed_gates": 3,
"total_gates": 5,
"blocking_check_ids": [
"page.structured_data",
"page.organization_schema"
]
},
"checks": [
{
"id": "domain.llms_txt",
"level": 2,
"tier": "emerging",
"outcome": "absent"
}
]
},
"competitors": [
{
"brand": {
"id": "kw_915e742b-396d-4a86-ad57-8bc84e8c2232",
"name": "Acme"
},
"domain": "acme.com",
"audit": {
"completed_at": "2026-10-01T09:30:00.000Z",
"level": 2,
"ceiling": 4,
"next_level": {
"level": 3,
"passed_gates": 3,
"total_gates": 5,
"blocking_check_ids": [
"page.structured_data",
"page.organization_schema"
]
},
"checks": [
{
"id": "domain.llms_txt",
"level": 2,
"tier": "emerging",
"outcome": "absent"
}
]
}
}
]
}{
"message": "<string>"
}Authorizations
Query Parameters
Required if using a company api key
"or_f45b94ba-5e35-4982-93ed-285e72ee14eb"
Response
Success
Success
The first of the project's own brand domains the audit runs against, or null when the project has no own domain.
"peec.ai"
The newest audit completed within the last 90 days, or null when the domain has none.
Show child attributes
Show child attributes
Every competitor brand of the project that has a domain, audited or not.
Show child attributes
Show child attributes
