---
title: Manage broken links monitors
source: https://docs.newrelic.com/docs/apis/nerdgraph/examples/synthetics-api/broken-links-monitor
---

New Relic allows you use NerdGraph to create [broken links monitors](https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/using-monitors/add-edit-monitors). Broken links monitors check for broken links on a webpage by scanning all links and reporting any that return unsuccessful HTTP status codes. This tutorial provides examples of how to use the NerdGraph API to automate the creation of broken links monitors.

## Create a broken links monitor [#create-broken-links]

You can create a broken links monitor using the `syntheticsCreateBrokenLinksMonitor` mutation. This mutation allows you to set up monitoring for broken links on any webpage.

### Input parameters

| Parameter                  | Data Type | Is it Required? | Description                                                                                                                                                                                                                       |
| -------------------------- | --------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `accountId`                | Integer   | Yes             | Your New Relic [account ID](https://docs.newrelic.com/docs/accounts/accounts-billing/account-structure/account-id) where the monitor will be created.                                                                             |
| `monitor.locations.public` | Array     | Yes             | Array of [public location](https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/using-monitors/add-edit-monitors/#setting-location) identifiers where the monitor will run checks (e.g., `["US_EAST_1", "US_WEST_1"]`). |
| `monitor.name`             | String    | Yes             | The display name for your broken links monitor.                                                                                                                                                                                   |
| `monitor.period`           | Enum      | Yes             | How often the monitor runs. Options: `EVERY_MINUTE`, `EVERY_5_MINUTES`, `EVERY_10_MINUTES`, `EVERY_15_MINUTES`, `EVERY_30_MINUTES`, `EVERY_HOUR`, `EVERY_6_HOURS`, `EVERY_12_HOURS`, `EVERY_DAY`.                                 |
| `monitor.status`           | Enum      | Yes             | The monitor status. Options: `ENABLED` (monitor is active and performing checks), `DISABLED` (monitor is inactive).                                                                                                               |
| `monitor.uri`              | String    | Yes             | The URI of the webpage to scan for broken links (e.g., `https://example.com`).                                                                                                                                                    |
| `monitor.apdexTarget`      | Float     | No              | The monitor's Apdex target in seconds, used to populate SLA reports. Defaults to 7.0 seconds.                                                                                                                                     |
| `monitor.tags`             | Object    | No              | Tags to organize and filter monitors. Each tag has a `key` and `values` property.                                                                                                                                                 |

### Sample request

```graphql
mutation {
  syntheticsCreateBrokenLinksMonitor(
    accountId: ACCOUNT_ID
    monitor: {
      locations: { public: ["LOCATION_1", "LOCATION_2"] }
      name: "YOUR_MONITOR_NAME"
      period: PERIOD
      status: STATUS
      apdexTarget: APDEX_TARGET
      uri: "MONITOR_URI"
      tags: { key: "YOUR_TAG_NAME", values: "TAG_VALUE" }
    }
  ) {
    errors {
      description
      type
    }
  }
}
```

### Sample response

A successful response returns `null` for errors:

```json
{
  "data": {
    "syntheticsCreateBrokenLinksMonitor": {
      "errors": null
    }
  }
}
```

If there are any issues creating the monitor, the `errors` array will contain objects with `description` and `type` fields explaining what went wrong.

## Update a broken links monitor [#update-broken-links]

You can update an existing broken links monitor using the `syntheticsUpdateBrokenLinksMonitor` mutation. This allows you to modify the configuration of a broken links monitor that has already been created.

### Input parameters

| Parameter                  | Data Type | Is it Required? | Description                                                                                                                                                                                                                       |
| -------------------------- | --------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `guid`                     | String    | Yes             | The unique entity [GUID](https://docs.newrelic.com/docs/apis/nerdgraph/examples/synthetics-api/query-synthetics-data#query-monitors) of the monitor you want to update.                                                           |
| `monitor.locations.public` | Array     | No              | Array of [public location](https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/using-monitors/add-edit-monitors/#setting-location) identifiers where the monitor will run checks (e.g., `["US_EAST_1", "US_WEST_1"]`). |
| `monitor.name`             | String    | No              | The updated display name for your broken links monitor.                                                                                                                                                                           |
| `monitor.period`           | Enum      | No              | How often the monitor runs. Options: `EVERY_MINUTE`, `EVERY_5_MINUTES`, `EVERY_10_MINUTES`, `EVERY_15_MINUTES`, `EVERY_30_MINUTES`, `EVERY_HOUR`, `EVERY_6_HOURS`, `EVERY_12_HOURS`, `EVERY_DAY`.                                 |
| `monitor.status`           | Enum      | No              | The monitor status. Options: `ENABLED` (monitor is active and performing checks), `DISABLED` (monitor is inactive).                                                                                                               |
| `monitor.uri`              | String    | No              | The URI of the webpage to scan for broken links (e.g., `https://example.com`).                                                                                                                                                    |
| `monitor.apdexTarget`      | Float     | No              | The monitor's Apdex target in seconds, used to populate SLA reports. Defaults to 7.0 seconds.                                                                                                                                     |
| `monitor.tags`             | Object    | No              | Tags to organize and filter monitors. Each tag has a `key` and `values` property.                                                                                                                                                 |

### Sample request

```graphql
mutation {
  syntheticsUpdateBrokenLinksMonitor(
    guid: ENTITY_GUID
    monitor: {
      locations: { public: ["LOCATION_1", "LOCATION_2"] }
      name: "YOUR_MONITOR_NAME"
      period: PERIOD
      status: STATUS
      apdexTarget: APDEX_TARGET
      uri: "MONITOR_URI"
      tags: {
        key: "YOUR_TAG_NAME",
        values: "TAG_VALUE"
      }
    }
  ) {
    errors {
      description
      type
    }
  }
}
```

### Sample response

A successful response returns `null` for errors:

```json
{
  "data": {
    "syntheticsUpdateBrokenLinksMonitor": {
      "errors": null
    }
  }
}
```

If there are any issues updating the monitor, the `errors` array will contain objects with `description` and `type` fields explaining what went wrong.

## Delete a broken links monitor [#delete-monitor]

When a broken links monitor is no longer needed, you can permanently remove it using the `syntheticsDeleteMonitor` mutation.

To delete a monitor, refer to the [Delete Synthetic monitor](https://docs.newrelic.com/docs/apis/nerdgraph/examples/synthetics-api/ping-monitor/#delete-monitor) section.

## Query broken links monitors [#query-broken-links-monitors]

Use NerdGraph to retrieve metadata, map IDs, or check the status of your broken links monitors.

For more information, refer to:

-   [Query all monitors](https://docs.newrelic.com/docs/apis/nerdgraph/examples/synthetics-api/query-synthetics-data#query-monitors): To list all synthetic monitors and their configurations.
-   [Map monitor ID to entity GUID](https://docs.newrelic.com/docs/apis/nerdgraph/examples/synthetics-api/query-synthetics-data#query-guid-mapping): To migrate legacy monitor IDs to entity GUIDs.
-   [Runtime upgrade status](https://docs.newrelic.com/docs/apis/nerdgraph/examples/synthetics-api/query-synthetics-data#query-runtime-upgrade-all): To check if your monitors are ready for the latest runtime upgrades.

To view complete list of query examples, refer to the [Query synthetics data](https://docs.newrelic.com/docs/apis/nerdgraph/examples/synthetics-api/query-synthetics-data) document.
