REST API

Bearer-token API for Site Audit, AI Visibility, Conversion, and Content Quality. Pro and Business only.

Overview

One key starts audits, polls them, and reads the account that owns the key. Nothing here uses the browser session.

Authentication

Send the key on every request.

Header
export WPAQ_API_KEY="wpaq_..."

"Authorization: Bearer $WPAQ_API_KEY"
  • 401 — missing, invalid, or revoked key.
  • 403 — the account is not on Pro or Business right now. The key is kept. Upgrade and the same key works again.
Example 403
{
  "detail": "Pro or Business plan required. This API key was not revoked, but the account is not on Pro or Business."
}

Rate limits

Hourly caps sit on top of the monthly Site Audit quota. GET polling is not on these caps.

40/hr

POST /api/v1/site-audits per account, and 8/hour per source IP.

300/hr

POST for AI Visibility, Conversion, and Content Quality, per account and per IP, on Pro and Business.

A repeated 429 lengthens the window. Wait, then retry. A monthly Site Audit quota miss is also 429.

Credits and quota

  • Site Audits count against the plan's monthly Site Audit allowance. They do not spend AI credits.
  • AI Visibility, Conversion, and Content Quality cost 10 credits when the hostname is a DNS-verified website on the account, and 20 credits otherwise. Short balance is 402.
  • An unverified Site Audit (including any third-party host) is capped at 25 pages on Pro and 100 pages on Business. DNS verification unlocks the plan's full crawl.
  • Read balances with the quotas and AI usage endpoints below.

Polling

Create returns immediately. Poll GET until the run is finished.

Shell
AUDIT_ID=$(curl -sS -X POST "https://wpaq.com/api/v1/site-audits" \
  -H "Authorization: Bearer $WPAQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}' | jq -r .id)

while true; do
  STATUS=$(curl -sS "https://wpaq.com/api/v1/site-audits/$AUDIT_ID" \
    -H "Authorization: Bearer $WPAQ_API_KEY" | jq -r .status)
  echo "$STATUS"
  case "$STATUS" in
    completed|completed_with_warnings|failed) break ;;
  esac
  sleep 15
done

status is queued, running, completed, completed_with_warnings, or failed. Warnings mean some pages were skipped. Scores stay null until the run finishes. Starting the same host again within 6 hours returns the existing Site Audit (reused_report: true).

Errors

Every error body is {"detail": "human-readable message"}.

400

Invalid URL, bad questionnaire answers, website limit, or DNS TXT not found yet.

401

Missing, invalid, or revoked API key.

402

Not enough AI credits for an AI Visibility, Conversion, or Content Quality run.

403

Account is not on Pro or Business. The key is not deleted.

404

That id is missing or belongs to another account.

409

Site Audit share was requested before the report finished.

429

Hourly rate limit or monthly Site Audit quota.

Example error
{ "detail": "Audit not found" }

Site Audit

Full-depth crawl on Pro and Business. No AI credits.

POST/api/v1/site-audits
Body: url (required), optional crawl_mode (bfs, sitemap_only, url_list) and url_list (max 200, only with url_list). Errors: 400, 429. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/site-audits" \
  -H "Authorization: Bearer $WPAQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","crawl_mode":"bfs"}'
