---
title: Clients
sort_rank: 6
nav_icon: sliders
---

# Sending alerts

__**Disclaimer**: Prometheus automatically takes care of sending alerts
generated by its configured [alerting
rules](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/). It is highly
recommended to configure alerting rules in Prometheus based on time series data
rather than implementing a direct client.__

The Alertmanager has two APIs, v1 and v2, both listening for alerts. The scheme
for v1 is described in the code snipped below. The scheme for v2 is specified as
an OpenAPI specification that can be found in the [Alertmanager
repository](https://github.com/prometheus/alertmanager/blob/master/api/v2/openapi.yaml).
Clients are expected to continuously re-send alerts as long as they are still
active (usually on the order of 30 seconds to 3 minutes). Clients can push a
list of alerts to Alertmanager via a POST request.

The labels of each alert are used to identify identical instances of an alert
and to perform deduplication. The annotations are always set to those received
most recently and are not identifying an alert.

Both `startsAt` and `endsAt` timestamp are optional. If `startsAt` is omitted,
the current time is assigned by the Alertmanager. `endsAt` is only set if the
end time of an alert is known. Otherwise it will be set to a configurable
timeout period from the time since the alert was last received.

The `generatorURL` field is a unique back-link which identifies the causing
entity of this alert in the client.

```json
[
  {
    "labels": {
      "alertname": "<requiredAlertName>",
      "<labelname>": "<labelvalue>",
      ...
    },
    "annotations": {
      "<labelname>": "<labelvalue>",
    },
    "startsAt": "<rfc3339>",
    "endsAt": "<rfc3339>",
    "generatorURL": "<generator_url>"
  },
  ...
]
```
