# Datadog

> Post events, submit and query metrics, report service checks, and manage monitors, downtimes and host tags in Datadog.

App · Monitoring · 20 actions. Web page: https://docs.lodol.com/docs/integrations/datadog

## Actions

### Add host tags

Add tags to a host. Tags it already has are kept; adding one it already has changes nothing.

**Inputs**

- Host (`host_name`, text, required): The host's name, as 'List hosts' shows it.
- Tags (`tags`, list, required): The tags to add, for example role:web.
- Source (`source`, text): Which source the tags belong to. Defaults to user.

**Outputs**

- `host` (text)
- `tags` (list)

**Example output**

```json
{
  "host": "web-1",
  "tags": [
    "role:web"
  ]
}
```

### Cancel a downtime

End a downtime now, so its monitors alert again.

**Inputs**

- Downtime ID (`downtime_id`, text, required): The 'id' from 'Schedule a downtime' or 'List downtimes', or the downtime's Datadog link.

**Outputs**

- `canceled` (true/false)
- `downtime_id` (text)

**Example output**

```json
{
  "canceled": true,
  "downtime_id": "00e000000-0000-1234-0000-000000000000"
}
```

### Create a monitor

Create a Datadog monitor that alerts when a query crosses a threshold.

**Inputs**

- Name (`name`, text, required): The monitor's name, for example High CPU on web hosts.
- Monitor type (`monitor_type`, text, required): What the monitor watches. It must match the query. One of: `query alert` (Metric (query alert)), `metric alert` (Metric (metric alert)), `service check`, `event-v2 alert` (Event), `composite`, `log alert` (Logs (needs Log Management)), `process alert` (Process), `rum alert` (RUM), `trace-analytics alert` (APM trace analytics), `slo alert` (SLO), and 11 more.
- Query (`query`, text, required): The monitor query, threshold included, for example avg(last_5m):avg:system.cpu.user{role:web} > 90.
- Notification message (`message`, text): What the alert says. Mention people or channels with @-handles, for example @slack-ops or @jane@example.com.
- Tags (`tags`, list): Tags for the monitor itself, for example team:payments.
- Priority (`priority`, text): How urgent the monitor is, P1 being the highest. One of: `1` (P1 (highest)), `2` (P2), `3` (P3), `4` (P4), `5` (P5 (lowest)).
- Critical threshold (`critical_threshold`, number): The value that triggers an alert. It must match the threshold in the query, for example 90 for 'avg(last_5m):... > 90'.
- Warning threshold (`warning_threshold`, number): The value that triggers a warning, before the alert.
- Critical recovery threshold (`critical_recovery_threshold`, number): The value the metric must get back past to recover.
- Warning recovery threshold (`warning_recovery_threshold`, number): The value that clears a warning.
- Notify when data stops (`notify_no_data`, true/false): Alert when the monitored data stops arriving.
- No-data window (minutes) (`no_data_timeframe`, number): How many minutes without data before that alert fires. At least 1.
- Re-notify every (minutes) (`renotify_interval`, number): Send the alert again every this many minutes while it is unresolved. 0 or blank never re-notifies. At least 0.
- Evaluation delay (seconds) (`evaluation_delay`, number): Wait this many seconds before evaluating, for metrics that arrive late (such as cloud integrations). At least 0.
- Require a full window of data (`require_full_window`, true/false): Only evaluate once the whole time window has data.
- Include tags in the title (`include_tags`, true/false): Put the triggering tags in the notification title.
- When data is missing (`on_missing_data`, text): What the monitor does when data stops arriving. One of: `default` (Default for this monitor type), `show_no_data` (Show NO DATA), `show_and_notify_no_data` (Show NO DATA and notify), `resolve` (Resolve the alert).
- Notification content (`notification_preset_name`, text): How much of the query and handles the notification shows. One of: `show_all` (Show everything), `hide_query` (Hide the query), `hide_handles` (Hide the @-handles), `hide_all` (Hide the query and handles), `hide_query_and_handles` (Hide the query and handles (keep the rest)), `show_only_snapshot` (Show only the graph snapshot), `hide_handles_and_footer` (Hide the handles and footer).
- Other options (`extra_options`, object): Any other Datadog monitor option, as JSON, for example {"new_group_delay": 60}. A setting may be given here or in its own field, not both.

