Shipeasy
APIOperations

List fired alerts

Returns the project's FIRED alerts as a bare JSON array (no pagination envelope), ordered by createdAt desc. Defaults to the currently-firing ones…

Returns the project's FIRED alerts as a bare JSON array (no pagination envelope), ordered by createdAt desc. Defaults to the currently-firing ones (status=active); pass a status to widen to resolved/dismissed history or all.

Fired alerts are raised only by the platform — the UI's killswitch handlers plus the worker's analysis consumer and alerts cron — never filed by hand, so this surface is list + triage (via PATCH), with no create. The rules that define metric-threshold alerts live at /api/admin/alert-rules.

Use case

Snapshot what is currently firing for an on-call view or the home Alerts block, or pull status=all to audit how a noisy rule has behaved over time.

GET
/api/admin/alerts

Authorization

bearerSdkKey
AuthorizationBearer <token>

Pass an admin SDK key as Authorization: Bearer sdk_admin_…. Mint via POST /api/admin/keys with type: "admin".

In: header

Query Parameters

status?string

Filter by lifecycle state. Defaults to active (currently firing); all returns every status.

Default"active"
Value in"active" | "resolved" | "dismissed" | "all"

Header Parameters

X-Project-Id?string

Project the request operates on. Optional — defaults to the project the SDK key belongs to; pass it only to scope a multi-project key (the generated client sets it once from its configuration, so per-call callers never thread it).

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://shipeasy.ai/api/admin/alerts"
[
  {
    "id": "al_01j7w9c4d5e6f7g8h9i0j1k2l3",
    "source": "metric_rule",
    "ruleId": "ar_01j7w8a1b2c3d4e5f6g7h8i9j0",
    "severity": "danger",
    "dedupeKey": "ar_01j7w8a1b2c3d4e5f6g7h8i9j0",
    "title": "Checkout error rate above threshold",
    "detail": "checkout_errors was 137 over the trailing 24h — above the rule's threshold of 50.",
    "href": "/dashboard/metrics/met_01j6abc2d3e4f5g6h7i8j9k0l1",
    "observedValue": 137,
    "status": "active",
    "createdAt": "2026-06-28T14:55:31.000Z",
    "resolvedAt": null,
    "dismissedAt": null,
    "assigneeId": null,
    "assigneeConnectorId": null,
    "assigneeAgent": null
  },
  {
    "id": "al_01j7w9b2a1z0y9x8w7v6u5t4s3",
    "source": "killswitch_armed",
    "ruleId": null,
    "severity": "warn",
    "dedupeKey": "ks_01j5checkout_kill",
    "title": "Kill switch \"checkout_kill\" is armed",
    "detail": "The kill switch has been armed for 3 days — confirm it is still intentional.",
    "href": "/dashboard/killswitches/ks_01j5checkout_kill",
    "observedValue": null,
    "status": "active",
    "createdAt": "2026-06-27T09:12:05.000Z",
    "resolvedAt": null,
    "dismissedAt": null,
    "assigneeId": "6f1d2c3b-4a5e-4f60-9b7c-8d9e0f1a2b3c",
    "assigneeConnectorId": null,
    "assigneeAgent": null
  }
]
{
  "error": "Malformed request (bad JSON, missing project scope).",
  "code": "BAD_REQUEST"
}
{
  "error": "Missing or invalid admin SDK key.",
  "code": "UNAUTHORIZED"
}

{
  "error": "Key is valid but not allowed to act on this project.",
  "code": "FORBIDDEN"
}

{
  "error": "The resource does not exist or is not visible to the caller.",
  "code": "NOT_FOUND"
}

{
  "error": "A resource with this name already exists in the project.",
  "code": "ALREADY_EXISTS"
}

{
  "error": "The request body failed structural (schema) validation.",
  "code": "VALIDATION"
}

Was this page helpful?
Updated August 8, 2026