---
title: "Get an alert rule"
method: GET
path: "/api/v1/alerts/{id}"
tags: ["Alerts"]
---

# Get an alert rule

`GET /api/v1/alerts/{id}`

## Request

- Base URL: `https://askthegrid.com`
- URL: `https://askthegrid.com/api/v1/alerts/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Response `200`

Success

- object
  - `ok` true, required
  - `rule` object, required
    - `id` string, required
    - `name` string, required
    - `iso` string, nullable, required
    - `scope` object, required
      - `kind` 'asset' | 'area' | 'grid', required
      - `label` string, required
      - `ref` string
      - `members` object[]
        - `ref` string, required
        - `label` string, required
      - `portfolioId` string
      - `geometry` Schema0 (unresolved $ref)
      - `radiusKm` number
    - `trigger` 'grid_event' | 'radar_threshold' | 'insight' | 'project', required
    - `metric` 'nodal_lmp' | 'nodal_congestion' | 'dart_spread' | 'basis_spread' | 'rt_spread' | 'system_load' | 'reserve_headroom' | 'resource_adequacy_surplus' | 'reported_outages' | 'operating_margin' | 'regulation_up_capability' | 'renewable_curtailment' | 'forecast_divergence' | 'forecast_lmp'
    - `operator` 'above' | 'below'
    - `threshold` number
    - `conditionKind` 'threshold' | 'percent_change' | 'moving_average'
    - `lookbackMinutes` number
    - `confirmationMinutes` number
    - `recoveryMinutes` number
    - `missingDataPolicy` 'keep_state' | 'mark_unevaluable'
    - `conditions` object[]
      - `metric` 'nodal_lmp' | 'nodal_congestion' | 'dart_spread' | 'basis_spread' | 'rt_spread' | 'system_load' | 'reserve_headroom' | 'resource_adequacy_surplus' | 'reported_outages' | 'operating_margin' | 'regulation_up_capability' | 'renewable_curtailment' | 'forecast_divergence' | 'forecast_lmp', required
      - `operator` 'above' | 'below', required
      - `threshold` number
      - `conditionKind` 'threshold' | 'percent_change' | 'moving_average', required
      - `lookbackMinutes` number, required
    - `dailyNotificationLimit` number
    - `eventSeverities` string[], required
    - `insight` object
      - `detectors` union[], required
        - union
          - 'operator_condition' | 'system_price' | 'binding_constraint' | 'price_separation' | 'current_headroom' | 'next_day_capacity' | 'load_forecast_error' | 'load_forecast_skill' | 'renewable_forecast_error' | 'system_frequency' | 'tie_congestion' | 'net_load_surprise' | 'net_load_ramp_risk' | 'scarcity_pressure' | 'local_congestion' | 'cross_market_spread' | 'interface_loading' | 'node_price' | 'forecast_price_spike' | 'forecast_negative_price' | 'demand_record' | 'reliability_adder' | 'reserve_decline'
          - unknown
      - `fingerprint` string
      - `minSeverity` 'watch' | 'critical', required
    - `project` object
      - `id` string, required
      - `name` string, required
      - `check` union
        - object
          - `kind` 'interconnection', required
          - `queueId` string, required
        - object
          - `kind` 'storage_earnings', required
        - object
          - `kind` 'deadlines', required
          - `horizonDays` integer, required
        - object
          - `kind` 'watch', required
          - `instructions` string, required
          - `cadenceDays` integer, required
    - `destination` string, required
    - `deliveryDestinations` object[]
      - `id` string, required
      - `channel` 'email' | 'in_app' | 'sms' | 'slack' | 'teams', required
      - `name` string, required
      - `targetHint` string, required
    - `access` object
      - `edit` boolean, required
      - `delivery` boolean, required
    - `enabled` boolean, required
    - `healthStatus` 'initializing' | 'healthy' | 'degraded' | 'error'
    - `healthMessage` string
    - `evaluationStatus` 'normal' | 'confirming' | 'active' | 'recovering' | 'unevaluable'
    - `currentValue` number
    - `currentUnit` string
    - `sourceObservedAt` string
    - `sourceName` string
    - `archivedAt` string
    - `recentOccurrences` object[]
      - `id` string, required
      - `ruleId` string, required
      - `transition` 'activated' | 'recovered' | 'became_unevaluable' | 'event_observed' | 'event_updated' | 'event_cancelled', required
      - `title` string, required
      - `summary` string, required
      - `value` number
      - `unit` string
      - `observedAt` string, required
      - `evaluatedAt` string, required
      - `sourceName` string, required
      - `sourceRef` string
      - `sourceUrl` string
      - `evidence` object, required
      - `impact` object
        - `whatHappened` string, required
        - `whyItMatters` string[], required
        - `whatToCheck` string, required
        - `confidence` string, required
      - `deliveries` object[], required
        - `acceptanceUncertain` boolean
        - `channel` 'email' | 'in_app' | 'sms' | 'slack' | 'teams', required
        - `status` 'pending' | 'sending' | 'sent' | 'failed' | 'suppressed', required
        - `destination` string
        - `attemptCount` number
        - `sentAt` string
        - `lastError` string
    - `lastEvaluatedAt` string
    - `lastTriggeredAt` string
    - `createdAt` string, required
  - `occurrences` object[], required
    - `id` string, required
    - `ruleId` string, required
    - `transition` 'activated' | 'recovered' | 'became_unevaluable' | 'event_observed' | 'event_updated' | 'event_cancelled', required
    - `title` string, required
    - `summary` string, required
    - `value` number
    - `unit` string
    - `observedAt` string, required
    - `evaluatedAt` string, required
    - `sourceName` string, required
    - `sourceRef` string
    - `sourceUrl` string
    - `evidence` object, required
    - `impact` object
      - `whatHappened` string, required
      - `whyItMatters` string[], required
      - `whatToCheck` string, required
      - `confidence` string, required
    - `deliveries` object[], required
      - `acceptanceUncertain` boolean
      - `channel` 'email' | 'in_app' | 'sms' | 'slack' | 'teams', required
      - `status` 'pending' | 'sending' | 'sent' | 'failed' | 'suppressed', required
      - `destination` string
      - `attemptCount` number
      - `sentAt` string
      - `lastError` string

## Other responses

- `400`: The request did not match the contract.
- `401`: Missing or invalid credentials.
- `429`: Rate limit exceeded. Wait `Retry-After` seconds; `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` report the budget. Signed-in sessions and API keys have larger budgets than anonymous callers.

---

[API](https://skmtc.dev/askthegrid/apis/ask-the-grid-api.md) · [All operations](https://skmtc.dev/askthegrid/apis/ask-the-grid-api/llms.txt) · [OpenAPI document](https://skmtc.dev/askthegrid/apis/ask-the-grid-api/revisions/9cd80115e395?raw)