Example response
{
  "id": "b5659908-1c0a-4e2a-9f10-0a1b2c3d4e5f",
  "url": "https://example.com/",
  "hostname": "example.com",
  "website_id": null,
  "website_verified": null,
  "score_delta": null,
  "status": "queued",
  "scan_type": "full",
  "pages_discovered": 0,
  "pages_scanned": 0,
  "pages_failed": 0,
  "overall_score": null,
  "technical_score": null,
  "seo_score": null,
  "performance_score": null,
  "accessibility_score": null,
  "security_score": null,
  "progress": { "step": "queued" },
  "error_message": null,
  "created_at": "2026-10-31T18:00:00Z",
  "completed_at": null,
  "user_id": "7c1e0a00-0000-4000-8000-000000000001",
  "screenshots": [],
  "site_screenshot": null,
  "media_token": "example-media-token",
  "pages": []
}
GET/api/v1/site-audits/{id}
Path: audit id from create. Same JSON as create, with scores filled in when finished. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/site-audits/$AUDIT_ID" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "id": "b5659908-1c0a-4e2a-9f10-0a1b2c3d4e5f",
  "url": "https://example.com/",
  "hostname": "example.com",
  "status": "completed",
  "scan_type": "full",
  "pages_discovered": 12,
  "pages_scanned": 12,
  "pages_failed": 0,
  "overall_score": 91,
  "technical_score": 92,
  "seo_score": 88,
  "performance_score": 95,
  "accessibility_score": 97,
  "security_score": 82,
  "progress": { "step": "done" },
  "error_message": null,
  "created_at": "2026-10-31T18:00:00Z",
  "completed_at": "2026-10-31T18:02:14Z",
  "screenshots": [],
  "site_screenshot": null,
  "pages": []
}
GET/api/v1/site-audits/{id}/progress
Live step, page counts, and queue wait. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/site-audits/$AUDIT_ID/progress" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "id": "b5659908-1c0a-4e2a-9f10-0a1b2c3d4e5f",
  "status": "running",
  "url": "https://example.com/",
  "hostname": "example.com",
  "progress": { "step": "crawling", "pages_scanned": 4 },
  "pages_discovered": 12,
  "pages_scanned": 4,
  "error_message": null,
  "created_at": "2026-10-31T18:00:00Z",
  "queue": null
}
GET/api/v1/site-audits/{id}/findings
List of findings for that audit. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/site-audits/$AUDIT_ID/findings" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "items": [
    {
      "id": "f1a2b3c4-0000-4000-8000-000000000010",
      "check_id": "title_missing",
      "category": "seo",
      "severity": "medium",
      "title": "Missing title",
      "description": "This page has no title element.",
      "technical_details": "",
      "recommendation": "Add a unique title.",
      "evidence": {},
      "difficulty": "medium",
      "impact": "medium",
      "url": "https://example.com/"
    }
  ]
}
GET/api/v1/site-audits/{id}/findings/{finding_id}
One finding. The finding must belong to that audit. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/site-audits/$AUDIT_ID/findings/$FINDING_ID" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "id": "f1a2b3c4-0000-4000-8000-000000000010",
  "check_id": "title_missing",
  "category": "seo",
  "severity": "medium",
  "title": "Missing title",
  "description": "This page has no title element.",
  "technical_details": "",
  "recommendation": "Add a unique title.",
  "evidence": {},
  "difficulty": "medium",
  "impact": "medium",
  "url": "https://example.com/"
}

AI Visibility

Domain-scoped. 10 credits verified, 20 unverified. Create omits the report. GET includes it when you ask after the run exists.

POST/api/v1/ai-visibility-audits
Body: url. Errors: 400, 402, 429. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/ai-visibility-audits" \
  -H "Authorization: Bearer $WPAQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'
Example response
{
  "id": "vis-9f2c0000-0000-4000-8000-000000000020",
  "type": "visibility",
  "url": "https://example.com/",
  "hostname": "example.com",
  "status": "running",
  "website_id": null,
  "website_verified": null,
  "overall_score": null,
  "credits_charged": 20,
  "credits_refunded": false,
  "progress": { "step": "running" },
  "error_message": null,
  "has_screenshot": false
}
GET/api/v1/ai-visibility-audits/{id}
Poll, then read report when status is terminal. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/ai-visibility-audits/$CHECK_ID" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "id": "vis-9f2c0000-0000-4000-8000-000000000020",
  "type": "visibility",
  "url": "https://example.com/",
  "hostname": "example.com",
  "status": "completed",
  "overall_score": 68,
  "credits_charged": 20,
  "credits_refunded": false,
  "has_screenshot": true,
  "report": { "summary": "Example report object. The live payload is the full structured report." }
}

Conversion

