API Documentation
Run website audits, monitor AI visibility, and pull prioritized fixes programmatically. Call the REST API directly, or let Claude and other AI assistants call it for you through the Website Auditor MCP server. Built for IT departments at small-to-medium businesses and solo entrepreneurs.
Use It From Your AI Assistant (MCP)
Every capability below is also exposed through the official Website Auditor MCP server. Connect it to Claude Desktop, Claude Code, or any MCP-capable client and your assistant can run audits, track what changed, benchmark against peers, and generate fixes conversationally.
The MCP server is a thin client over this REST API: it authenticates with the same wa_ API key you create in the admin portal, and enforcement happens server-side. Anything the MCP can do, you can also do directly with curl — same endpoints, same entitlements.
MCP Tools → REST Endpoints
| MCP Tool | Backed By |
|---|---|
| get_ai_visibility, run_audit | GET /api/audit |
| compare_competitors | GET /api/audit (one audit per competitor) |
| get_changes | GET /api/ai-visibility-history |
| track_site / untrack_site | POST / DELETE /api/tracked-domains |
| list_tracked_sites | GET /api/tracked-domains |
| get_monitoring_status | GET /api/monitoring-status |
| get_benchmark | GET /api/benchmark |
| get_recommendations | GET /api/recommendations |
| generate_schema | GET /api/schema |
| get_report | GET /api/report |
Auditing tools work with any valid API key. Monitoring, history, benchmarks, recommendations, schema, and report tools require a Website Auditor Pro subscription — exactly like the Pro endpoints they call.
Authentication
All API requests require an API key in the X-API-Key header. Keys start with wa_.
Getting Your API Key
- Visit /admin_portal and sign in with Google
- Create a new API key — the plaintext key is shown once, copy it immediately
- Send the key in the
X-API-Keyheader on every request - Revoke or rotate keys any time from the portal
Example Request
Rate Limits
5 audits per API key per day. The daily limit applies to /api/audit only — the read endpoints (subscription, history, benchmark, recommendations, schema, report, monitoring) don't consume it, and scheduled weekly re-audits of tracked domains run on a separate server-side budget. Rate limit headers are included in /api/audit responses:
Endpoints
Click an endpoint to expand it. Endpoints marked Pro require an active Website Auditor Pro subscription — free keys receive a 403. Everything else works with any valid API key.
Request
Headers:
No parameters. Works with any valid key — free or Pro — and only ever returns the key owner's own subscription.
Responses
200 OK:
tier is pro for active or trialing subscriptions, otherwise free. A user with no subscription returns status: "none".
Request
Headers:
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
| domain | string | Domain (or URL) whose history to return required |
| since | string | ISO-8601 timestamp; only snapshots at/after it are returned optional |
| limit | integer | Max snapshots, 1–100 optional |
Snapshots accrue automatically — one per completed /api/audit run and one per scheduled weekly re-audit of a tracked domain.
Responses
200 OK:
With fewer than two snapshots the response sets insufficient_history: true and includes a message instead of a fabricated delta.
Request
Headers:
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
| domain | string | Domain (or URL) to benchmark required |
Responses
200 OK:
percentile is null until the domain has an audit on record. The peer set is the latest real (non-simulated) score of every other audited domain.
Request
Headers:
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
| domain | string | Domain (or URL) to get fixes for required |
Responses
200 OK:
404 Not Found — no audit on record:
Request
Headers:
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
| domain | string | Domain (or URL) to generate schema for required |
| type | string | One of Organization, LocalBusiness, Product, FAQPage, auto (default: auto) optional |
Responses
200 OK:
Request
Headers:
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
| domain | string | Domain (or URL) whose latest report to share required |
Responses
200 OK:
Returns 404 if the domain has no completed audit on record yet.
Request
Headers:
No parameters. Returns only your own tracked domains, plus slot accounting against the 5-domain cap.
Responses
200 OK:
Request
Headers:
Body:
cadence is optional; weekly is the only supported value. Enrollment is idempotent — re-enrolling an already-tracked domain returns 200 with already_tracked: true.
Scheduled weekly re-audits run server-side and do not count against your 5-audits-per-day limit.
Responses
201 Created:
409 Conflict — cap reached:
Request
Headers:
Body (or send ?domain= as a query param):
Idempotent: stopping a domain that isn't tracked succeeds with removed: false rather than erroring.
Responses
200 OK:
Request
Headers:
No parameters. For each tracked domain, returns the latest and previous AI-visibility snapshots so you can show the current score and the most recent change.
Responses
200 OK:
Request
No authentication required.
Response
Status: 200 OK
HTTP Status Codes
The API uses standard HTTP status codes to indicate the result of your request.
Admin Portal
Visit /admin_portal to manage your API keys. Sign in with Google.
Portal Features
- Create keys — plaintext shown once at creation, copy immediately
- View keys — creation date and last-used timestamp for each key
- Revoke keys — instantly disable a key that should no longer work
- Rotate keys — revokes the old key and generates a new one
- Usage stats — requests today and total requests per key