**Outputs**

- `created` (text)
- `creator` (object)
- `id` (number)
- `matching_downtimes` (list)
- `message` (text)
- `modified` (text)
- `multi` (true/false)
- `name` (text)
- `options` (object)
- `overall_state` (text)
- `priority` (number)
- `query` (text)
- `restricted_roles` (list)
- `state` (object)
- `tags` (list)
- `type` (text)

**Example output**

```json
{
  "created": "2026-09-21T10:00:00.000000+00:00",
  "creator": {
    "email": "jane@example.com",
    "handle": "jane@example.com",
    "name": "Jane"
  },
  "id": 12345678,
  "message": "CPU is high on {{host.name}}. @slack-ops",
  "modified": "2026-09-21T10:00:00.000000+00:00",
  "multi": false,
  "name": "High CPU on web hosts",
  "options": {
    "include_tags": true,
    "notify_no_data": false,
    "thresholds": {
      "critical": 90,
      "warning": 80
    }
  },
  "overall_state": "OK",
  "priority": 2,
  "query": "avg(last_5m):avg:system.cpu.user{role:web} > 90",
  "restricted_roles": null,
  "tags": [
    "team:platform"
  ],
  "type": "query alert"
}
```

### Delete a monitor

Delete a monitor. Datadog refuses if an SLO or composite monitor uses it, unless you turn on 'Delete even if in use'.

**Inputs**

- Monitor ID (`monitor_id`, text, required): The monitor to delete: its ID or Datadog address.
- Delete even if in use (`force`, true/false): Delete it even when an SLO or composite monitor depends on it.

**Outputs**

- `deleted` (true/false)
- `deleted_monitor_id` (number)

**Example output**

```json
{
  "deleted": true,
  "deleted_monitor_id": 12345678
}
```

### Get a monitor

Fetch one monitor, including its current state.

**Inputs**

- Monitor ID (`monitor_id`, text, required): The monitor's ID, or its Datadog address (https://app.datadoghq.com/monitors/12345678).
- Include groups in state (`group_states`, text): Also return the monitor's groups in these states. One or more of: `all`, `alert`, `warn`, `no data`.
- Include downtimes (`with_downtimes`, true/false): Also return the downtimes silencing this monitor.

**Outputs**

- `created` (text)
- `creator` (object)
- `id` (number)
- `matching_downtimes` (list)
- `message` (text)
- `modified` (text)
- `multi` (true/false)
- `name` (text)
- `options` (object)
- `overall_state` (text)
- `priority` (number)
- `query` (text)
- `restricted_roles` (list)
- `state` (object)
- `tags` (list)
- `type` (text)

**Example output**

```json
{
  "created": "2026-09-21T10:00:00.000000+00:00",
  "creator": {
    "email": "jane@example.com",
    "handle": "jane@example.com",
    "name": "Jane"
  },
  "id": 12345678,
  "message": "CPU is high on {{host.name}}. @slack-ops",
  "modified": "2026-09-21T10:00:00.000000+00:00",
  "multi": false,
  "name": "High CPU on web hosts",
  "options": {
    "include_tags": true,
    "notify_no_data": false,
    "thresholds": {
      "critical": 90,
      "warning": 80
    }
  },
  "overall_state": "OK",
  "priority": 2,
  "query": "avg(last_5m):avg:system.cpu.user{role:web} > 90",
  "restricted_roles": null,
  "tags": [
    "team:platform"
  ],
  "type": "query alert"
}
```

### Get an event

Fetch one event by the ID 'Post an event' returned. A newly posted event can take a few seconds to become readable.

**Inputs**

- Event ID (`event_id`, text, required): The event's ID, or its Datadog link. Use the 'id' from 'Post an event'.

**Outputs**

- `alert_type` (text)
- `date_happened` (number)
- `device_name` (text)
- `host` (text)
- `id` (text)
- `id_str` (text)
- `payload` (text)
- `priority` (text)
- `source_type_name` (text)
- `tags` (list)
- `text` (text)
- `title` (text)
- `url` (text)

**Example output**

