Get the all-sites overview
const url = 'https://api.overwatch.weareheavy.dev/v1/sites/overview';const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.overwatch.weareheavy.dev/v1/sites/overview \ --header 'x-api-key: <x-api-key>'Every visible site with its last two completed crawl runs (for deltas) and its uptime-monitor status counts, plus the organization’s monitor quota — the all-sites dashboard payload in one round trip. The latest accessibility score is stitched onto each run even though the a11y scan runs on its own clock.
Authorizations
Section titled “ Authorizations ”Responses
Section titled “ Responses ”Per-site overviews plus the monitor quota.
object
One site’s overview-card payload.
object
A monitored site, including its per-app toggles.
object
The owning organization (tenant) id.
The hostname derived from root_url; the crawl whitelist.
1 if the site is actively scheduled, 0 if disabled.
Epoch ms of the last run, or null.
Epoch ms of the next scheduled run, or null.
Epoch ms the site was registered.
1 when the Broken Links app is installed. The shared crawl runs when any of it, the Accessibility app, or the SEO app is on.
1 when the Accessibility app is installed.
The accessibility scan’s own cadence; null falls back to cadence_minutes.
Epoch ms the next standalone accessibility scan is due, or null.
1 when the Performance app (CrUX sync + regression alerts) is installed.
1 when the Uptime app is installed; 0 stops probing but keeps monitors.
1 when the SEO app is installed (on-page checks extracted during the crawl).
CrUX sync state: null = never checked, ok = data, no-data = not in the dataset.
Epoch ms the CrUX sync last ran for this site.
JSON-encoded array of glob patterns for internal paths never crawled.
JSON-encoded array of query-parameter names dropped before crawling.
The site’s uptime monitors, counted by current status.
object
The organization’s pooled monitor allowance.
object
Monitors currently configured across the organization.
Monitors included in the subscription (2 per site, unless operator-overridden).
Example
{ "sites": [ { "site": { "enabled": 0, "scanner_enabled": 0, "a11y_enabled": 0, "performance_enabled": 0, "uptime_enabled": 0, "seo_enabled": 0, "exclude_paths": "[\"/drafts/*\"]", "strip_params": "[\"utm_source\"]" } } ]}Missing or invalid credentials.
object
A human-readable error message.
Example
{ "error": "invalid api key"}