# Web Pages

> Canonical HTML version: https://rocketvalidator.com/docs/api-v2/web_pages
> Attribution: Rocket Validator (https://rocketvalidator.com)
> License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

A Web Page represents an HTML web page that has been found by the scraper, and is associated to a Report.

## Attributes

<dl>
  <dt>ID</dt>
  <dd>Unique ID for the Web Page.</dd>

  <dt>URL</dt>
  <dd>URL of the Web Page.</dd>

  <dt>Linked From</dt>
  <dd>URL of the web page that links to this web page. That is, where the Spider found first about this Web Page.</dd>

  <dt>W3C Validator Check</dt>
  <dd>Holds the result of the W3C Validator check on that web page, if it was enabled. Includes the number of <code>errors</code> and <code>warnings</code>, and the <code>status</code> of the check.</dd>

  <dt>Axe Check</dt>
  <dd>Holds the result of the Axe Core check on that web page, if it was enabled.
  Includes the number of Axe Core <code>errors</code> and <code>warnings</code>. Also includes the number of issues per each <code>severity</code> level (<code>minor</code>, <code>moderate</code>, <code>serious</code> and <code>critical</code>), and the <code>status</code> of the check. Until the page is checked, it holds only the <code>status</code>.</dd>

  <dt>AccessLint Check</dt>
  <dd>Holds the result of the AccessLint Core check on that web page, if it was enabled.
  Includes the number of AccessLint Core <code>errors</code> and <code>warnings</code>. Also includes the number of issues per each <code>severity</code> level (<code>minor</code>, <code>moderate</code>, <code>serious</code> and <code>critical</code>), and the <code>status</code> of the check. Until the page is checked, it holds only the <code>status</code>.</dd>

  <dt>Status</dt>
  <dd>Checking status for the web page, depending on the status of the checks enabled for it (W3C Validator, Axe Core and AccessLint Core). Each check is <code>pending</code>, <code>checked</code>, <code>failed</code> or <code>skipped</code>. A check is skipped when the account runs out of credits, or its plan no longer includes that check, before the page is checked. The web page status is:
   <ul>
     <li><code>pending</code> if all checks are <code>pending</code>.</li>
     <li><code>checking</code> if some checks are <code>pending</code> and the others are <code>checked</code> or <code>skipped</code>.</li>
     <li><code>failed</code> if any check is <code>failed</code>.</li>
     <li><code>checked</code> if all checks are <code>checked</code>.</li>
     <li><code>skipped</code> if all checks have finished, none <code>failed</code> and at least one is <code>skipped</code>.</li>
    </ul>
  </dd>

  <dt>Inserted At</dt>
  <dd>Timestamp when the web page was created.</dd>

  <dt>Updated At</dt>
  <dd>Timestamp when the web page was last updated.</dd>

  <dt>Last Checked At</dt>
  <dd>Timestamp when the web page was last checked.</dd>
</dl>

## Relationships

<dl>
  <dt>Report</dt>
  <dd>The Report that this Web Page belongs to.</dd>

  <dt>W3C Validator issues</dt>
  <dd>The W3C Validator issues found on this Web Page, if the W3C Validator check was enabled.</dd>

  <dt>Axe issues</dt>
  <dd>The Axe Core issues found on this Web Page, if the Axe Core check was enabled.</dd>

  <dt>Axe manual reviews</dt>
  <dd>The Axe Core manual reviews found on this Web Page, if the Axe Core check was enabled and the report stores manual reviews.</dd>

  <dt>AccessLint issues</dt>
  <dd>The AccessLint Core issues found on this Web Page, if the AccessLint Core check was enabled.</dd>

  <dt>Raw W3C Validator Check</dt>
  <dd>The raw W3C Validator check for this Web Page, if the raw W3C Validator check option was enabled on the report.</dd>

  <dt>Raw Axe Check</dt>
  <dd>The raw Axe Core check for this Web Page, if the raw Axe Core check option was enabled on the report.</dd>

  <dt>Raw AccessLint Check</dt>
  <dd>The raw AccessLint Core check for this Web Page, if the raw AccessLint Core check option was enabled on the report.</dd>
</dl>

When an engine or one of its options is off, the response leaves out the relationships that depend on it.

## Example


> **Example: Web Page example**
>
> ```json
> {
>   "data": {
>     "attributes": {
>       "accesslint_check": {
>         "errors": 6,
>         "severity": {
>           "critical": 1,
>           "minor": 0,
>           "moderate": 0,
>           "serious": 5,
>           "total": {
>             "errors": 6,
>             "total": 6,
>             "warnings": 0
>           }
>         },
>         "status": "checked",
>         "warnings": 0
>       },
>       "axe_check": {
>         "errors": 5,
>         "severity": {
>           "critical": 0,
>           "minor": 0,
>           "moderate": 0,
>           "serious": 5,
>           "total": {
>             "errors": 5,
>             "total": 5,
>             "warnings": 0
>           }
>         },
>         "status": "checked",
>         "warnings": 0
>       },
>       "inserted_at": "2026-10-06T13:54:31",
>       "last_checked_at": "2026-10-06T13:54:39",
>       "linked_from": "https://dummy.rocketvalidator.com",
>       "status": "checked",
>       "updated_at": "2026-10-06T13:54:39",
>       "url": "https://dummy.rocketvalidator.com/about/",
>       "w3c_validator_check": {
>         "errors": 2,
>         "status": "checked",
>         "warnings": 14
>       }
>     },
>     "id": "8683545",
>     "relationships": {
>       "accesslint_issues": {
>         "links": {
>           "related": "https://rocketvalidator.com/api/v2/reports/2455a63a-7e16-4cbf-8455-6c9a88195142/web_pages/8683545/accesslint_issues"
>         }
>       },
>       "axe_issues": {
>         "links": {
>           "related": "https://rocketvalidator.com/api/v2/reports/2455a63a-7e16-4cbf-8455-6c9a88195142/web_pages/8683545/axe_issues"
>         }
>       },
>       "axe_manual_reviews": {
>         "links": {
>           "related": "https://rocketvalidator.com/api/v2/reports/2455a63a-7e16-4cbf-8455-6c9a88195142/web_pages/8683545/axe_manual_reviews"
>         }
>       },
>       "raw_axe_check": {
>         "links": {
>           "related": "https://rocketvalidator.com/api/v2/reports/2455a63a-7e16-4cbf-8455-6c9a88195142/web_pages/8683545/raw_axe_check"
>         }
>       },
>       "raw_w3c_validator_check": {
>         "links": {
>           "related": "https://rocketvalidator.com/api/v2/reports/2455a63a-7e16-4cbf-8455-6c9a88195142/web_pages/8683545/raw_w3c_validator_check"
>         }
>       },
>       "report": {
>         "links": {
>           "related": "https://rocketvalidator.com/api/v2/reports/2455a63a-7e16-4cbf-8455-6c9a88195142"
>         }
>       },
>       "w3c_validator_issues": {
>         "links": {
>           "related": "https://rocketvalidator.com/api/v2/reports/2455a63a-7e16-4cbf-8455-6c9a88195142/web_pages/8683545/w3c_validator_issues"
>         }
>       }
>     },
>     "type": "web_page"
>   },
>   "jsonapi": {
>     "version": "1.0"
>   }
> }
> ```

## List Web Pages on a Report

To list the web pages on a Report, send a `GET` request to `/api/v2/reports/$REPORT_ID/web_pages`.

> `GET /api/v2/reports/$REPORT_ID/web_pages`

### Filtering by URL

To include only the web pages for a given `url`, use the `filter[url]` option.

> `GET /api/v2/reports/$REPORT_ID/web_pages?filter[url]=about`

### Filtering by W3C Validator issue

To include only the web pages containing a given W3C Validator issue, pass the Common W3C Validator issue ID via the `filter[common_w3c_validator_issue_id]` option.

> `GET /api/v2/reports/$REPORT_ID/web_pages?filter[common_w3c_validator_issue_id]=$COMMON_W3C_VALIDATOR_ISSUE_ID`

### Filtering by Axe issue

To include only the web pages containing a given Axe Core issue, pass its rule ID via the `filter[common_axe_issue_id]` option.

> `GET /api/v2/reports/$REPORT_ID/web_pages?filter[common_axe_issue_id]=color-contrast`

### Filtering by Axe manual review

To include only the web pages containing a given Axe Core manual review, pass its rule ID via the `filter[common_axe_manual_review_id]` option.

> `GET /api/v2/reports/$REPORT_ID/web_pages?filter[common_axe_manual_review_id]=color-contrast`

### Filtering by AccessLint issue

To include only the web pages containing a given AccessLint Core issue, pass the canonical Common AccessLint rule ID (for example, `distinguishable/color-contrast`, including its slash) via the `filter[common_accesslint_issue_id]` option.

> `GET /api/v2/reports/$REPORT_ID/web_pages?filter[common_accesslint_issue_id]=$COMMON_ACCESSLINT_ISSUE_ID`

You can combine any of these filters with `filter[url]`.

An unknown W3C Validator issue ID or AccessLint issue ID returns `404 Not Found`. An unknown Axe issue or manual review rule ID returns an empty list. A filter value that isn't a single ID, such as an array, counts as an unknown ID.

### Sorting web pages

By default the list of web pages is sorted by URL. To change the order, set the `sort` parameter to one of these attributes followed by a direction, `-asc` for ascending or `-desc` for descending, as you would when [sorting reports](https://rocketvalidator.com/docs/api-v2/reports#sorting-reports).

<dl>
  <dt>url</dt>
  <dd>URL</dd>

  <dt>w3c_validator_issues</dt>
  <dd>Number of W3C Validator issues (errors + warnings)</dd>

  <dt>axe_issues</dt>
  <dd>Number of Axe Core issues (errors + warnings)</dd>

  <dt>accesslint_issues</dt>
  <dd>Number of AccessLint Core issues (errors + warnings)</dd>

  <dt>date</dt>
  <dd>Time of the last update (<code>updated_at</code>)</dd>
</dl>

For example, to list the pages with the most Axe Core issues first:

> `GET /api/v2/reports/$REPORT_ID/web_pages?sort=axe_issues-desc`

Web pages can't be sorted by errors or warnings alone, and any other `sort` value keeps the default order. When you sort by W3C Validator or Axe Core issues, pages that have no counts for that engine yet, such as pages still waiting for their check, come last in ascending order and first in descending order. AccessLint Core counts start at 0, so pages still waiting for their AccessLint Core check sort with the pages that have no AccessLint Core issues. A list filtered by an issue is always sorted by URL, whatever the `sort` value.

## Retrieve a Web Page

To show an individual Web Page, send a `GET` request to `/api/v2/reports/$REPORT_ID/web_pages/$WEBPAGE_ID`.

> `GET /api/v2/reports/$REPORT_ID/web_pages/$WEBPAGE_ID`

## Recheck a Web Page

To re-check a web page, send a `PATCH` request to `/api/v2/reports/$REPORT_ID/web_pages/$WEBPAGE_ID` with a payload to set the `status` to `pending`. Any other payload will be rejected.


> **Example: PATCH /api/v2/reports/$REPORT_ID/web_pages/$WEBPAGE_ID**
>
> ```json
> {
>   "data": {
>     "attributes": {
>       "status": "pending"
>     }
>   }
> }
> ```

## Delete a Web Page

Deleting web pages from a report is a Pro feature. It removes the web page, and updates the excluded URLs list for that report. If the report has no more web pages left, it will itself be deleted as well.

To delete an individual Web Page from a report, send a `DELETE` request to `/api/v2/reports/$REPORT_ID/web_pages/$WEBPAGE_ID`.

> `DELETE /api/v2/reports/$REPORT_ID/web_pages/$WEBPAGE_ID`