```json
{
  "alert_type": "success",
  "date_happened": 1789900000,
  "device_name": null,
  "host": "web-1",
  "id": "7433012345678901234",
  "id_str": "7433012345678901234",
  "payload": "{}",
  "priority": "normal",
  "source_type_name": "my_apps",
  "tags": [
    "env:prod",
    "service:web"
  ],
  "text": "Version 1.4.0 deployed to production.",
  "title": "Deploy finished",
  "url": "https://app.datadoghq.com/event/event?id=7433012345678901234"
}
```

### Get host tags

The tags on a host.

**Inputs**

- Host (`host_name`, text, required): The host's name, as 'List hosts' shows it.
- Source (`source`, text): Only tags from this source, for example users or datadog. Blank returns every tag.

**Outputs**

- `host` (text)
- `tags` (list)

**Example output**

```json
{
  "host": "web-1",
  "tags": [
    "env:prod",
    "role:web"
  ]
}
```

### Get metric details

A metric's type, unit and description.

**Inputs**

- Metric name (`metric_name`, text, required): The metric, for example system.cpu.user.

**Outputs**

- `description` (text)
- `integration` (text)
- `metric_name` (text)
- `per_unit` (text)
- `short_name` (text)
- `statsd_interval` (number)
- `type` (text)
- `unit` (text)

**Example output**

```json
{
  "description": "Percent of time the CPU spent running user space processes.",
  "integration": "system",
  "metric_name": "system.cpu.user",
  "per_unit": null,
  "short_name": "cpu user",
  "statsd_interval": null,
  "type": "gauge",
  "unit": "percent"
}
```

### List active metrics

The names of metrics that have reported since a time.

**Inputs**

- Since (`from`, date and time): Metrics reporting since this time. Defaults to an hour ago.
- Host (`host`, text): Only metrics from this host.
- Tag filter (`tag_filter`, text): Only metrics with these tags, for example env:prod. Cannot be combined with Host.

**Outputs**

- `count` (number)
- `from` (text)
- `metrics` (list)

**Example output**

```json
{
  "count": 2,
  "from": "1789896400",
  "metrics": [
    "system.cpu.user",
    "system.load.1"
  ]
}
```

### List dashboards

List your custom and cloned dashboards. Datadog's built-in dashboards are not included.

**Inputs**

- Shared only (`shared_only`, true/false): Only dashboards shared outside your organization.
- Limit (`limit`, number): How many to return, up to 1000. Defaults to 100. From 1 to 1000.
- Offset (`offset`, number): How many to skip, for the next page. Use the 'next_offset' the previous run returned. At least 0.

**Outputs**

- `count` (number)
- `dashboards` (list)
- `has_more` (true/false)
- `next_offset` (number)
- `offset` (number)

**Example output**

```json
{
  "count": 1,
  "dashboards": [
    {
      "author_handle": "jane@example.com",
      "created_at": "2026-09-01T09:00:00.000000+00:00",
      "description": "Service health at a glance.",
      "id": "abc-def-ghi",
      "layout_type": "ordered",
      "modified_at": "2026-09-20T09:00:00.000000+00:00",
      "title": "Web service overview",
      "url": "/dashboard/abc-def-ghi/web-service-overview"
    }
  ],
  "has_more": false,
  "next_offset": null,
  "offset": 0
}
```

### List downtimes

List downtimes. Canceled ones stay listed for about two days before Datadog removes them.

**Inputs**

- Active only (`current_only`, true/false): Only downtimes silencing something right now.
- Limit (`limit`, number): How many to return, up to 100. Defaults to 30. From 1 to 100.
- Offset (`offset`, number): How many to skip, for the next page. Use the 'next_offset' the previous run returned. At least 0.

**Outputs**

- `count` (number)
- `downtimes` (list)
- `has_more` (true/false)
- `next_offset` (number)
- `offset` (number)
- `total` (number)

**Example output**

