AXRAY

Developers

CLI and JSON API

The same scoring engine in three places: this website, your terminal and your pipeline.

Command line

No install, no account, no key.

npx axray example.com
npx axray example.com/pricing --verbose
npx axray example.com --probe          # also fetch as real AI crawler user-agents
npx axray example.com --crawl 50       # crawl the site
npx axray example.com --json > ax.json

Gate a deploy

--min exits non-zero below the threshold, which is all a CI step needs.

# .github/workflows/ax.yml
- name: Agent Experience check
  run: npx axray "${{ env.DEPLOY_URL }}" --min 70

JSON API

Available on Team and Agency plans. Authenticate with a bearer token from your dashboard.

POST /api/v1/scan

curl -s https://axray.online/api/v1/scan \
  -H "authorization: Bearer $AXRAY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"url":"example.com","probeAgents":false}'

Returns the complete ScanResult: score, grade, gates, pillars, every check and the ordered fix list.

GET /api/v1/report/:id

Fetch a previously produced report as JSON. Public reports need no key.

POST /api/v1/crawl

curl -s https://axray.online/api/v1/crawl \
  -H "authorization: Bearer $AXRAY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"origin":"example.com","maxPages":50}'

Returns a crawl id immediately. Poll GET /api/v1/crawl/:id until status is done.

GET /api/v1/index

The public AX Index: best known score per host. No key required.

Errors and limits

  • 400 — the URL is malformed, private or unsupported. The message says which.
  • 401 — missing or unknown API key.
  • 402 — your plan does not include this endpoint.
  • 429 — quota exhausted. retry_after tells you when the window resets.

Machine-readable schema: /openapi.json.

Use it as a library

import { scan } from '@axray/core';

const result = await scan('example.com');
console.log(result.score, result.priorities[0].title);

Zero runtime dependencies. Node 22.6 or newer.