Skip to content

Acknowledge an alert

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

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

Marks an alert acked: someone is working on it. It stays unresolved, so if the same problem is raised again its occurrences go up instead of a new alert appearing. Acknowledging an acknowledged alert changes nothing; a resolved one answers alert_resolved.

Needs write access to what the alert is about at its legal entity or brand, e.g. registrations:write for a registration alert (tax managers, owners, admins) or ledger:write for a ledger alert (finance).

At a glance

  • REST: POST /api/v1/alerts/{id}/acknowledge
  • MCP tool: alerts_acknowledge
  • Operation ID: alerts.acknowledge
  • 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

Take on an automatic block

HTTP
POST /api/v1/alerts/alr_01m4ttwd3veh9apbewxheq5xab/acknowledge
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": "acked",
  "occurrences": 1,
  "lastRaisedAt": "2026-10-13T12:00:00.000Z",
  "acknowledgedAt": "2026-10-13T12:30:00.000Z",
  "acknowledgedBy": "usr_01m4ttwd3veh9apbewxheq5xh6",
  "resolvedAt": null,
  "resolvedBy": null,
  "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.
alert_resolved409The alert is already resolved.Nothing to acknowledge: the alert is closed. If the problem happens again, a new alert is raised.
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.