# Slack alerts: remove a channel

> The alert_settings.slack_channels.delete operation: DELETE /api/v1/alert_settings/slack_channels/{id} in the REST API and the alert_settings_slack_channels_delete tool in the MCP server.

Removes a Slack channel from the organization's alerts in the mode of the request and deletes its stored
webhook URL and signing secret. Alerts already posted stay in Slack. Returns the alert settings.

Needs `org:write` (owners and admins).

## At a glance

- **REST:** `DELETE /api/v1/alert_settings/slack_channels/{id}`
- **MCP tool:** `alert_settings_slack_channels_delete`
- **Operation ID:** `alert_settings.slack_channels.delete`
- **Scope:** Organization
- **Permission:** `org:write`
- **Risk tier:** `write`
- **Dry run:** Supported (send `Ownrecord-Dry-Run: true`)
- **Idempotency:** `Idempotency-Key` optional
- **Modes:** Test and live
- **Authentication:** API key with the `org:write` scope
- **Since:** M7

## Request

### Path parameters

| Field | Type       | Description |
| ----- | ---------- | ----------- |
| `id`  | `sec_…` ID |             |

### Body

This operation takes no body.

## Response

`200 OK` with a JSON object:

| Field                         | Type                      | Description |
| ----------------------------- | ------------------------- | ----------- |
| `object`                      | `"alert_settings"`        |             |
| `livemode`                    | boolean                   |             |
| `email`                       | object                    |             |
| `email.high`                  | one of `immediate`, `off` |             |
| `slackChannels`               | array of object           |             |
| `slackChannels[].id`          | `sec_…` ID                |             |
| `slackChannels[].object`      | `"slack_channel"`         |             |
| `slackChannels[].name`        | string                    |             |
| `slackChannels[].urlHint`     | string                    |             |
| `slackChannels[].minSeverity` | one of `high`, `critical` |             |
| `slackChannels[].createdAt`   | date-time                 |             |
| `slackChannels[].createdBy`   | string                    |             |
| `slackChannels[].lastTest`    | object or null            |             |
| `updatedAt`                   | date-time or null         |             |
| `version`                     | integer (at least 0)      |             |

## Examples

### Remove the only channel

```http
DELETE /api/v1/alert_settings/slack_channels/sec_01m4ttwd3veh9apbewxheq5xad
Authorization: Bearer or_test_…
```

Response (`200`):

```json
{
  "object": "alert_settings",
  "livemode": true,
  "email": {
    "high": "immediate"
  },
  "slackChannels": [],
  "updatedAt": "2026-10-13T12:00:00.000Z",
  "version": 3
}
```

## Errors

| Code                                                                                     | HTTP status | When                                                  | What to do                                                                                           |
| ---------------------------------------------------------------------------------------- | ----------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| [`resource_not_found`](https://ownrecord.io/docs/reference/errors.md#resource_not_found) | 404         | The alert settings of this mode have no such channel. | Check the ID and that your credentials are scoped to the right organization, entity, brand and mode. |
| [`version_conflict`](https://ownrecord.io/docs/reference/errors.md#version_conflict)     | 409         | The settings changed at the same moment; retry.       | Fetch the object again and retry the change.                                                         |
| [`permission_denied`](https://ownrecord.io/docs/reference/errors.md#permission_denied)   | 403         | You can't change this organization's settings.        | Ask an organization owner or admin for a role or scope that allows this action.                      |

It can also return these [common errors](https://ownrecord.io/docs/reference.md#common-errors): [`validation_failed`](https://ownrecord.io/docs/reference/errors.md#validation_failed), [`api_version_unsupported`](https://ownrecord.io/docs/reference/errors.md#api_version_unsupported), [`invalid_json`](https://ownrecord.io/docs/reference/errors.md#invalid_json), [`unsupported_media_type`](https://ownrecord.io/docs/reference/errors.md#unsupported_media_type), [`authentication_required`](https://ownrecord.io/docs/reference/errors.md#authentication_required), [`api_key_invalid`](https://ownrecord.io/docs/reference/errors.md#api_key_invalid), [`idempotency_key_reused`](https://ownrecord.io/docs/reference/errors.md#idempotency_key_reused), [`idempotency_in_progress`](https://ownrecord.io/docs/reference/errors.md#idempotency_in_progress), [`approval_required`](https://ownrecord.io/docs/reference/errors.md#approval_required), [`approval_rejected`](https://ownrecord.io/docs/reference/errors.md#approval_rejected), [`approval_expired`](https://ownrecord.io/docs/reference/errors.md#approval_expired), [`stale_approval`](https://ownrecord.io/docs/reference/errors.md#stale_approval), [`approval_policy_denied`](https://ownrecord.io/docs/reference/errors.md#approval_policy_denied), [`rate_limited`](https://ownrecord.io/docs/reference/errors.md#rate_limited), [`internal_error`](https://ownrecord.io/docs/reference/errors.md#internal_error).
