---
title: "Arm a reminder for one calendar event"
method: POST
path: "/rest/api/v1/projects/{projectId}/calendarAlerts"
tags: ["News API"]
---

# Arm a reminder for one calendar event

`POST /rest/api/v1/projects/{projectId}/calendarAlerts`

The alert belongs to the project, not to the logged in user, because delivery goes through channels the project shares. Arming the same event twice with the same lead time updates the existing row instead of creating a second one.

## Path parameters

- `projectId` string, uuid, required

## Request body

- CalendarAlertDTO — Armed reminder for an economic calendar event
  - `accountId` string, uuid — Account the warning is about, null for a plain calendar reminder
  - `createdAt` string, date-time — Creation time
  - `createdByEmail` string — Who armed the row, provenance only and never a scope
  - `eventId` string — Id of the calendar event this alert points at
  - `eventTimeUtc` string, date-time — Event time the fire time was computed from
  - `eventTitle` string — Event title at arming time, for the alert list
  - `featureId` string, uuid — Originating news feature instance, null for a bell
  - `fireAtUtc` string, date-time — When the alert becomes due
  - `id` string — MongoDB document id
  - `kind` 'BELL' | 'RULE' | 'FILTER_WARNING' | 'AGENDA' — Which producer created the row
  - `leadMinutes` integer — Minutes before the event the alert fires
  - `notificationTargets` NotificationTargetDTO[] — Where the alert is delivered
    - `featureId` string, uuid — Id of the channel feature instance, for example the project's Telegram feature
    - `recipient` string — Null means every recipient of that channel. Telegram: the username. Email: the address. Slack, Discord, Teams and webhook always leave this null.
  - `projectId` string, uuid — Owning project
  - `ruleId` string — Originating standing rule, null unless kind is RULE
  - `sent` boolean — True once the alert has been claimed and dispatched

## Response `200`

OK

- CalendarAlertDTO — Armed reminder for an economic calendar event
  - `accountId` string, uuid — Account the warning is about, null for a plain calendar reminder
  - `createdAt` string, date-time — Creation time
  - `createdByEmail` string — Who armed the row, provenance only and never a scope
  - `eventId` string — Id of the calendar event this alert points at
  - `eventTimeUtc` string, date-time — Event time the fire time was computed from
  - `eventTitle` string — Event title at arming time, for the alert list
  - `featureId` string, uuid — Originating news feature instance, null for a bell
  - `fireAtUtc` string, date-time — When the alert becomes due
  - `id` string — MongoDB document id
  - `kind` 'BELL' | 'RULE' | 'FILTER_WARNING' | 'AGENDA' — Which producer created the row
  - `leadMinutes` integer — Minutes before the event the alert fires
  - `notificationTargets` NotificationTargetDTO[] — Where the alert is delivered
    - `featureId` string, uuid — Id of the channel feature instance, for example the project's Telegram feature
    - `recipient` string — Null means every recipient of that channel. Telegram: the username. Email: the address. Slack, Discord, Teams and webhook always leave this null.
  - `projectId` string, uuid — Owning project
  - `ruleId` string — Originating standing rule, null unless kind is RULE
  - `sent` boolean — True once the alert has been claimed and dispatched

## Changes

- **2026-08-30** `69d2d39c695e` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/metacopier/apis/metacopier-api/changes/rest/api/v1/projects/:projectId/calendarAlerts/post.md)

---

[API](https://skmtc.dev/metacopier/apis/metacopier-api.md) · [All operations](https://skmtc.dev/metacopier/apis/metacopier-api/llms.txt) · [OpenAPI document](https://skmtc.dev/metacopier/apis/metacopier-api/revisions/71cbb8caf61e?raw)
