Alert channels define where Overwatch sends notifications when a monitor’s status changes. You can configure channels for Slack, Discord, Microsoft Teams, email, and generic webhooks. Once a channel exists, you bind it to one or more monitors by passing alertChannelIds when creating or updating a monitor.
List alert channels
Returns all alert channels in your organization, including which monitors each channel is bound to.
Response
{
"data" : [
{
"id" : "alc_01j..." ,
"name" : "Ops Slack" ,
"type" : "SLACK" ,
"config" : { "webhookUrl" : "https://hooks.slack.com/services/..." },
"enabled" : true ,
"bindings" : [
{ "monitorId" : "mon_01j..." , "alertChannelId" : "alc_01j..." }
],
"createdAt" : "2025-01-01T00:00:00.000Z" ,
"updatedAt" : "2025-04-15T10:00:00.000Z"
}
]
}
Example
curl https://overwatchapp.dev/api/v1/alerts \
-H "Authorization: Bearer $API_KEY "
Create an alert channel
Creates a new alert channel. Requires admin or owner role. Returns 402 if your organization has no active subscription, and 422 with "upgrade": true if you have reached your alert channel limit.
Request body
Display name for the channel.
Channel type. One of SLACK, DISCORD, TEAMS, EMAIL, WEBHOOK.
Whether the channel should fire alerts. Defaults to true.
Config by channel type
Slack
Discord
Teams
Email
Webhook
{
"webhookUrl" : "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
}
For WEBHOOK channels, the optional secret is used to sign outgoing payloads with an HMAC signature so your endpoint can verify requests came from Overwatch.
Response
Returns 201 Created with the new channel object.
{
"data" : {
"id" : "alc_01j..." ,
"name" : "Ops Slack" ,
"type" : "SLACK" ,
"config" : { "webhookUrl" : "https://hooks.slack.com/services/..." },
"enabled" : true ,
"createdAt" : "2025-04-15T10:00:00.000Z" ,
"updatedAt" : "2025-04-15T10:00:00.000Z"
}
}
Example
curl -X POST https://overwatchapp.dev/api/v1/alerts \
-H "Authorization: Bearer $API_KEY " \
-H "Content-Type: application/json" \
-d '{
"name": "Ops Slack",
"type": "SLACK",
"config": { "webhookUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXX" }
}'
Get an alert channel
Returns a single alert channel by ID, including its monitor bindings.
Path parameters
Response
{
"data" : {
"id" : "alc_01j..." ,
"name" : "Ops Slack" ,
"type" : "SLACK" ,
"config" : { "webhookUrl" : "https://hooks.slack.com/services/..." },
"enabled" : true ,
"bindings" : [],
"createdAt" : "2025-01-01T00:00:00.000Z" ,
"updatedAt" : "2025-04-15T10:00:00.000Z"
}
}
Example
curl https://overwatchapp.dev/api/v1/alerts/ $CHANNEL_ID \
-H "Authorization: Bearer $API_KEY "
Update an alert channel
Updates one or more fields on an alert channel. All body fields are optional. Requires admin or owner role.
Path parameters
Request body
Updated type-specific configuration. Must match the channel’s existing type.
Set to false to silence alerts from this channel without deleting it.
Response
Returns the updated channel object with 200 OK.
Example
curl -X PATCH https://overwatchapp.dev/api/v1/alerts/ $CHANNEL_ID \
-H "Authorization: Bearer $API_KEY " \
-H "Content-Type: application/json" \
-d '{ "enabled": false }'
Delete an alert channel
DELETE /api/v1/alerts/:id
Permanently deletes an alert channel. Any monitor bindings to this channel are also removed. Requires admin or owner role.
Path parameters
Response
{
"data" : { "id" : "alc_01j..." }
}
Example
curl -X DELETE https://overwatchapp.dev/api/v1/alerts/ $CHANNEL_ID \
-H "Authorization: Bearer $API_KEY "
Binding channels to monitors
Alert channels do not fire on their own — you must bind them to at least one monitor. You do this by passing alertChannelIds when creating or updating a monitor:
# Bind a channel when creating a monitor
curl -X POST https://overwatchapp.dev/api/v1/monitors \
-H "Authorization: Bearer $API_KEY " \
-H "Content-Type: application/json" \
-d '{
"name": "API health",
"type": "HTTP",
"config": { "url": "https://api.example.com/health", "interval": 60 },
"alertChannelIds": ["alc_01j..."]
}'
# Update bindings on an existing monitor
curl -X PATCH https://overwatchapp.dev/api/v1/monitors/ $MONITOR_ID \
-H "Authorization: Bearer $API_KEY " \
-H "Content-Type: application/json" \
-d '{ "alertChannelIds": ["alc_01j...", "alc_02j..."] }'
Passing alertChannelIds in a PATCH replaces the full set of bindings. To remove all bindings, pass an empty array.