Update a fired alert
Triage writes on one fired alert — the only mutations this surface allows. All body fields are optional (at least one required); only the fields present are…
Triage writes on one fired alert — the only mutations this surface allows. All body fields are optional (at least one required); only the fields present are changed.
status— flip betweenactive/resolved/dismissed.resolvedanddismissedstampresolvedAt/dismissedAt;activere-opens and clears both. A resolved alert re-fires (as the same row, re-activated) if its condition is raised again.assigneeId— the PERSON owner (ausers.id), ornullto unassign.agent— the AGENT owner: a connected trigger connector's id, or the built-in"jarvis"(Enterprise plan only —403otherwise), ornullto clear. Person and agent halves are independent.
Returns the updated row; 404 if the alert does not exist in the project.
- Wave off a known condition —
{ "status": "dismissed" }on an alert that needs no action. - Hand it to someone —
{ "assigneeId": "…" }from the ops cockpit's Owner column.
Authorization
bearerSdkKey Pass an admin SDK key as Authorization: Bearer sdk_admin_…. Mint via POST /api/admin/keys with type: "admin".
In: header
Path Parameters
Stable opaque alert id (al_…).
1 <= length <= 128Header Parameters
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).
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://shipeasy.ai/api/admin/alerts/string" \ -H "Content-Type: application/json" \ -d '{ "status": "resolved" }'{
"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": "resolved",
"createdAt": "2026-06-28T14:55:31.000Z",
"resolvedAt": "2026-06-28T16:40:12.000Z",
"dismissedAt": null,
"assigneeId": null,
"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"
}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…
Show the current project
Returns the project the caller's auth header resolves to — plan, status, billing, and which modules are enabled. The server reads the project from the…