Landing-page audit plus questionnaire. Same 10 / 20 credit rule.

GET/api/v1/conversion-audits/questionnaire
Current question ids, options, and which answers are required. No body. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/conversion-audits/questionnaire" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "questions": [
    {
      "id": "primary_goal",
      "prompt": "Primary goal of this page",
      "allow_multiple": true,
      "required": true,
      "allow_other": true,
      "options": [
        { "id": "signup", "label": "Get signups / trials" },
        { "id": "demo", "label": "Book a demo" }
      ]
    }
  ]
}
The live list includes every question, not only primary_goal. Send each required id in answers.
POST/api/v1/conversion-audits
Body: url and answers (map of question id to { "selected": [], "other": "" }). Errors: 400, 402, 429. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/conversion-audits" \
  -H "Authorization: Bearer $WPAQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/pricing","answers":{"primary_goal":{"selected":["signup"],"other":""}}}'
Example response
{
  "id": "con-9f2c0000-0000-4000-8000-000000000030",
  "type": "convert",
  "url": "https://example.com/pricing",
  "hostname": "example.com",
  "status": "running",
  "credits_charged": 20,
  "credits_refunded": false,
  "questionnaire": { "primary_goal": { "selected": ["signup"], "other": "" } },
  "has_screenshot": false
}
GET/api/v1/conversion-audits/{id}
Includes report after the run is stored. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/conversion-audits/$CHECK_ID" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "id": "con-9f2c0000-0000-4000-8000-000000000030",
  "type": "convert",
  "status": "completed",
  "overall_score": 74,
  "credits_charged": 10,
  "website_verified": true,
  "has_screenshot": true,
  "report": { "summary": "Example. The live report is the full structured Conversion Audit." }
}

Content Quality

One page URL. Same 10 / 20 credit rule. No questionnaire.

POST/api/v1/quality-audits
Body: url. Errors: 400, 402, 429. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/quality-audits" \
  -H "Authorization: Bearer $WPAQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/blog/post"}'
Example response
{
  "id": "qua-9f2c0000-0000-4000-8000-000000000040",
  "type": "quality",
  "url": "https://example.com/blog/post",
  "hostname": "example.com",
  "status": "running",
  "credits_charged": 20,
  "credits_refunded": false,
  "has_screenshot": false
}
GET/api/v1/quality-audits/{id}
Includes report on GET. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/quality-audits/$CHECK_ID" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "id": "qua-9f2c0000-0000-4000-8000-000000000040",
  "type": "quality",
  "status": "completed",
  "overall_score": 81,
  "credits_charged": 10,
  "has_screenshot": true,
  "report": { "summary": "Example. The live report is the full structured Content Quality Audit." }
}

Websites

Only websites on the key owner's account. Another account's id is 404.

GET/api/v1/websites
No body. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/websites" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "items": [
    {
      "id": "web-a1b20000-0000-4000-8000-000000000050",
      "url": "https://example.com/",
      "hostname": "example.com",
      "name": "Example",
      "verified": false,
      "health": 91,
      "latest_scan_id": "b5659908-1c0a-4e2a-9f10-0a1b2c3d4e5f"
    }
  ],
  "workspace_role": "owner"
}
POST/api/v1/websites
Body: url (required), optional name and client_tag. Errors: 400 if the URL is rejected or the plan website limit is reached. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/websites" \
  -H "Authorization: Bearer $WPAQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","name":"Example"}'
Example response
{
  "id": "web-a1b20000-0000-4000-8000-000000000050",
  "url": "https://example.com/",
  "hostname": "example.com",
  "name": "Example",
  "verified": false,
  "verification": {
    "txt_value": "wpaq-site-verification=exampleToken",
    "txt_hostnames": ["example.com", "example.com", "_wpaq-verify.example.com"]
  }
}
GET/api/v1/websites/{id}
Detail, latest issues, and audit history for that site. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/websites/$WEBSITE_ID" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "id": "web-a1b20000-0000-4000-8000-000000000050",
  "url": "https://example.com/",
  "hostname": "example.com",
  "name": "Example",
  "verified": true,
  "health": 91,
  "latest_scan_id": "b5659908-1c0a-4e2a-9f10-0a1b2c3d4e5f",
  "issues": [],
  "history": []
}
POST/api/v1/websites/{id}/verify
No body. Checks the DNS TXT record from the create response. 400 if it is not visible yet. Already verified returns already_verified: true. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/websites/$WEBSITE_ID/verify" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "ok": true,
  "already_verified": false,
  "verified": true
}

