project.* events
Project lifecycle, bot connection, resource link / unlink.
Fires whenever a project is created, updated, archived, restored, or deleted, plus transitions on its Telegram bot + resources.
Events
project.created
A creator registers a new project.
project.updated
Any mutable project field changes.
project.archived
Creator archives the project.
project.restored
Archived project re-activated.
project.deleted
Project hard-deleted. Final event from that project.
project.bot.connected
Telegram bot first attached.
project.bot.disconnected
Bot removed or rotated.
project.bot.status_changed
Bot enters or exits degraded state.
project.resource.created
New resource registered under the project.
project.resource.linked
Existing Telegram chat linked to the project.
project.resource.unlinked
Resource disconnected from the project.
project.resource.deleted
Resource soft-deleted; the row is retained.
| Event | Fires when |
|---|---|
project.created | A creator registers a new project. |
project.updated | Any mutable project field changes (name, description, handle, terms, privacy). |
project.archived | The project's active flag is set to false. Existing subscriber access is not revoked. |
project.restored | An archived project is re-activated. |
project.deleted | A project is hard-deleted. Fires once, then nothing else from that project. |
project.bot.connected | A Telegram bot token is first attached to the project. |
project.bot.disconnected | The bot token is removed or rotated. |
project.bot.status_changed | Bot enters or exits degraded state (Telegram API failures, rate-limit, token revoke). |
project.resource.created | A manual resource is registered under the project via the REST API or MCP. Telegram channel / group / supergroup resources arrive as project.resource.linked instead. |
project.resource.linked | An existing Telegram chat is linked as a resource. |
project.resource.unlinked | A resource is disconnected from the project. |
project.resource.deleted | A resource row is soft-deleted (deleted_at is stamped; the row is retained). |
project.resource.updated | A resource's title, description or on/off switch changes, with a changes map of what moved. |
project.payment_method.updated | A payment gateway's switch, link state or credential keys change. Names the changed keys, never a value. |
project.payment_method.deleted | A payment gateway is removed from the project. |
See the dedicated pages above for full payload, field reference, and caveats per event.
Example payload
{
"id": "evt_01HX...",
"type": "project.created",
"created_at": "2026-05-18T10:05:00Z",
"api_version": "2026-05-01",
"project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"data": {
"project": {
"id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
"name": "Research Premium",
"handle": "research-premium",
"active": true,
"team_id": "a83f0d51-4c92-4b7e-8615-2fd9e70a3c86"
}
}
}Required abilities
This family is the one exception to "one ability per family" — the resource and payment-method events are scoped separately from the project itself:
| Events | Ability |
|---|---|
project.created, project.updated, project.archived, project.restored, project.deleted, project.bot.* | project:view |
project.resource.created, project.resource.linked, project.resource.unlinked, project.resource.updated, project.resource.deleted | project-resource:view |
project.payment_method.updated, project.payment_method.deleted | project-payment-method:view |
How is this guide?