---
title: "Create Alert"
method: POST
path: "/api/v2/alerts"
tags: ["Alerts"]
---

# Create Alert

`POST /api/v2/alerts`

Creates a new alert

## Request body

- CreateAlertRequest
  - `dashboardId` string, nullable — Dashboard ID for tile-based alerts.
  - `tileId` string, nullable — Tile ID for tile-based alerts.
  - `savedSearchId` string, nullable — Saved search ID for saved_search alerts.
  - `groupBy` string, nullable — Group-by key for saved search alerts.
  - `threshold` number, required — Threshold value for triggering the alert.
  - `interval` '1m' | '5m' | '15m' | '30m' | '1h' | '6h' | '12h' | '1d', required — Evaluation interval.
  - `source` 'saved_search' | 'tile' — Alert source type.
  - `thresholdType` 'above' | 'below', required — Threshold comparison direction.
  - `channel` AlertChannel, required
    - `type` 'webhook', required — Channel type.
    - `webhookId` string, required — Webhook destination ID.
  - `name` string, nullable — Human-friendly alert name.
  - `message` string, nullable — Alert message template.

## Response `200`

Successfully created alert

- AlertResponseEnvelope
  - `data` AlertResponse
    - `dashboardId` string, nullable — Dashboard ID for tile-based alerts.
    - `tileId` string, nullable — Tile ID for tile-based alerts.
    - `savedSearchId` string, nullable — Saved search ID for saved_search alerts.
    - `groupBy` string, nullable — Group-by key for saved search alerts.
    - `threshold` number — Threshold value for triggering the alert.
    - `interval` '1m' | '5m' | '15m' | '30m' | '1h' | '6h' | '12h' | '1d' — Evaluation interval.
    - `source` 'saved_search' | 'tile' — Alert source type.
    - `thresholdType` 'above' | 'below' — Threshold comparison direction.
    - `channel` AlertChannel
      - `type` 'webhook', required — Channel type.
      - `webhookId` string, required — Webhook destination ID.
    - `name` string, nullable — Human-friendly alert name.
    - `message` string, nullable — Alert message template.
    - `id` string — Unique alert identifier.
    - `state` 'ALERT' | 'OK' | 'INSUFFICIENT_DATA' | 'DISABLED' — Current alert state.
    - `teamId` string — Team identifier.
    - `silenced` AlertSilenced — Silencing metadata.
      - `by` string, nullable — User ID who silenced the alert.
      - `at` string, date-time — Silence start timestamp.
      - `until` string, date-time — Silence end timestamp.
    - `createdAt` string, date-time, nullable — Creation timestamp.
    - `updatedAt` string, date-time, nullable — Last update timestamp.

## Other responses

- `401` — Unauthorized
- `500` — Server error or validation failure

## Changes

- **2026-02-02** `e856dc2f1417` — 3 breaking, 28 warning, 1 info
  - added `#/components/schemas/Alert, subschema #2` to the request body `allOf` list
  - the request's body type/format changed from `object`/`` to ``/``
  - the `data` response's property type/format changed from `object`/`` to ``/`` for status `200`
  - removed the request property `channel`
  - …28 more
- **2026-01-30** `ed852374c451` — 7 breaking, 1 warning, 25 info
  - added the new required request property `channel`
  - added the new required request property `interval`
  - added the new required request property `source`
  - added the new required request property `threshold`
  - …29 more

[Change history](https://skmtc.dev/hyperdxio/apis/hyperdx-external-api/changes/api/v2/alerts/post.md)

---

[API](https://skmtc.dev/hyperdxio/apis/hyperdx-external-api.md) · [All operations](https://skmtc.dev/hyperdxio/apis/hyperdx-external-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/hyperdxio/hyperdx-external-api/revisions/35626843b5a7/schema)
