---
title: WatchFor notification channels API
description: List the Slack, PagerDuty, Telegram, e-mail, webhook and other channels your organization alerts through — with every secret masked — for inventory, audits and "who gets paged?" tooling.
canonical: https://watchfor.io/docs/api/notification-channels
---

# WatchFor notification channels API

List the Slack, PagerDuty, Telegram, e-mail, webhook and other channels your organization alerts through — with every secret masked — for inventory, audits and "who gets paged?" tooling.

A **notification channel** is a destination alerts are delivered to — a
Slack or Discord webhook, a PagerDuty or Opsgenie service, a Telegram
chat, an e-mail contact group, a generic webhook, and so on. Background:
[notifications](/docs/notifications). Channels are **created and edited
in the dashboard**; this API is read-only, for inventory, audits and
"is anyone actually wired to this?" checks.

| Method | Path | Scope | operationId |
| --- | --- | --- | --- |
| GET | `/v1/notification-channels` | read | `listNotificationChannels` |
| GET | `/v1/notification-channels/{id}` | read | `getNotificationChannel` |

The notification channel object:

```json
{
  "id": 12,
  "object": "notification_channel",
  "name": "#ops-alerts",
  "type": "slack",
  "enabled": true,
  "is_default": false,
  "severity_filter": ["critical", "warning"],
  "config": {
    "webhook_url": "__redacted__",
    "contact_group_ids": ["0b0f6a41-…"]
  },
  "routes": [
    { "contact_group": { "id": "0b0f6a41-…", "name": "On-call engineers" } }
  ],
  "created_at": "2026-08-24T12:00:00.000Z",
  "updated_at": "2026-09-01T09:30:00.000Z"
}
```

| Field | Notes |
| --- | --- |
| `id` | Integer — the same id the [notifications](/docs/api/notifications) delivery log reports as `channel.id` |
| `type` | The channel kind as shown in the dashboard: `slack`, `discord`, `teams`, `googlechat`, `mattermost`, `rocketchat`, `telegram`, `email`, `webhook`, `zapier`, `pagerduty`, `opsgenie`, `pushover`, `pushbullet`, `ntfy`, `gotify`, … |
| `enabled` | Disabled channels are kept but receive nothing |
| `is_default` | The organization's default channel |
| `severity_filter` | Which incident severities the channel receives (`critical`, `warning`) |
| `config` | The channel's settings, with secrets masked (see below) |
| `routes` | The [contact groups](/docs/notifications/contact-groups) alerts reach this channel through — one entry per group that still exists |

> **Secrets never appear**
>
> Tokens, API and integration keys, passwords, incoming-webhook URLs, the
> delivery `url` of generic webhooks and phone numbers are always returned
> as `"__redacted__"` — exactly what a read-only member sees in the
> dashboard. There is no way to read a stored secret back through the API;
> to rotate one, edit the channel in the dashboard.

## List channels

`GET /v1/notification-channels` — newest first, cursor-paginated
(`limit` 1–100 — anything else, or a `sort` parameter, is `400`;
`cursor` from the previous page's `next_cursor`).

```bash
curl https://watchfor.io/api/v1/notification-channels \
  -H "Authorization: Bearer wf_live_YOUR_KEY"
```

```json
{
  "object": "list",
  "data": [ { "id": 12, "object": "notification_channel", "…": "…" } ],
  "has_more": false,
  "next_cursor": null
}
```

## Get a channel

`GET /v1/notification-channels/{id}` — `404` when the id does not belong
to your organization, `400` when it is not a positive integer.

```bash
curl https://watchfor.io/api/v1/notification-channels/12 \
  -H "Authorization: Bearer wf_live_YOUR_KEY"
```

## Managing channels

Creating, testing, editing and deleting channels is done in the
dashboard — see [Slack](/docs/notifications/slack),
[PagerDuty](/docs/notifications/pagerduty),
[Telegram](/docs/notifications/telegram),
[webhooks](/docs/notifications/webhooks) and the rest of the
[notifications](/docs/notifications) section. `POST`, `PATCH` and `DELETE`
on these paths return `405` with a hint to that effect.

## Related

- [`GET /v1/notifications`](/docs/api/notifications) — the delivery log:
  every attempt through a channel with its status.
- [Contacts and contact groups](/docs/api/contacts) — the groups referenced
  by `routes`.

---

Canonical page: https://watchfor.io/docs/api/notification-channels · All docs: https://watchfor.io/docs · Site guide: https://watchfor.io/llms.txt
