{"openapi":"3.1.0","info":{"title":"AXRAY API","version":"1.0.0","description":"Score URLs for Agent Experience. The same engine that powers the website and the npx CLI.","contact":{"email":"hello@axray.online","url":"https://axray.online/contact"},"license":{"name":"Commercial","url":"https://axray.online/terms"}},"servers":[{"url":"https://axray.online/api/v1"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key from your AXRAY dashboard."}}},"paths":{"/scan":{"post":{"operationId":"scanUrl","summary":"Scan a single URL and return the full report.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","example":"example.com/pricing"},"probeAgents":{"type":"boolean","default":false}}}}}},"responses":{"200":{"description":"The complete scan result."},"400":{"description":"The URL is malformed, private or unsupported."},"401":{"description":"Missing or unknown API key."},"402":{"description":"Your plan does not include API access."},"429":{"description":"Quota exhausted."}}}},"/report/{id}":{"get":{"operationId":"getReport","summary":"Fetch a stored report as JSON.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The scan result."},"404":{"description":"Not found."}}}},"/crawl":{"post":{"operationId":"startCrawl","summary":"Start a whole-site crawl. Returns immediately with a crawl id.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["origin"],"properties":{"origin":{"type":"string"},"maxPages":{"type":"integer","default":20}}}}}},"responses":{"202":{"description":"Crawl accepted."}}}},"/crawl/{id}":{"get":{"operationId":"getCrawl","summary":"Poll a crawl until status is done.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Crawl status and, when finished, the result."}}}},"/index":{"get":{"operationId":"getIndex","summary":"The public AX Index. No authentication required.","responses":{"200":{"description":"Ranked hosts with their best known score."}}}}}}