---
title: "Batch Persist Alerts"
method: POST
path: "/cron/persist_alert/batch"
---

# Batch Persist Alerts

`POST /cron/persist_alert/batch`

Batch persist multiple alerts to the database.

This endpoint processes multiple alerts in a single request, returning
a mapping of alert_id to persist result for easy lookup by alert_cron.

Args:
    request: BatchPersistAlertsRequest containing list of alerts
    m2m_token: Machine-to-machine authentication token

Returns:
    BatchPersistAlertsResponse with results mapped by alert_id

## Request body

- BatchPersistAlertsRequest — Request model for batch persisting multiple alerts.
  - `alerts` PersistAlertRequest[], required
    - `alert_id` string, required
    - `alert_name` string, required
    - `alert_description` string, required
    - `alert_source_id` string, required
    - `alert_owner` string, required
    - `source` string, required
    - `source_link` string, required
    - `tags` string[], required
    - `anomaly_status` 'suppressed' | 'analyzed' | 'anomalous' | 'noise', required — Enum for anomaly status values. Used to track whether an alert has been analyzed and deemed anomalous or noise.
    - `anomaly_status_explanation_stats` AnomalyStatusExplanationStats, required — Anomaly status explanation stats for alerts.
      - `is_recovered` boolean, nullable
      - `current_alert_duration` number, nullable
      - `current_warning_duration` number, nullable
      - `baseline_alert_duration` number, nullable
      - `baseline_warning_duration` number, nullable
      - `current_alert_count` integer, nullable
      - `current_warning_count` integer, nullable
      - `baseline_alert_count` integer, nullable
      - `baseline_warning_count` integer, nullable
      - `anomaly_score` number, nullable
      - `is_blocked_by_retrigger` boolean, nullable
      - `last_triggered_time` string, date-time, nullable
      - `time_since_last_trigger_hours` number, nullable
      - `retrigger_block_hours` number, nullable
      - `fetch_time_ms` number, nullable
      - `anomaly_compute_time_ms` number, nullable
      - `trigger_decision_time_ms` number, nullable
      - `events_fetched` integer, nullable
      - `memory_bytes` integer, nullable
    - `initial_fire` string, date-time, required
    - `last_fire` string, date-time, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `organization_id` string, required
    - `services_context` ServiceContext[]
      - `id` string, required
      - `name` string, required
      - `description` string, nullable
    - `context_items` ContextItemInput[], nullable
      - `id` string, required
      - `organization_id` string, required
      - `context_item_name` 'central_id' | 'function' | 'application' | 'service' | 'team' | 'url_endpoint' | 'correlation_id' | 'topology_node' | 'account' | 'storage' | 'environment' | 'cluster' | 'snow_alert' | 'snow_incident' | 'snow_problem' | 'snow_change_request' | 'customer_journey' | 'domain' | 'mim_id' | 'monitor_id', required — Enum for context item names.
      - `value` string, required
      - `metadata` object, required
    - `retrigger_block_hours` integer, required

## Response `200`

Successful Response

- BatchPersistAlertsResponse — Response model for batch persist alerts operation. Maps alert_id to the persist result for easy lookup by alert_cron.
  - `results` object, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/traversal/apis/fastapi.md) · [All operations](https://skmtc.net/traversal/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/traversal/fastapi/revisions/2134ebffd1ef/schema)