Usage

Read-only. Does not spend credits.

GET/api/v1/quotas
Plan, website count, Site Audit allowance, and AI credit balance. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/quotas" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "plan": "pro",
  "period": "2026-10",
  "websites": { "used": 2, "limit": 10, "unlimited": false },
  "scans": { "used": 4, "limit": 50, "unlimited": false },
  "ai": { "used": 20, "limit": 200, "remaining": 180 }
}
GET/api/v1/ai/usage
Optional query website_id scopes the calendar and recent events. The balance stays account-wide. Unknown website is 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/ai/usage" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "remaining": 180,
  "used": 20,
  "limit": 200,
  "plan": "pro",
  "period": "2026-10",
  "total_events": 2,
  "events": [
    {
      "created_at": "2026-10-31T18:05:00Z",
      "credits": 10,
      "label": "Example credit event"
    }
  ],
  "days": []
}

History

GET/api/v1/history
Query: type (scan, visibility, convert, quality), website_id, limit (1–200, default 20), offset. Unknown website is 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/history?type=scan&website_id=$WEBSITE_ID&limit=20" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "items": [
    {
      "id": "b5659908-1c0a-4e2a-9f10-0a1b2c3d4e5f",
      "type": "scan",
      "website_id": "web-a1b20000-0000-4000-8000-000000000050",
      "hostname": "example.com",
      "url": "https://example.com/",
      "status": "completed",
      "overall_score": 91,
      "created_at": "2026-10-31T18:00:00Z",
      "completed_at": "2026-10-31T18:02:14Z",
      "pages_scanned": 12
    }
  ],
  "total": 1,
  "limit": 20,
  "offset": 0
}

Share

Create returns share_url. Delete is safe to repeat. The audit must belong to the key owner and be finished.

POST/api/v1/site-audits/{id}/share
Errors: 404, 409 if the report is not ready. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/site-audits/$AUDIT_ID/share" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "shared": true,
  "share_token": "exampleToken",
  "share_url": "https://wpaq.com/share/exampleToken",
  "expires_at": "2026-11-30T18:00:00+00:00"
}
DELETE/api/v1/site-audits/{id}/share
Second call is still 200. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X DELETE "https://wpaq.com/api/v1/site-audits/$AUDIT_ID/share" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{ "ok": true }
POST/api/v1/ai-visibility-audits/{id}/share
Only a completed audit. Errors: 400, 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/ai-visibility-audits/$CHECK_ID/share" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "shared": true,
  "token": "exampleToken",
  "share_url": "https://wpaq.com/share/visibility-audit/exampleToken",
  "path": "/share/visibility-audit/exampleToken"
}
DELETE/api/v1/ai-visibility-audits/{id}/share
Idempotent. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X DELETE "https://wpaq.com/api/v1/ai-visibility-audits/$CHECK_ID/share" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{ "shared": false }
POST/api/v1/conversion-audits/{id}/share
Only a completed audit. Errors: 400, 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/conversion-audits/$CHECK_ID/share" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "shared": true,
  "share_url": "https://wpaq.com/share/conversion-audit/exampleToken",
  "path": "/share/conversion-audit/exampleToken"
}
DELETE/api/v1/conversion-audits/{id}/share
Idempotent. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X DELETE "https://wpaq.com/api/v1/conversion-audits/$CHECK_ID/share" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{ "shared": false }
POST/api/v1/quality-audits/{id}/share
Only a completed audit. Errors: 400, 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/quality-audits/$CHECK_ID/share" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "shared": true,
  "share_url": "https://wpaq.com/share/quality-audit/exampleToken",
  "path": "/share/quality-audit/exampleToken"
}
DELETE/api/v1/quality-audits/{id}/share
Idempotent. Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X DELETE "https://wpaq.com/api/v1/quality-audits/$CHECK_ID/share" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{ "shared": false }

