> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kapso.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Notifications

> Route project alerts to shared email inboxes and Slack channels

Kapso sends alerts when something happens in your project, like a failed workflow execution, a WhatsApp account enforcement, or low credits. Members choose their personal email alerts under **Notifications** in the dashboard. Team alerts go to shared destinations, which you can manage in the dashboard or with the [Platform API](https://docs.kapso.ai/api/platform/v1/notifications/list-routes.md) using a project API key.

## Destinations and routes

A **destination** is where team alerts are sent:

* `shared_email`: a shared inbox such as `ops@example.com`. It starts as `pending`. Kapso emails a verification link, and the destination becomes `active` once someone opens it. Addresses that belong to a project member are rejected, because members get personal alerts instead.
* `slack_channel`: a channel in a connected Slack workspace. Connect it in the dashboard. After that, it shows up in the API and you can route alerts to it.

A **route** sends one event type to one destination. A destination with no routes receives nothing.

The API never exposes personal member alerts.

## Event types

`GET /notifications/events` returns the catalog. Route on each entry's `key`, for example `workflow.execution_failed`, `billing.credits_low`, or `findings.detected`.

## Route alerts to a shared inbox

Create the destination:

```bash theme={null}
curl -X POST https://api.kapso.ai/platform/v1/notifications/destinations \
  -H "X-API-Key: $KAPSO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind": "shared_email", "address": "ops@example.com", "label": "Ops inbox"}'
```

Then route an event to it:

```bash theme={null}
curl -X PUT https://api.kapso.ai/platform/v1/notifications/routes \
  -H "X-API-Key: $KAPSO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destination_id": "6f708192-0314-42d5-b6e7-f8091a2b3c4d", "event_key": "workflow.execution_failed"}'
```

`PUT /notifications/routes` is idempotent. Repeating it returns the existing route.

Sending `kind: "slack_channel"` to `POST /notifications/destinations` returns `400`. Add Slack channels in the dashboard, then use `GET /notifications/destinations` to get their IDs for routing.

## Remove destinations and routes

`DELETE /notifications/destinations/{destination_id}` disables the destination and deletes its routes. `DELETE /notifications/routes/{id}` deletes a single route.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.