```json
{
  "count": 1,
  "downtimes": [
    {
      "canceled": null,
      "created": "2026-09-21T10:00:00.000Z",
      "display_timezone": "UTC",
      "id": "00e000000-0000-1234-0000-000000000000",
      "message": "Silenced for the deploy.",
      "modified": "2026-09-21T10:00:00.000Z",
      "monitor_identifier": {
        "monitor_id": 12345678
      },
      "mute_first_recovery_notification": false,
      "notify_end_states": [
        "alert",
        "no data",
        "warn"
      ],
      "notify_end_types": [
        "expired"
      ],
      "relationships": {
        "created_by": {
          "data": {
            "id": "user-uuid",
            "type": "users"
          }
        },
        "monitor": {
          "data": {
            "id": "12345678",
            "type": "monitors"
          }
        }
      },
      "schedule": {
        "end": "2026-09-21T11:00:00Z",
        "start": "2026-09-21T10:00:00Z"
      },
      "scope": "env:prod",
      "status": "active",
      "type": "downtime"
    }
  ],
  "has_more": false,
  "next_offset": null,
  "offset": 0,
  "total": 1
}
```

### List hosts

List the hosts reporting to Datadog. By default, hosts seen in the last 3 hours.

**Inputs**

- Search (`filter`, text): Only hosts matching this name, alias or tag, for example env:prod.
- Seen since (`from`, date and time): Only hosts that reported since this time.
- Include mute details (`include_muted_hosts_data`, true/false): Include whether each host is muted, and until when.
- Include host details (`include_hosts_metadata`, true/false): Include agent version, platform and processor details.
- Limit (`limit`, number): How many to return, up to 1000. Defaults to 100. From 1 to 1000.
- Offset (`offset`, number): How many to skip, for the next page. Use the 'next_offset' the previous run returned. At least 0.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `hosts` (list)
- `next_offset` (number)
- `offset` (number)
- `total_matching` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "hosts": [
    {
      "aliases": [
        "web-1"
      ],
      "apps": [
        "agent",
        "nginx"
      ],
      "host_name": "web-1",
      "id": 1234567890,
      "is_muted": false,
      "last_reported_time": 1789900000,
      "name": "web-1",
      "sources": [
        "agent"
      ],
      "tags_by_source": {
        "Datadog": [
          "host:web-1"
        ]
      },
      "up": true
    }
  ],
  "next_offset": null,
  "offset": 0,
  "total_matching": 1
}
```

### List monitors

List monitors a page at a time, optionally filtered.

**Inputs**

- Name contains (`name`, text): Only monitors whose name contains this text.
- Monitor tags (`monitor_tags`, list): Only monitors tagged with all of these, for example team:payments.
- Scope tags (`tags`, list): Only monitors whose query scope includes these tags, for example host:web-1.
- Include groups in state (`group_states`, text): Also return each monitor's groups in these states. One or more of: `all`, `alert`, `warn`, `no data`.
- Page (`page`, number): Which page, starting at 0. Use 'next_page' for the next. At least 0.
- Page size (`page_size`, number): Monitors per page, up to 1000. Defaults to 100. From 1 to 1000.

**Outputs**

- `count` (number)
- `has_more` (true/false)
- `monitors` (list)
- `next_page` (number)
- `page` (number)
- `page_size` (number)

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "monitors": [
    {
      "created": "2026-09-21T10:00:00.000000+00:00",
      "creator": {
        "email": "jane@example.com",
        "handle": "jane@example.com",
        "name": "Jane"
      },
      "id": 12345678,
      "message": "CPU is high on {{host.name}}. @slack-ops",
      "modified": "2026-09-21T10:00:00.000000+00:00",
      "multi": false,
      "name": "High CPU on web hosts",
      "options": {
        "include_tags": true,
        "notify_no_data": false,
        "thresholds": {
          "critical": 90,
          "warning": 80
        }
      },
      "overall_state": "OK",
      "priority": 2,
      "query": "avg(last_5m):avg:system.cpu.user{role:web} > 90",
      "restricted_roles": null,
      "tags": [
        "team:platform"
      ],
      "type": "query alert"
    }
  ],
  "next_page": null,
  "page": 0,
  "page_size": 100
}
```

### Post an event

Post an event to your Datadog event stream, for example a deploy notice or an alert from a workflow. Returns the event's ID as text, because it is too large a number to hold exactly otherwise.

**Inputs**

