Get run history
const url = 'https://api.overwatch.weareheavy.dev/v1/sites/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/history?limit=90';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/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/history?limit=90' \ --header 'x-api-key: <x-api-key>'Per-run trend metrics for completed runs, ordered oldest → newest — ready
to chart. Two series on independent clocks: runs (crawl runs — broken
links over time) and a11yRuns (runs that scanned accessibility — the
score over time).
Authorizations
Section titled “ Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ”The site’s UUID.
Query Parameters
Section titled “ Query Parameters ”Maximum number of runs per series. Defaults to 90, capped at 365.
Responses
Section titled “ Responses ”Completed runs, oldest first, per series.
object
A single crawl run and its summary metrics.
object
Epoch ms the run started.
Epoch ms the run finished, or null while running.
Distinct broken link targets found in the run.
Distinct source pages that had at least one broken link.
Synthesized 0–100 accessibility score, or null when the run didn’t scan.
Confirmed violations with critical impact.
Internal pages the accessibility scan covered in this run.
Distinct confirmed (page, rule) accessibility violations this run (0 for crawl runs).
Violations present in the previous accessibility run but gone in this one (the “fixed” trend).
Synthesized 0-100 SEO score, or null when the run didn’t extract SEO data.
Pages an SEO snapshot was captured for (at most pages_crawled).
Derived SEO issues at the time the run finalized.
Failure reason if state is failed, otherwise null.
crawl for a broken-link crawl, a11y for a standalone accessibility scan.
A single crawl run and its summary metrics.
object
Epoch ms the run started.
Epoch ms the run finished, or null while running.
Distinct broken link targets found in the run.
Distinct source pages that had at least one broken link.
Synthesized 0–100 accessibility score, or null when the run didn’t scan.
Confirmed violations with critical impact.
Internal pages the accessibility scan covered in this run.
Distinct confirmed (page, rule) accessibility violations this run (0 for crawl runs).
Violations present in the previous accessibility run but gone in this one (the “fixed” trend).
Synthesized 0-100 SEO score, or null when the run didn’t extract SEO data.
Pages an SEO snapshot was captured for (at most pages_crawled).
Derived SEO issues at the time the run finalized.
Failure reason if state is failed, otherwise null.
crawl for a broken-link crawl, a11y for a standalone accessibility scan.
Example
{ "runs": [ { "state": "running", "kind": "crawl" } ], "a11yRuns": [ { "state": "running", "kind": "crawl" } ]}Missing or invalid credentials.
object
A human-readable error message.
Example
{ "error": "invalid api key"}No site with that id is visible to the caller.
object
A human-readable error message.
Example
{ "error": "site not found"}