---
title: "Create a delivery channel"
method: POST
path: "/orgs/{org_id}/channels"
tags: ["channels"]
---

# Create a delivery channel

`POST /orgs/{org_id}/channels`

Create a delivery channel for this org, or reuse an existing one.

Channels dedupe on `(type, config)`: posting the same Slack channel twice returns the original row with `channel_action: "reused"` rather than creating a near-duplicate. Attach the returned `id` to an alarm via `POST /orgs/{org_id}/alarms/{alarm_id}/channels`.

## Path parameters

- `org_id` string, required

## Request body

- CreateNotificationChannelReq — Body for **POST** `/orgs/{org_id}/channels` (standalone channel; same validation as an inline alarm channel, no `id`).
  - `config` object
  - `name` string, nullable
  - `type` 'email' | 'slack'

## Response `201`

Channel created or reused

- CreateNotificationChannelOut
  - `channel_action` 'linked' | 'reused' | 'created', required — How the request was wired to `NotificationChannels`.
  - `id` integer, required

## Other responses

- `400` — Bad request
- `403` — Forbidden

---

[API](https://skmtc.net/timbal-ai/apis/timbal-platform-api.md) · [All operations](https://skmtc.net/timbal-ai/apis/timbal-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/timbal-ai/timbal-platform-api/revisions/dd7e398ce0d3/schema)
