For AI agents: A markdown version of this page is available at https://dnd37xeb23o8n.cloudfront.net/jen.gilbert/astro-base/api/latest/monitors/validate-an-existing-monitor.md. A documentation index is available at /llms.txt.
Language
Datadog site

Validate an existing monitor

POSThttps://api.datadoghq.com/api/v1/monitor/{monitor_id}/validatehttps://api.us3.datadoghq.com/api/v1/monitor/{monitor_id}/validatehttps://api.us5.datadoghq.com/api/v1/monitor/{monitor_id}/validatehttps://api.datadoghq.eu/api/v1/monitor/{monitor_id}/validatehttps://api.ap1.datadoghq.com/api/v1/monitor/{monitor_id}/validatehttps://api.ap2.datadoghq.com/api/v1/monitor/{monitor_id}/validatehttps://api.uk1.datadoghq.com/api/v1/monitor/{monitor_id}/validatehttps://api.ddog-gov.com/api/v1/monitor/{monitor_id}/validatehttps://api.us2.ddog-gov.com/api/v1/monitor/{monitor_id}/validate

Overview

Validate the monitor provided in the request.

Note: Log monitors require an unscoped App Key and logs_read_data permission.

This endpoint requires the monitors_read permission.

OAuth apps require the monitors_read authorization scope to access this endpoint.

Arguments

Path Parameters

Name
Type
Description
monitor_id [required]
integer

The ID of the monitor

Request

Body Data (required)

Monitor request object

Field
Type
Description
assets
[object]

The list of monitor assets tied to a monitor, which represents key links for users to take action on monitor alerts (for example, runbooks).

draft_status
enum

Indicates whether the monitor is in a draft or published state.

draft: The monitor appears as Draft and does not send notifications. published: The monitor is active and evaluates conditions and notify as configured.

This field is in preview. The draft value is only available to customers with the feature enabled.

Default: published
Allowed enum values: draft, published
matching_downtimes
[object]

A list of active v1 downtimes that match this monitor.

message
string

A message to include with notifications for this monitor.

name
string

The monitor name.

options
object

List of options associated with your monitor.

priority
int64

Integer from 1 (high) to 5 (low) indicating alert severity.

query [required]
string

The monitor query.

restricted_roles
[string]

A list of unique role identifiers to define which roles are allowed to edit the monitor. The unique identifiers for all roles can be pulled from the Roles API and are located in the data.id field. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. You can use the Restriction Policies API to manage write authorization for individual monitors by teams and users, in addition to roles.

tags
[string]

Tags associated to your monitor.

type [required]
enum

The type of the monitor. For more information about type, see the monitor options docs.

Allowed enum values: composite, event alert, log alert, metric alert, process alert, query alert, rum alert, service check, synthetics alert, trace-analytics alert
Show 13 moreslo alert, event-v2 alert, audit alert, ci-pipelines alert, ci-tests alert, error-tracking alert, database-monitoring alert, network-performance alert, cost alert, data-quality alert, network-path alert, data-jobs alert, llm-observability alert

Response

OK

No response body

Code Example

Validate an existing monitor returns "OK" response
# Path parameters
export monitor_id="666486743"

# Set your Datadog site and credentials
export DD_SITE="datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

curl -X POST "https://api.${DD_SITE}/api/v1/monitor/${monitor_id}/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "name": "Example-Monitor",
  "type": "log alert",
  "query": "logs(\"service:foo AND type:error\").index(\"main\").rollup(\"count\").by(\"source\").last(\"5m\") > 2",
  "message": "some message Notify: @hipchat-channel",
  "tags": [
    "test:examplemonitor",
    "env:ci"
  ],
  "priority": 3,
  "options": {
    "enable_logs_sample": true,
    "escalation_message": "the situation has escalated",
    "evaluation_delay": 700,
    "include_tags": true,
    "locked": false,
    "new_host_delay": 600,
    "no_data_timeframe": null,
    "notify_audit": false,
    "notify_no_data": false,
    "on_missing_data": "show_and_notify_no_data",
    "notification_preset_name": "hide_handles",
    "renotify_interval": 60,
    "require_full_window": true,
    "timeout_h": 24,
    "thresholds": {
      "critical": 2,
      "warning": 1
    }
  }
}
EOF
# Path parameters
export monitor_id="666486743"

# Set your Datadog site and credentials
export DD_SITE="us3.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