- Title (`title`, text, required): The event title, for example, Deploy finished.
- Message (`text`, text, required): The event body, up to 4000 characters. Supports Datadog message markdown.
- Alert type (`alert_type`, text): How the event is categorized in the stream. One of: `info`, `success`, `warning`, `error`.
- Priority (`priority`, text): The event priority. One of: `normal`, `low`.
- Tags (`tags`, list): Tags to attach, each in key:value form, for example env:prod.
- Host (`host`, text): The host name the event is about, if any.
- Aggregation key (`aggregation_key`, text): Events with the same key (up to 100 characters) are grouped together in the stream.
- Source type (`source_type_name`, text): The kind of source that sent it, for example my_apps.
- When it happened (`date_happened`, date and time): When the event happened. Leave blank for now. Datadog accepts events up to 18 hours old.

**Outputs**

- `alert_type` (text)
- `date_happened` (number)
- `host` (text)
- `id` (text)
- `priority` (text)
- `status` (text)
- `tags` (list)
- `text` (text)
- `title` (text)
- `url` (text)

**Example output**

```json
{
  "alert_type": "success",
  "date_happened": 1789900000,
  "host": null,
  "id": "7433012345678901234",
  "priority": "normal",
  "status": "ok",
  "tags": [
    "env:prod",
    "service:web"
  ],
  "text": "Version 1.4.0 deployed to production.",
  "title": "Deploy finished",
  "url": "https://app.datadoghq.com/event/event?id=7433012345678901234"
}
```

### Query metrics

Read metric values over a time range with a Datadog metric query. Covers the last hour unless you pick a range. Each series' 'last_value' is its most recent point.

**Inputs**

- Query (`query`, text, required): A Datadog metric query, for example avg:system.cpu.user{env:prod} by {host}.
- From (`from`, date and time): The start of the range. Defaults to an hour before 'To'.
- To (`to`, date and time): The end of the range. Defaults to now.

**Outputs**

- `from_date` (number)
- `group_by` (list)
- `query` (text)
- `res_type` (text)
- `series` (list)
- `series_count` (number)
- `status` (text)
- `to_date` (number)

**Example output**

```json
{
  "from_date": 1789896400000,
  "group_by": [],
  "query": "avg:system.cpu.user{*}",
  "res_type": "time_series",
  "series": [
    {
      "display_name": "system.cpu.user",
      "expression": "avg:system.cpu.user{*}",
      "last_value": 13.1,
      "length": 2,
      "metric": "system.cpu.user",
      "pointlist": [
        [
          1789899960000,
          12.5
        ],
        [
          1789899980000,
          13.1
        ]
      ],
      "scope": "*"
    }
  ],
  "series_count": 1,
  "status": "ok",
  "to_date": 1789900000000
}
```

### Schedule a downtime

Silence a monitor, or every monitor with some tags, for a while - for example during a deploy. Starts now unless you pick a start, and lasts until canceled unless you pick an end.

**Inputs**

- Scope (`scope`, text, required): Which groups to silence, as a tag query: env:prod, host:web-1, or * for everything the monitors cover.
- Monitor ID (`monitor_id`, text): The monitor to silence (its ID or Datadog address). Give this or Monitor tags.
- Monitor tags (`monitor_tags`, list): Silence every monitor with all of these tags instead, for example team:payments.
- Start (`start`, date and time): When the silence starts. Leave blank for now.
- End (`end`, date and time): When it ends. Leave blank to last until canceled.
- Message (`message`, text): A note shown with the downtime and its notifications.
- Display time zone (`display_timezone`, text): The time zone Datadog shows it in, for example Europe/London. Defaults to UTC.
- Mute the first recovery (`mute_first_recovery_notification`, true/false): Skip the recovery notification sent when the downtime ends.
- Notify at the end if in state (`notify_end_states`, text): When it ends, notify about monitors still in these states. One or more of: `alert`, `warn`, `no data`.
- Notify when it (`notify_end_types`, text): Which endings send that notification. One or more of: `canceled`, `expired`.

**Outputs**

- `canceled` (text)
- `created` (text)
- `display_timezone` (text)
- `id` (text)
- `message` (text)
- `modified` (text)
- `monitor_identifier` (object)
- `mute_first_recovery_notification` (true/false)
- `notify_end_states` (list)
- `notify_end_types` (list)
- `relationships` (object)
- `schedule` (object)
- `scope` (text)
- `status` (text)
- `type` (text)

**Example output**

