Events
Channels
- Webhook: a JSON
POSTto the URL of your choice, overhttps://. With a secret, every send carriesX-Kuro-Signature: sha256=<HMAC-SHA256 of the body>: check it before trusting the message.X-Kuro-Eventgives the type,X-Kuro-Deliverythe identifier. - Discord and Slack: paste the incoming webhook URL of your channel; the message is formatted (embed, blocks) in the channel’s language.
test
event and shows the receiver’s answer.
Per server
On a server’s page, the Notifications tab holds its subscriptions: a destination (webhook, Discord or Slack, owned by this server) and the events of this server it receives. Everything is set there, without going through settings; the destination disappears with the server. With the right to view settings, a subscription can also target a shared channel of the team. Theservers.notifications.read and servers.notifications.manage rights are enough
for this page.
Rules
A rule binds events to channels, for everything, one node or one server. A channel targeted by several rules receives one message per event.Delivery log
Sends are kept thirty days. A refused send is retried after 1, 5 then 30 minutes, then abandoned; beyond thirty sends per minute on a channel, the next ones wait for the next minute.By default a webhook to a private address (local network,
127.0.0.1…) is refused: a webhook
must not be a way to reach the API’s internal network. For a corporate Slack behind a VPN, set
allow_private_targets = true under [notifications] in api.toml. The panel link in each
message comes from panel_url in the same section, else from [mcp].
