Get AI readiness test access
/v1/api/sites/{site_id}/ai-readiness/test-accessRead what is needed to allow Crawle's access test: its stable IPv4 and IPv6 addresses, the optional X-Crawle-Test header as metadata (test_header: name, available, sent_by_tests, used_in_normal_crawl, note; never its value), vantage.allowlisted (the customer's allowlist note) and vantage.verification, the provider instructions (instruction_id, provider_id, optional plan_id and plan_label, label, steps of {text, provenance, source}: a provider step cites the official https source url and the read_at date) and docs link, the state and budget of a retest, and probe_page: the one page the access test requests for every bot, its rule and the key pages that can be chosen. The test page's rule says why that page: chosen (the key page the customer chose with set_ai_readiness_probe_page, which always comes first), start_page, most_linked (the inventory has no start page) or fallback (a normal browser could not read the start page in its latest test, so the most linked key page is tested instead).
- Scope
sites:read- Token
- API key or OAuth access token
- Role
- Any workspace member
- MCP tool
get_ai_readiness_test_access- What scopes, tokens and roles mean →
cURL
curl "https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/ai-readiness/test-access?limit=10" \ -H "Authorization: Bearer $CRAWLE_API_KEY"
JavaScript
const response = await fetch("https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/ai-readiness/test-access?limit=10", {
headers: {
Authorization: `Bearer ${process.env.CRAWLE_API_KEY}`,
},
});
const data = await response.json();Python
import os
import requests
response = requests.request(
"GET",
"https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/ai-readiness/test-access?limit=10",
headers={
"Authorization": f"Bearer {os.environ['CRAWLE_API_KEY']}",
},
)
data = response.json()$CRAWLE_API_KEY- is an API key from Settings › API keys.
Response 200: a JSON object. Its fields are not described in the API contract yet, so no example is shown.
Parameters
site_idpath · string (uuid)requiredpart_idquery · string or nullcontrol_idquery · string or nullresult_idquery · string or nullfinding_idquery · string or nullflow_idquery · string or nullpartquery · enum or null- one of "crawling", "agentic"
categoryquery · string or nullstatusquery · enum or null- one of "pass", "warning", "fail", "not_measured", "not_applicable"
unitquery · enum or null- one of "bot_url", "url", "url_class", "protocol", "reach", "flow", "form"
urlquery · string or null- up to 8192 characters
botquery · string or null- up to 128 characters
purposequery · enum or null- one of "training", "search_index", "user_fetch"
groupquery · string or nullsourcequery · enum or null- one of "robots_policy", "crawl_data", "sitemap", "cwv", "protocol", "reach_probe", "lighthouse", "agent_probe", "ax_snapshot"
outcomequery · enum or null- one of "ok", "blocked_for_bot", "challenge", "different_page", "rate_limited", "inconclusive", "rejected_5xx", "not_measured", "not_tested_robots", "flow_not_found"
flowquery · enum or null- one of "home", "search", "form", "checkout"
sincequery · string or nullcursorquery · string or null- up to 2048 characters
snapshot_watermarkquery · string or nullgenerationquery · string or null- up to 19 characters
limitquery · integer- 1–500 · default 100
fromquery · string or nulltoquery · string or nullcontrolquery · string or nullstatequery · enum or null- one of "pass", "warning", "fail", "unmeasured", "not_applicable", "open", "resolved", "in_cc", "missing", "not_observed_yet"
afterquery · string or null- up to 20 characters
Pages with cursor, after, and limit.
Response 200
Returns a JSON object. Its fields are not described in the API contract yet.
Errors
401
- When
- Missing, invalid, or expired token.
403
- When
- The token has none of the accepted scopes (
sites:read).
422
- When
- The request did not match the schema.
detaillists each problem.
429
- When
- Rate limited. Wait for
Retry-Afterseconds.
Generated from the API contract at 7e7039b0b, synced October 30, 2026.