```json
{
  "canceled": null,
  "created": "2026-09-21T10:00:00.000Z",
  "display_timezone": "UTC",
  "id": "00e000000-0000-1234-0000-000000000000",
  "message": "Silenced for the deploy.",
  "modified": "2026-09-21T10:00:00.000Z",
  "monitor_identifier": {
    "monitor_id": 12345678
  },
  "mute_first_recovery_notification": false,
  "notify_end_states": [
    "alert",
    "no data",
    "warn"
  ],
  "notify_end_types": [
    "expired"
  ],
  "relationships": {
    "created_by": {
      "data": {
        "id": "user-uuid",
        "type": "users"
      }
    },
    "monitor": {
      "data": {
        "id": "12345678",
        "type": "monitors"
      }
    }
  },
  "schedule": {
    "end": "2026-09-21T11:00:00Z",
    "start": "2026-09-21T10:00:00Z"
  },
  "scope": "env:prod",
  "status": "active",
  "type": "downtime"
}
```

### Search events

Search the event stream, newest first by default. Covers the last 24 hours unless you pick a start.

**Inputs**

- Search (`query`, text): Datadog event search, for example 'source:my_apps env:prod'. Blank matches everything.
- From (`from`, date and time): The earliest event to include. Defaults to 24 hours ago.
- To (`to`, date and time): The latest event to include. Defaults to now.
- Order (`sort`, text): Newest or oldest first. One of: `-timestamp` (Newest first), `timestamp` (Oldest first).
- Limit (`limit`, number): How many to return, up to 1000. Defaults to 25. From 1 to 1000.
- Next page cursor (`cursor`, text): The 'next_cursor' a previous search returned.

**Outputs**

- `count` (number)
- `events` (list)
- `has_more` (true/false)
- `next_cursor` (text)
- `status` (text)
- `warnings` (list)

**Example output**

```json
{
  "count": 1,
  "events": [
    {
      "attributes": {
        "status": "success",
        "title": "Deploy finished"
      },
      "id": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm9mWXJFYTR0OA",
      "message": "Version 1.4.0 deployed to production.",
      "tags": [
        "env:prod"
      ],
      "timestamp": "2026-09-21T10:00:00.000Z",
      "title": "Deploy finished"
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "status": "done",
  "warnings": []
}
```

### Submit a metric

Send one value for a custom metric, for example the number of orders processed. Datadog accepts points up to an hour old. Custom metrics count toward your plan's custom-metric limit.

**Inputs**

- Metric name (`metric`, text, required): The metric's name, for example shop.orders.processed.
- Value (`value`, number, required): The number to record.
- Metric type (`metric_type`, text): How Datadog should treat the value. One of: `gauge` (Gauge (a value at a point in time)), `count` (Count (how many times something happened)), `rate` (Rate (how many times per second)).
- Tags (`tags`, list): Tags for the point, for example env:prod.
- Host (`host`, text): The host the value is about, if any.
- When (`timestamp`, date and time): When the value was measured. Leave blank for now.
- Unit (`unit`, text): The unit, for example byte or request.
- Interval (seconds) (`interval`, number): For a count or rate: the seconds the value covers. At least 1.

**Outputs**

- `accepted` (true/false)
- `host` (text)
- `metric` (text)
- `metric_type` (text)
- `tags` (list)
- `timestamp` (number)
- `unit` (text)
- `value` (number)

**Example output**

```json
{
  "accepted": true,
  "host": null,
  "metric": "shop.orders.processed",
  "metric_type": "gauge",
  "tags": [
    "env:prod"
  ],
  "timestamp": 1789900000,
  "unit": null,
  "value": 42
}
```

### Submit a service check

Report whether something is up: OK, Warning, Critical or Unknown for a named check on a host. A 'service check' monitor can alert on it.

**Inputs**

- Check name (`check`, text, required): The check's name, for example shop.checkout.up.
- Host (`host_name`, text, required): The host the check is about.
- Status (`status`, text, required): The check's result. One of: `ok`, `warning`, `critical`, `unknown`.
- Message (`message`, text): A note on why, shown with the check.
- Tags (`tags`, list): Tags for the check, for example env:prod.
- When (`timestamp`, date and time): When the check ran. Leave blank for now; Datadog accepts checks up to 10 minutes old.

**Outputs**

- `accepted` (true/false)
- `check` (text)
- `host_name` (text)
- `message` (text)
- `status` (text)
- `status_code` (number)
- `tags` (list)
- `timestamp` (number)

