curl --request POST \
--url https://api.athenahq.ai/api/v1/ai-access/check \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"domain": "example.com"
}
'import requests
url = "https://api.athenahq.ai/api/v1/ai-access/check"
payload = { "domain": "example.com" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({domain: 'example.com'})
};
fetch('https://api.athenahq.ai/api/v1/ai-access/check', 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.athenahq.ai/api/v1/ai-access/check",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'domain' => 'example.com'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.athenahq.ai/api/v1/ai-access/check"
payload := strings.NewReader("{\n \"domain\": \"example.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.athenahq.ai/api/v1/ai-access/check")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"domain\": \"example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.athenahq.ai/api/v1/ai-access/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"domain\": \"example.com\"\n}"
response = http.request(request)
puts response.read_body{
"result": {
"domain": "<string>",
"checkedAt": "2023-11-07T05:31:56Z",
"http": {
"chatgpt": {
"conversational": true,
"training": true
},
"claude": {
"conversational": true,
"training": true
},
"perplexity": {
"conversational": true,
"training": true
},
"gemini": {
"conversational": true,
"training": true
},
"copilot": {
"conversational": true,
"training": true
},
"grok": {
"conversational": true,
"training": true
},
"deepseek": {
"conversational": true,
"training": true
},
"rufus": {
"conversational": true,
"training": true
}
},
"robots": {
"chatgpt": {
"conversational": true,
"training": true
},
"claude": {
"conversational": true,
"training": true
},
"perplexity": {
"conversational": true,
"training": true
},
"gemini": {
"conversational": true,
"training": true
},
"copilot": {
"conversational": true,
"training": true
},
"grok": {
"conversational": true,
"training": true
},
"deepseek": {
"conversational": true,
"training": true
},
"rufus": {
"conversational": true,
"training": true
}
},
"hasSitemap": true,
"error": "<string>"
},
"diagnostics": {
"userAgentChecks": {},
"robotsCheck": {
"url": "<string>",
"status": 123,
"finalUrl": "<string>",
"headers": {},
"errorCode": "<string>",
"errorMessage": "<string>",
"durationMs": 123,
"checkedAt": "2023-11-07T05:31:56Z"
}
},
"log": "<string>"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}Check AI accessibility for a domain
Probe a public domain to determine whether the major AI answer engines (ChatGPT, Claude, Perplexity, Gemini, Copilot, Grok, DeepSeek, Rufus) can crawl it. Returns the same per-model HTTP / robots.txt verdicts the AthenaHQ web app surfaces in its AI accessibility dialog, plus a plain-text diagnostic log shaped for filing host or CDN support tickets.
Rate limited to 30 requests per minute per organization.
curl --request POST \
--url https://api.athenahq.ai/api/v1/ai-access/check \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"domain": "example.com"
}
'import requests
url = "https://api.athenahq.ai/api/v1/ai-access/check"
payload = { "domain": "example.com" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({domain: 'example.com'})
};
fetch('https://api.athenahq.ai/api/v1/ai-access/check', 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.athenahq.ai/api/v1/ai-access/check",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'domain' => 'example.com'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.athenahq.ai/api/v1/ai-access/check"
payload := strings.NewReader("{\n \"domain\": \"example.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.athenahq.ai/api/v1/ai-access/check")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"domain\": \"example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.athenahq.ai/api/v1/ai-access/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"domain\": \"example.com\"\n}"
response = http.request(request)
puts response.read_body{
"result": {
"domain": "<string>",
"checkedAt": "2023-11-07T05:31:56Z",
"http": {
"chatgpt": {
"conversational": true,
"training": true
},
"claude": {
"conversational": true,
"training": true
},
"perplexity": {
"conversational": true,
"training": true
},
"gemini": {
"conversational": true,
"training": true
},
"copilot": {
"conversational": true,
"training": true
},
"grok": {
"conversational": true,
"training": true
},
"deepseek": {
"conversational": true,
"training": true
},
"rufus": {
"conversational": true,
"training": true
}
},
"robots": {
"chatgpt": {
"conversational": true,
"training": true
},
"claude": {
"conversational": true,
"training": true
},
"perplexity": {
"conversational": true,
"training": true
},
"gemini": {
"conversational": true,
"training": true
},
"copilot": {
"conversational": true,
"training": true
},
"grok": {
"conversational": true,
"training": true
},
"deepseek": {
"conversational": true,
"training": true
},
"rufus": {
"conversational": true,
"training": true
}
},
"hasSitemap": true,
"error": "<string>"
},
"diagnostics": {
"userAgentChecks": {},
"robotsCheck": {
"url": "<string>",
"status": 123,
"finalUrl": "<string>",
"headers": {},
"errorCode": "<string>",
"errorMessage": "<string>",
"durationMs": 123,
"checkedAt": "2023-11-07T05:31:56Z"
}
},
"log": "<string>"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}Body
The domain to probe (with or without protocol).
"example.com"
Response
Successful AI access check.
Successful AI access check response.
Aggregated AI accessibility result. Mirrors the AIAccessibilityResult shape rendered in the AthenaHQ web app's AI accessibility dialog.
Show child attributes
Show child attributes
Per-request diagnostic fingerprint. Useful for filing host or CDN tickets.
Show child attributes
Show child attributes
Plain-text diagnostic log shaped for a host/CDN ticket. Identical to the string the AthenaHQ web app's Copy log button produces.
Was this page helpful?