Developers

Licence and entitlement API

These endpoints are what the WordPress plugin will use to activate, check its entitlement, and download the site's approved fix rules.

Key format

Keys use the prefix AA followed by four groups of four characters. Ambiguous characters (0, O, 1, I, L) are excluded. Keys are case-insensitive.

AA-XXXX-XXXX-XXXX-XXXX

Validate a licence key

POST/api/public/licence/validate

Checks a key's status and entitlements. Pass site_url to also confirm the key belongs to that domain.

Request

curl -X POST https://your-app-domain/api/public/licence/validate \
  -H "Content-Type: application/json" \
  -d '{"key":"AA-XXXX-XXXX-XXXX-XXXX","site_url":"https://example.com"}'

Example response

{
  "valid": true,
  "status": "active",
  "tier": "pro-5",
  "sites_allowed": 5,
  "site_url": "https://example.com",
  "domain_match": true,
  "activated": true
}
200Key active (and domain matches, if given)
400Malformed key or body
403Key revoked or domain mismatch — see error
404Unknown key

Register a site against a key

POST/api/public/licence/register

Called by the plugin on activation. Binds the WordPress install to the key; site_url must match the domain registered in the dashboard (www. is ignored).

Request

curl -X POST https://your-app-domain/api/public/licence/register \
  -H "Content-Type: application/json" \
  -d '{"key":"AA-XXXX-XXXX-XXXX-XXXX","site_url":"https://www.example.com"}'

Example response

{
  "ok": true,
  "site_url": "https://example.com",
  "tier": "pro-5",
  "sites_allowed": 5,
  "activated_at": "2026-01-01T12:00:00.000Z"
}
200Registered (idempotent)
403revoked or domain_mismatch
404Unknown key

Revoke a key

POST/api/public/licence/revoke

Owner-only. Requires the account owner's signed-in session as a Bearer token. Owners can also revoke and reissue keys from the dashboard.

Request

curl -X POST https://your-app-domain/api/public/licence/revoke \
  -H "Authorization: Bearer <owner session token>" \
  -H "Content-Type: application/json" \
  -d '{"key":"AA-XXXX-XXXX-XXXX-XXXX"}'

Example response

{
  "ok": true,
  "status": "revoked"
}
200Revoked
401Missing or invalid owner session
404Key not found for this account

Fetch the active rule set

GET/api/public/licence/rules

Polled by the plugin. Returns the latest published rule-set version for the key's site, filtered to the rule types the account's plan allows. Send the key in the X-Licence-Key header.

Request

curl https://your-app-domain/api/public/licence/rules \
  -H "X-Licence-Key: AA-XXXX-XXXX-XXXX-XXXX"

Example response

{
  "site_url": "https://example.com",
  "tier": "pro-5",
  "version": 4,
  "published_at": "2026-01-01T12:00:00.000Z",
  "rules": [
    {
      "id": "6f1c…",
      "fix_type": "alt_text",
      "selector": "img[src=\"/logo.png\"]",
      "attribute": "alt",
      "value": "Company logo",
      "url_pattern": "*"
    }
  ]
}
200Rule set (may be empty, version 0 if never published)
403Key revoked
404Unknown key

Try validation

Paste a key from your dashboard.