**Example output**

```json
{
  "accepted": true,
  "check": "shop.checkout.up",
  "host_name": "web-1",
  "message": null,
  "status": "ok",
  "status_code": 0,
  "tags": [
    "env:prod"
  ],
  "timestamp": null
}
```

### Update a monitor

Change a monitor. Only the fields you fill in change; the monitor's other settings are kept. Tags, if given, replace the monitor's tags.

**Inputs**

- Monitor ID (`monitor_id`, text, required): The monitor to change: its ID or Datadog address.
- Name (`name`, text): A new name.
- Query (`query`, text): A new query, threshold included.
- Notification message (`message`, text): What the alert says. Mention people or channels with @-handles, for example @slack-ops or @jane@example.com.
- Tags (`tags`, list): Tags for the monitor itself, for example team:payments.
- Priority (`priority`, text): How urgent the monitor is, P1 being the highest. One of: `1` (P1 (highest)), `2` (P2), `3` (P3), `4` (P4), `5` (P5 (lowest)).
- Critical threshold (`critical_threshold`, number): The value that triggers an alert. It must match the threshold in the query, for example 90 for 'avg(last_5m):... > 90'.
- Warning threshold (`warning_threshold`, number): The value that triggers a warning, before the alert.
- Critical recovery threshold (`critical_recovery_threshold`, number): The value the metric must get back past to recover.
- Warning recovery threshold (`warning_recovery_threshold`, number): The value that clears a warning.
- Notify when data stops (`notify_no_data`, true/false): Alert when the monitored data stops arriving.
- No-data window (minutes) (`no_data_timeframe`, number): How many minutes without data before that alert fires. At least 1.
- Re-notify every (minutes) (`renotify_interval`, number): Send the alert again every this many minutes while it is unresolved. 0 or blank never re-notifies. At least 0.
- Evaluation delay (seconds) (`evaluation_delay`, number): Wait this many seconds before evaluating, for metrics that arrive late (such as cloud integrations). At least 0.
- Require a full window of data (`require_full_window`, true/false): Only evaluate once the whole time window has data.
- Include tags in the title (`include_tags`, true/false): Put the triggering tags in the notification title.
- When data is missing (`on_missing_data`, text): What the monitor does when data stops arriving. One of: `default` (Default for this monitor type), `show_no_data` (Show NO DATA), `show_and_notify_no_data` (Show NO DATA and notify), `resolve` (Resolve the alert).
- Notification content (`notification_preset_name`, text): How much of the query and handles the notification shows. One of: `show_all` (Show everything), `hide_query` (Hide the query), `hide_handles` (Hide the @-handles), `hide_all` (Hide the query and handles), `hide_query_and_handles` (Hide the query and handles (keep the rest)), `show_only_snapshot` (Show only the graph snapshot), `hide_handles_and_footer` (Hide the handles and footer).
- Other options (`extra_options`, object): Any other Datadog monitor option, as JSON, for example {"new_group_delay": 60}. A setting may be given here or in its own field, not both.

**Outputs**

- `created` (text)
- `creator` (object)
- `id` (number)
- `matching_downtimes` (list)
- `message` (text)
- `modified` (text)
- `multi` (true/false)
- `name` (text)
- `options` (object)
- `overall_state` (text)
- `priority` (number)
- `query` (text)
- `restricted_roles` (list)
- `state` (object)
- `tags` (list)
- `type` (text)

**Example output**

```json
{
  "created": "2026-09-21T10:00:00.000000+00:00",
  "creator": {
    "email": "jane@example.com",
    "handle": "jane@example.com",
    "name": "Jane"
  },
  "id": 12345678,
  "message": "CPU is high on {{host.name}}. @slack-ops",
  "modified": "2026-09-21T10:00:00.000000+00:00",
  "multi": false,
  "name": "High CPU on web hosts",
  "options": {
    "include_tags": true,
    "notify_no_data": false,
    "thresholds": {
      "critical": 90,
      "warning": 80
    }
  },
  "overall_state": "OK",
  "priority": 2,
  "query": "avg(last_5m):avg:system.cpu.user{role:web} > 90",
  "restricted_roles": null,
  "tags": [
    "team:platform"
  ],
  "type": "query alert"
}
```
