Skip to content

Resolve an alert

The alerts.resolve operation: POST /api/v1/alerts/{id}/resolve in the REST API and the alerts_resolve tool in the MCP server.

POST/api/v1/alerts/{id}/resolve

Closes an alert by hand: the problem is dealt with. If it happens again, a new alert is raised (and delivered again). Many alerts also resolve themselves when their condition clears (e.g. a retried job finished); then resolvedBy is null. Resolving a resolved alert changes nothing.

Needs write access to what the alert is about at its legal entity or brand, as for acknowledging.

At a glance

  • REST: POST /api/v1/alerts/{id}/resolve
  • MCP tool: alerts_resolve
  • Operation ID: alerts.resolve
  • Scope: Organization
  • Permission: org:read
  • Risk tier: write
  • Dry run: Supported (send Ownrecord-Dry-Run: true)
  • Idempotency: Idempotency-Key required
  • Modes: Test and live
  • Authentication: API key with the org:read scope
  • Since: M7

Request

Path parameters

FieldTypeDescription
idalr_… ID

Body

This operation takes no body.

Response

200 OK with a JSON object:

FieldTypeDescription
idalr_… ID
object"alert"
codestring
severityone of info, high, critical
familyone of 14 values, e.g. registrations, filings, ledger (all in the OpenAPI document)
messagestring
linkstring
entityIdent_… ID or null
brandIdbrd_… ID or null
livemodeboolean
statusone of open, acked, resolved
occurrencesinteger (at least 1)
lastRaisedAtdate-time
acknowledgedAtdate-time or null
acknowledgedBystring or null
resolvedAtdate-time or null
resolvedBystring or null
deliveryobject
delivery.statusone of none, pending, delivered, failed
delivery.attemptsinteger (at least 0)
delivery.lastErrorstring or null
delivery.emailobject
delivery.email.sentinteger (at least 0)
delivery.email.failedinteger (at least 0)
delivery.slackarray of object
delivery.slack[].channelIdstring
delivery.slack[].statusone of sent, failed
delivery.slack[].atdate-time
delivery.slack[].errorstring or null
createdAtdate-time
updatedAtdate-time
versioninteger (at least 1)

Examples

Close an alert that was dealt with

HTTP
POST /api/v1/alerts/alr_01m4ttwd3veh9apbewxheq5xab/resolve
Authorization: Bearer or_test_…
Idempotency-Key: 3f1c9a52-7d0e-4b8f-9a61-0c2d5e8b7f14

Response (200):

JSON
{
  "id": "alr_01m4ttwd3veh9apbewxheq5xab",
  "object": "alert",
  "code": "REG_AUTO_BLOCKED",
  "severity": "critical",
  "family": "registrations",
  "message": "EU_OSS_NON_UNION was blocked for new consumer sales on 2026-11-07: the grace deadline 2026-11-10 is near and no application was submitted.",
  "link": "/console/acme/e/acme-hr/jurisdictions/EU_OSS_NON_UNION",
  "entityId": "ent_01m4ttwd3veh9apbewxheq5xh4",
  "brandId": null,
  "livemode": true,
  "status": "resolved",
  "occurrences": 1,
  "lastRaisedAt": "2026-10-13T12:00:00.000Z",
  "acknowledgedAt": null,
  "acknowledgedBy": null,
  "resolvedAt": "2026-10-13T12:30:00.000Z",
  "resolvedBy": "usr_01m4ttwd3veh9apbewxheq5xh6",
  "delivery": {
    "status": "delivered",
    "attempts": 1,
    "lastError": null,
    "email": {
      "sent": 2,
      "failed": 0
    },
    "slack": [
      {
        "channelId": "sec_01m4ttwd3veh9apbewxheq5xad",
        "status": "sent",
        "at": "2026-10-13T12:00:00.000Z",
        "error": null
      }
    ]
  },
  "createdAt": "2026-10-13T12:00:00.000Z",
  "updatedAt": "2026-10-13T12:30:00.000Z",
  "version": 2
}

Errors

CodeHTTP statusWhenWhat to do
resource_not_found404No alert with this ID that you may see, in this organization and mode.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
permission_denied403Your role may see the alert but not act on what it is about.Ask an organization owner or admin for a role or scope that allows this action.
version_conflict409The alert changed at the same moment; retry.Fetch the object again and retry the change.

It can also return these common errors: validation_failed, api_version_unsupported, invalid_json, unsupported_media_type, authentication_required, api_key_invalid, idempotency_key_required, idempotency_key_reused, idempotency_in_progress, approval_required, approval_rejected, approval_expired, stale_approval, approval_policy_denied, rate_limited, internal_error.