Skip to content

List sites

GET
/v1/sites
curl --request GET \
--url https://api.overwatch.weareheavy.dev/v1/sites \
--header 'x-api-key: <x-api-key>'

List every site the caller can see, oldest first, together with the organization’s site quota. Members with a per-site allowlist (and site-scoped API keys) only see their granted sites.

The organization’s sites and site quota.

Media typeapplication/json
object
sites
required
Array<object>

A monitored site, including its per-app toggles.

object
id
required
string format: uuid
tenant_id
required

The owning organization (tenant) id.

string
hostname
required

The hostname derived from root_url; the crawl whitelist.

string
root_url
required
string format: uri
cadence_minutes
required
integer
max_pages
required
integer
max_concurrency
required
integer
enabled
required

1 if the site is actively scheduled, 0 if disabled.

integer
Allowed values: 0 1
last_run_at
required

Epoch ms of the last run, or null.

integer | null
next_run_at
required

Epoch ms of the next scheduled run, or null.

integer | null
created_at
required

Epoch ms the site was registered.

integer
scanner_enabled
required

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.

integer
Allowed values: 0 1
a11y_enabled
required

1 when the Accessibility app is installed.

integer
Allowed values: 0 1
a11y_cadence_minutes
required

The accessibility scan’s own cadence; null falls back to cadence_minutes.

integer | null
a11y_next_run_at
required

Epoch ms the next standalone accessibility scan is due, or null.

integer | null
performance_enabled
required

1 when the Performance app (CrUX sync + regression alerts) is installed.

integer
Allowed values: 0 1
uptime_enabled
required

1 when the Uptime app is installed; 0 stops probing but keeps monitors.

integer
Allowed values: 0 1
seo_enabled
required

1 when the SEO app is installed (on-page checks extracted during the crawl).

integer
Allowed values: 0 1
crux_status

CrUX sync state: null = never checked, ok = data, no-data = not in the dataset.

string | null
crux_checked_at

Epoch ms the CrUX sync last ran for this site.

integer | null
exclude_paths
required

JSON-encoded array of glob patterns for internal paths never crawled.

string
strip_params
required

JSON-encoded array of query-parameter names dropped before crawling.

string
quota
required

The organization’s site allowance (BILLING.md model).

object
count
required

Sites currently registered.

integer
included
required

Sites included in the base subscription.

integer
overageEnabled
required

Whether the account has opted in to overage billing. With it off, registration past the included count is refused.

boolean
Example
{
"sites": [
{
"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.

Media typeapplication/json
object
error
required

A human-readable error message.

string
Example
{
"error": "invalid api key"
}