curl -X POST "https://api.${DD_SITE}/api/v1/monitor/${monitor_id}/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "name": "Example-Monitor",
  "type": "log alert",
  "query": "logs(\"service:foo AND type:error\").index(\"main\").rollup(\"count\").by(\"source\").last(\"5m\") > 2",
  "message": "some message Notify: @hipchat-channel",
  "tags": [
    "test:examplemonitor",
    "env:ci"
  ],
  "priority": 3,
  "options": {
    "enable_logs_sample": true,
    "escalation_message": "the situation has escalated",
    "evaluation_delay": 700,
    "include_tags": true,
    "locked": false,
    "new_host_delay": 600,
    "no_data_timeframe": null,
    "notify_audit": false,
    "notify_no_data": false,
    "on_missing_data": "show_and_notify_no_data",
    "notification_preset_name": "hide_handles",
    "renotify_interval": 60,
    "require_full_window": true,
    "timeout_h": 24,
    "thresholds": {
      "critical": 2,
      "warning": 1
    }
  }
}
EOF
# Path parameters
export monitor_id="666486743"

# Set your Datadog site and credentials
export DD_SITE="us5.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

curl -X POST "https://api.${DD_SITE}/api/v1/monitor/${monitor_id}/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "name": "Example-Monitor",
  "type": "log alert",
  "query": "logs(\"service:foo AND type:error\").index(\"main\").rollup(\"count\").by(\"source\").last(\"5m\") > 2",
  "message": "some message Notify: @hipchat-channel",
  "tags": [
    "test:examplemonitor",
    "env:ci"
  ],
  "priority": 3,
  "options": {
    "enable_logs_sample": true,
    "escalation_message": "the situation has escalated",
    "evaluation_delay": 700,
    "include_tags": true,
    "locked": false,
    "new_host_delay": 600,
    "no_data_timeframe": null,
    "notify_audit": false,
    "notify_no_data": false,
    "on_missing_data": "show_and_notify_no_data",
    "notification_preset_name": "hide_handles",
    "renotify_interval": 60,
    "require_full_window": true,
    "timeout_h": 24,
    "thresholds": {
      "critical": 2,
      "warning": 1
    }
  }
}
EOF
# Path parameters
export monitor_id="666486743"

# Set your Datadog site and credentials
export DD_SITE="datadoghq.eu"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

curl -X POST "https://api.${DD_SITE}/api/v1/monitor/${monitor_id}/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "name": "Example-Monitor",
  "type": "log alert",
  "query": "logs(\"service:foo AND type:error\").index(\"main\").rollup(\"count\").by(\"source\").last(\"5m\") > 2",
  "message": "some message Notify: @hipchat-channel",
  "tags": [
    "test:examplemonitor",
    "env:ci"
  ],
  "priority": 3,
  "options": {
    "enable_logs_sample": true,
    "escalation_message": "the situation has escalated",
    "evaluation_delay": 700,
    "include_tags": true,
    "locked": false,
    "new_host_delay": 600,
    "no_data_timeframe": null,
    "notify_audit": false,
    "notify_no_data": false,
    "on_missing_data": "show_and_notify_no_data",
    "notification_preset_name": "hide_handles",
    "renotify_interval": 60,
    "require_full_window": true,
    "timeout_h": 24,
    "thresholds": {
      "critical": 2,
      "warning": 1
    }
  }
}
EOF
# Path parameters
export monitor_id="666486743"

# Set your Datadog site and credentials
export DD_SITE="ap1.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

curl -X POST "https://api.${DD_SITE}/api/v1/monitor/${monitor_id}/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "name": "Example-Monitor",
  "type": "log alert",
  "query": "logs(\"service:foo AND type:error\").index(\"main\").rollup(\"count\").by(\"source\").last(\"5m\") > 2",
  "message": "some message Notify: @hipchat-channel",
  "tags": [
    "test:examplemonitor",
    "env:ci"
  ],
  "priority": 3,
  "options": {
    "enable_logs_sample": true,
    "escalation_message": "the situation has escalated",
    "evaluation_delay": 700,
    "include_tags": true,
    "locked": false,
    "new_host_delay": 600,
    "no_data_timeframe": null,
    "notify_audit": false,
    "notify_no_data": false,
    "on_missing_data": "show_and_notify_no_data",
    "notification_preset_name": "hide_handles",
    "renotify_interval": 60,
    "require_full_window": true,
    "timeout_h": 24,
    "thresholds": {
      "critical": 2,
      "warning": 1
    }
  }
}
EOF
# Path parameters
export monitor_id="666486743"

# Set your Datadog site and credentials
export DD_SITE="ap2.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

