recovery.incident_resolved
An open incident closed — a later probe found the thing healthy again, or a recovery replaced it.
When this fires
An incident resolves in one of two ways: a later probe finds the account, bot or channel healthy again (the creator gave the bot its rights back, the platform lifted a restriction), or a recovery replaced the broken thing, in which case resolved_by_operation_id names it. Either way the incident row is marked resolved and this event fires once.
Required ability
project-recovery:view — token must carry this at mint time to subscribe an endpoint to this event.
Payload
{
"id": "evt_01HX...",
"type": "recovery.incident_resolved",
"created_at": "2026-09-12T03:19:42Z",
"api_version": "2026-05-01",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"data": {
"incident_id": "6f1e9b27-4c3a-4d58-9e02-b7a1c5d38f64",
"kind": "resources",
"connector": "telegram",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"resource_id": "b73c5f21-9d80-4a6e-8215-4f70ce13a9d6",
"resolved_at": "2026-09-12T03:19:42Z",
"resolved_by_operation_id": "9a4d2e71-5b38-4c6f-8e12-3d7c9b0a5f21"
}
}Field reference
| Field | Type | Notes |
|---|---|---|
id | string ULID | Unique event id, prefixed evt_. Use for idempotent processing. |
type | string | Always recovery.incident_resolved for this event. |
created_at | ISO 8601 timestamp | Server-side emission time. |
api_version | string | Webhook API contract version. |
project_id | string UUID | null | Project this event belongs to; null for an account incident. |
data.incident_id | string UUID | The incident that closed. |
data.kind | string | account, bot or resources. |
data.connector | string | null | The connector the thing lives on. |
data.project_id | string UUID | null | The project, or null for an account incident. |
data.resource_id | string UUID | null | The channel or group, for resources incidents. |
data.resolved_at | ISO 8601 timestamp | When it closed. |
data.resolved_by_operation_id | string UUID | null | The recovery that fixed it, or null when a probe simply found it healthy again. |
Caveats
- A bot relink resolves every open bot incident the project had, whichever bot row each named: expect one event per incident.
- Resolution says the ledger no longer sees a problem; it does not say members have been re-admitted. Follow
recovery.operation_completedand the roll call for that.
Related events
recovery.incident_opened— how the incident began.recovery.operation_completed— the recoveryresolved_by_operation_idnames.- Recovery events overview — back to family overview.
How is this guide?
recovery.incident_opened
A health probe found the creator's sign-in account unreachable, a project's bot refused by the platform, or a channel or group gone or no longer administered.
recovery.operation_started
A recovery began — run by the creator, by the platform on their behalf, or on demand for a healthy resource.