Skip to main content

Notification Channels API

Notification Channels are reusable destination configurations — Slack channels, Teams webhooks, email recipients, or external webhook URLs — that can be applied to any Milestone or Sequence Trigger. Managing channels centrally means you only update a destination in one place when it changes.

GET /notification-channels

List all notification channels for the active Organizational Unit.

Request

No query parameters required.

Response

200 OK

[
{
"id": "ch-abc123",
"unit_id": "ou-xyz",
"name": "Sales Slack - #hot-leads",
"type": "slack",
"config": {
"channel_id": "C01ABCDEF",
"channel_name": "#hot-leads"
},
"created_at": "2025-03-01T10:00:00Z",
"updated_at": "2025-03-15T09:30:00Z"
}
]

Response Fields

FieldTypeDescription
idstringUnique identifier for this channel
unit_idstringOrganizational Unit this channel belongs to
namestringDisplay name for the channel
typestringChannel type: slack, teams, webhook, or email
configobjectType-specific destination configuration (see below)
created_attimestampWhen the channel was created
updated_attimestampWhen the channel was last updated

Config Object by Type

Slack:

FieldDescription
channel_idSlack channel ID (e.g., C01ABCDEF)
channel_nameDisplay name (e.g., #hot-leads)

Teams:

FieldDescription
webhook_urlIncoming webhook URL for the Teams channel
channel_nameDisplay name for the channel

Webhook:

FieldDescription
urlEndpoint URL that receives POST notifications
auth_headerOptional authorization header value

Email:

FieldDescription
recipientsComma-separated email addresses
subject_prefixOptional prefix for the email subject line

Example

curl -X GET "https://api.kenbun.io/notification-channels" \
-H "Authorization: Bearer <token>"

POST /notification-channels

Create a new notification channel.

Request Body

FieldTypeRequiredDescription
namestringYesDisplay name for the channel
typestringYesChannel type: slack, teams, webhook, or email
configobjectYesType-specific destination settings (see config fields above)

Example

curl -X POST "https://api.kenbun.io/notification-channels" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "RevOps Weekly Digest",
"type": "email",
"config": {
"recipients": "revops@company.com,sales-mgr@company.com",
"subject_prefix": "[kenbun Alert]"
}
}'

Response

201 Created — Returns the created channel object.

Common Errors

StatusMeaningSolution
400Missing or invalid fieldsEnsure name and type are provided and type is one of the valid values
401UnauthorizedCheck your API credentials

PUT /notification-channels/{id}

Update an existing notification channel.

Path Parameters

ParameterDescription
idThe channel ID to update

Request Body

Same fields as POST /notification-channels. All fields are replaced on update.

Example

curl -X PUT "https://api.kenbun.io/notification-channels/ch-abc123" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Sales Slack - #qualified-leads",
"type": "slack",
"config": {
"channel_id": "C09ZYXWVU",
"channel_name": "#qualified-leads"
}
}'

Response

200 OK — Returns the updated channel object.

Common Errors

StatusMeaningSolution
404Channel not foundVerify the channel ID exists in your OU

DELETE /notification-channels/{id}

Delete a notification channel.

Path Parameters

ParameterDescription
idThe channel ID to delete

Response

204 No Content — The channel has been deleted.

Important Note

Deleting a channel does not automatically update triggers that reference it. Any trigger that was using this channel will lose its destination configuration and will need to be reconfigured manually.

Example

curl -X DELETE "https://api.kenbun.io/notification-channels/ch-abc123" \
-H "Authorization: Bearer <token>"