curl -X POST "https://api.${DD_SITE}/api/v1/monitor/${monitor_id}/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "name": "Example-Monitor",
  "type": "log alert",
  "query": "logs(\"service:foo AND type:error\").index(\"main\").rollup(\"count\").by(\"source\").last(\"5m\") > 2",
  "message": "some message Notify: @hipchat-channel",
  "tags": [
    "test:examplemonitor",
    "env:ci"
  ],
  "priority": 3,
  "options": {
    "enable_logs_sample": true,
    "escalation_message": "the situation has escalated",
    "evaluation_delay": 700,
    "include_tags": true,
    "locked": false,
    "new_host_delay": 600,
    "no_data_timeframe": null,
    "notify_audit": false,
    "notify_no_data": false,
    "on_missing_data": "show_and_notify_no_data",
    "notification_preset_name": "hide_handles",
    "renotify_interval": 60,
    "require_full_window": true,
    "timeout_h": 24,
    "thresholds": {
      "critical": 2,
      "warning": 1
    }
  }
}
EOF
# Path parameters
export monitor_id="666486743"

# Set your Datadog site and credentials
export DD_SITE="uk1.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

curl -X POST "https://api.${DD_SITE}/api/v1/monitor/${monitor_id}/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "name": "Example-Monitor",
  "type": "log alert",
  "query": "logs(\"service:foo AND type:error\").index(\"main\").rollup(\"count\").by(\"source\").last(\"5m\") > 2",
  "message": "some message Notify: @hipchat-channel",
  "tags": [
    "test:examplemonitor",
    "env:ci"
  ],
  "priority": 3,
  "options": {
    "enable_logs_sample": true,
    "escalation_message": "the situation has escalated",
    "evaluation_delay": 700,
    "include_tags": true,
    "locked": false,
    "new_host_delay": 600,
    "no_data_timeframe": null,
    "notify_audit": false,
    "notify_no_data": false,
    "on_missing_data": "show_and_notify_no_data",
    "notification_preset_name": "hide_handles",
    "renotify_interval": 60,
    "require_full_window": true,
    "timeout_h": 24,
    "thresholds": {
      "critical": 2,
      "warning": 1
    }
  }
}
EOF
# Path parameters
export monitor_id="666486743"

# Set your Datadog site and credentials
export DD_SITE="ddog-gov.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

curl -X POST "https://api.${DD_SITE}/api/v1/monitor/${monitor_id}/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "name": "Example-Monitor",
  "type": "log alert",
  "query": "logs(\"service:foo AND type:error\").index(\"main\").rollup(\"count\").by(\"source\").last(\"5m\") > 2",
  "message": "some message Notify: @hipchat-channel",
  "tags": [
    "test:examplemonitor",
    "env:ci"
  ],
  "priority": 3,
  "options": {
    "enable_logs_sample": true,
    "escalation_message": "the situation has escalated",
    "evaluation_delay": 700,
    "include_tags": true,
    "locked": false,
    "new_host_delay": 600,
    "no_data_timeframe": null,
    "notify_audit": false,
    "notify_no_data": false,
    "on_missing_data": "show_and_notify_no_data",
    "notification_preset_name": "hide_handles",
    "renotify_interval": 60,
    "require_full_window": true,
    "timeout_h": 24,
    "thresholds": {
      "critical": 2,
      "warning": 1
    }
  }
}
EOF
# Path parameters
export monitor_id="666486743"

# Set your Datadog site and credentials
export DD_SITE="us2.ddog-gov.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"

curl -X POST "https://api.${DD_SITE}/api/v1/monitor/${monitor_id}/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
  "name": "Example-Monitor",
  "type": "log alert",
  "query": "logs(\"service:foo AND type:error\").index(\"main\").rollup(\"count\").by(\"source\").last(\"5m\") > 2",
  "message": "some message Notify: @hipchat-channel",
  "tags": [
    "test:examplemonitor",
    "env:ci"
  ],
  "priority": 3,
  "options": {
    "enable_logs_sample": true,
    "escalation_message": "the situation has escalated",
    "evaluation_delay": 700,
    "include_tags": true,
    "locked": false,
    "new_host_delay": 600,
    "no_data_timeframe": null,
    "notify_audit": false,
    "notify_no_data": false,
    "on_missing_data": "show_and_notify_no_data",
    "notification_preset_name": "hide_handles",
    "renotify_interval": 60,
    "require_full_window": true,
    "timeout_h": 24,
    "thresholds": {
      "critical": 2,
      "warning": 1
    }
  }
}
EOF