Channels
Notification channels define where WatchCron sends alerts when a check goes down (or recovers). The API lets you list all channels configured in your project.
Channels are currently read-only via the API. To create or configure notification channels, use the WatchCron dashboard. We plan to add channel CRUD endpoints in a future API version.
List channels
GET
/api/v1/channels
Returns all notification channels in the project associated with your API key.
curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://watchcron.com/api/v1/channels"
$response = Http::withToken('YOUR_API_KEY') ->get('https://watchcron.com/api/v1/channels'); $channels = $response->json('data');
response = requests.get( "https://watchcron.com/api/v1/channels", headers={"Authorization": "Bearer YOUR_API_KEY"}, ) channels = response.json()["data"]
const response = await fetch( "https://watchcron.com/api/v1/channels", { headers: { "Authorization": "Bearer YOUR_API_KEY" } } ); const { data: channels } = await response.json();
Response 200 OK
JSON
{
"data": [
{
"id": 1,
"name": "DevOps Email",
"type": "email",
"is_active": true,
"checks_count": 15,
"created_at": "2026-03-10T08:00:00Z"
},
{
"id": 2,
"name": "#alerts Slack",
"type": "slack",
"is_active": true,
"checks_count": 8,
"created_at": "2026-04-15T12:30:00Z"
},
{
"id": 3,
"name": "On-call webhook",
"type": "webhook",
"is_active": false,
"checks_count": 0,
"created_at": "2026-05-20T09:15:00Z"
}
]
}
Channel object fields
| Field | Type | Description |
|---|---|---|
id | integer | Channel identifier |
name | string | Display name of the channel |
type | string | Channel type (see table below) |
is_active | boolean | Whether the channel is enabled |
checks_count | integer | Number of checks using this channel |
created_at | string | ISO 8601 timestamp |
Channel types
| Type | Description | Available on |
|---|---|---|
email | Email notifications | All plans |
webhook | HTTP webhook (JSON payload) | All plans |
slack | Slack incoming webhook | Starter+ |
telegram | Telegram bot message | Starter+ |
discord | Discord webhook | Starter+ |
ms_teams | Microsoft Teams connector | Starter+ |
sms | SMS text message | Pro+ |
voice | Voice phone call | Business |
pagerduty | PagerDuty incident | Pro+ |
opsgenie | OpsGenie alert | Pro+ |
pushover | Pushover push notification | Starter+ |
google_chat | Google Chat webhook | Starter+ |
ntfy | Ntfy push notification | Starter+ |
Webhook payload
When a check flips status and a webhook channel is configured, WatchCron sends a POST request to your webhook URL with this JSON payload:
Webhook payload (POST to your URL)
{
"event": "check.down",
"check": {
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Nightly Backup",
"status": "down",
"last_ping_at": "2026-09-13T02:00:12Z"
},
"project": {
"name": "Production"
},
"timestamp": "2026-09-14T02:15:00Z"
}