Exports

The file uses the same generator as the dashboard. Business white-label branding is applied on the Site Audit PDF.

PDF is available on any account. Excel, Markdown, and CSV are Pro and Business. An API key is already one of those plans. Site Audit export waits until the run is completed or completed_with_warnings (otherwise 409). The other three wait until completed (otherwise 400). Another account's audit is 404.

AuditPathsContent type
Site AuditGET /api/v1/site-audits/{id}/export.pdf
.xlsx .md .csv
PDF, Excel, Markdown, or CSV
AI VisibilityGET /api/v1/ai-visibility-audits/{id}/export.pdf
.xlsx .md
PDF, Excel, or Markdown
ConversionGET /api/v1/conversion-audits/{id}/export.pdf
.xlsx .md
PDF, Excel, or Markdown
Content QualityGET /api/v1/quality-audits/{id}/export.pdf
.xlsx .md
PDF, Excel, or Markdown
Example
curl -sS -D - -o example.md "https://wpaq.com/api/v1/site-audits/$AUDIT_ID/export.md" \
  -H "Authorization: Bearer $WPAQ_API_KEY"

The body is the file. Content-Disposition carries the filename. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.

Webhooks

Business only. The signing secret is shown once.

Same public HTTPS rule as the dashboard. Private and loopback addresses are rejected. Delivery is one POST with an 8 second timeout and no retry. Event names and the payload are on the Webhooks page.

POST/api/v1/webhooks
Body url and optional events. Omitted events default to ["scan.completed"]. Errors: 400, 403 on Pro. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/webhooks" \
  -H "Authorization: Bearer $WPAQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/hooks/wpaq","events":["scan.completed","visibility.completed"]}'
Example response
{
  "id": "hook_example",
  "url": "https://example.com/hooks/wpaq",
  "secret": "shown-once",
  "events": ["scan.completed", "visibility.completed"],
  "message": "Store this secret securely; it is shown once."
}
GET/api/v1/webhooks
Lists endpoints. The secret is not included. Errors: 403 on Pro. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS "https://wpaq.com/api/v1/webhooks" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{
  "items": [
    {
      "id": "hook_example",
      "url": "https://example.com/hooks/wpaq",
      "events": ["scan.completed"],
      "enabled": true
    }
  ]
}
POST/api/v1/webhooks/{id}/test
Sends one signed sample of the first subscribed event. Errors: 400, 404, 502. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X POST "https://wpaq.com/api/v1/webhooks/$HOOK_ID/test" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{ "ok": true, "event": "scan.completed" }
DELETE/api/v1/webhooks/{id}
Errors: 404. Also 401 (bad key) and 403 (account is not Pro or Business). See Errors.
Example
curl -sS -X DELETE "https://wpaq.com/api/v1/webhooks/$HOOK_ID" \
  -H "Authorization: Bearer $WPAQ_API_KEY"
Example response
{ "ok": true }

Not in this API

  • Screenshot files
  • Per-finding AI explanations and Conversion visual mockups
  • Compare, re-audit, score history, monitoring, and page exclusions
  • Slack, team, branding settings, key management, and billing

Those stay on the signed-in dashboard. A Bearer token on a session-only route is 401.

GitHub Action

The public Action starts a Site Audit and polls it.

Workflow step
- uses: KushalAzza/wpaq-public/actions/scan@v1
  with:
    api-key: ${{ secrets.WPAQ_API_KEY }}
    url: https://example.com
    min-score: "70"

Source: KushalAzza/wpaq-public/actions/scan. It only starts a Site Audit.

REST API · Support · WPAQ.com