---
title: "Create a manual alert."
method: POST
path: "/api/v1/alerts"
tags: ["Alerts"]
---

# Create a manual alert.

`POST /api/v1/alerts`

## Request

- Base URL: `https://partner-api.monta.com`
- URL: `https://partner-api.monta.com/api/v1/alerts`
- Auth: HTTP bearer

The scope (and any attached issues) must belong to the operator the alert is created under.<br/><br/>Required scope: `alerts:write`

## Request body

- CreateAlert: A manual alert, optionally attached to existing issues.
  - `operatorId` integer, nullable: Operator to create the alert under. Defaults to your own operator.
  - `type` string, required: The alert type token.
  - `scope` AlertScopeInput, required: What a new alert or issue is about.
    - `type` 'operator' | 'site' | 'charge-point', required: The kind of entity.
    - `id` string, required: Id of the entity. For `operator` it must be the operator the alert or issue is created under.
  - `title` string, nullable: Human label for the alert.
  - `triggerReason` string, nullable: Why the alert was raised.
  - `issueIds` string[], nullable: Ids of existing issues of the same operator to attach, at most 100.

## Response `200`

post-alert 200 response

- Alert: An operational alert aggregating one or more issues for your operator.
  - `id` string, required: Id of the alert.
  - `operatorId` integer: Id of the operator this alert belongs to.
  - `type` string, required: The aggregated issue-type token this alert groups.
  - `scope` AlertScope, required: What an alert or issue is about.
    - `type` 'operator' | 'site' | 'charge-point' | 'unknown', required: The kind of entity this alert or issue is scoped to.
    - `id` string, required: Id of the scoped entity.
  - `status` 'open' | 'acknowledged' | 'snoozed' | 'resolved' | 'unknown', required: Current status of the alert.
  - `title` string, nullable: Human label for the alert, if set.
  - `triggerReason` string, nullable: Human-readable explanation for why this alert was raised, if set.
  - `issueCount` integer: Number of issues currently attached to this alert.
  - `eventCount` integer: Total events across every attached issue.
  - `chargePointCount` integer: Number of distinct charge points across every attached issue.
  - `firstEventAt` string, date-time, nullable: Earliest event across every attached issue, if any.
  - `lastEventAt` string, date-time, nullable: Most recent event across every attached issue, if any.
  - `isManual` boolean: Whether this alert was created by hand rather than by the alerting engine.
  - `snoozedUntil` string, date-time, nullable: When a `snoozed` alert automatically re-opens, if set.
  - `eventFrequency` AlertEventFrequencyBucket[], nullable: Day-bucketed event counts across every attached issue.
    - `start` string, date-time, required: Start of the day bucket (UTC).
    - `count` integer: Number of events in this bucket.

## Other responses

- `400`: The request is invalid
- `401`: Consumer with provided credentials was not found
- `403`: Operator doesn't have access to resource
- `404`: Entity with the provided id was not found

## Changes

- **2026-11-03** `0ca400461c52`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/monta/apis/monta-partner-api/changes/api/v1/alerts/post.md)

---

[API](https://skmtc.dev/monta/apis/monta-partner-api.md) - [All operations](https://skmtc.dev/monta/apis/monta-partner-api/llms.txt) - [OpenAPI document](https://skmtc.dev/monta/apis/monta-partner-api/revisions/0ca400461c52?raw)
