How do I Set Up Webhooks?
Webhooks tell your server when something happens on your channel. When a show starts, ends or is about to start, Cecula Stream sends a POST request with the details to the address you choose. Owners and administrators can set up webhooks.
Add Your Endpoint
- In the channel menu, click Integration, then the Webhooks tab.
- In Endpoint URL, enter your server's address, such as
https://your-api.com/webhook. - Under Events, tick the events to send. Use Select all or Clear all for a whole group.
- Click Save Webhook Settings. Cecula Stream confirms Webhook settings saved successfully!
Only the events you tick are sent.
How the Address Is Checked
When you save, Cecula Stream sends a test GET request to the address:
- Accepted: any answer except a 404 or server error. Answers such as 401, 403 or 405 are fine, since most webhook endpoints only accept
POST. - Refused: a 404, a server error or an address that can't be reached.
| Message | What to do |
|---|---|
| The webhook URL could not be validated (Returned 404 Not Found). | Check the address is correct and your endpoint exists |
| The webhook server appears to be offline or unreachable (Returned …). | Check your server is running |
| Validation failed: The domain or URL could not be reached. | Check the domain, and that your server is reachable from the internet |
Events
| Group | Event | Sent when | data contains |
|---|---|---|---|
| Scheduled clips | scheduled_show_started | A broadcast from the Schedule page starts playing | schedule_id, title, start_time |
scheduled_show_ended | A scheduled broadcast finishes | schedule_id, title, end_time | |
| Live stream | live_show_started | Your encoder connected and the channel went live | title, location, thumbnail, start_time |
live_show_ended | Your encoder disconnected and the channel left live | title, end_time | |
| Upcoming show reminders | show_starting_1h | 55 to 65 minutes before a scheduled broadcast starts | schedule_id, title, start_time, starts_in_seconds |
show_starting_2m | 90 to 150 seconds before | schedule_id, title, start_time, starts_in_seconds | |
show_starting_60s | 30 to 80 seconds before | schedule_id, title, start_time, starts_in_seconds |
title: for scheduled events, the video's name. For live events, your Live Event Title.- Scheduled events: these cover broadcasts on the Schedule page, not program episodes.
- Reminders: each is sent once per broadcast, for broadcasts that haven't started yet. A broadcast added less than 55 minutes before it starts doesn't get the one-hour reminder.
The Payload
Every delivery is a POST with a JSON body of the same shape:
{
"event": "live_show_started",
"channel_id": 4,
"channel_uuid": "3f6c2a1e-8b7d-4c1a-9e2f-5d4b3a2c1f0e",
"timestamp": "2026-09-15T09:00:03+01:00",
"data": {
"title": "Sunday Service Live",
"location": "Uyo, Akwa Ibom",
"thumbnail": "https://stream.cecula.com/storage/thumbnails/banner.jpg",
"start_time": "2026-09-15T09:00:03+01:00"
}
}| Field | Meaning |
|---|---|
event | The event's name |
channel_id | Your channel's internal number |
channel_uuid | Your channel's UUID |
timestamp | When the delivery was sent |
data | The event's details. See Events |
A reminder looks like this:
{
"event": "show_starting_2m",
"channel_id": 4,
"channel_uuid": "3f6c2a1e-8b7d-4c1a-9e2f-5d4b3a2c1f0e",
"timestamp": "2026-09-15T08:58:00+01:00",
"data": {
"schedule_id": 412,
"title": "Morning Devotion — Week 34",
"start_time": "2026-09-15T09:00:00+01:00",
"starts_in_seconds": 120
}
}Build Your Endpoint
- Answer quickly with a 2xx status. Deliveries time out after 10 seconds. Reply first, then do any slow work.
- Check the channel. Compare
channel_uuidwith your channel's UUID before acting. - Ignore unknown events, so new events don't break your endpoint.
- Keep the address private. Deliveries aren't signed, so use HTTPS and put a hard-to-guess token in the address, such as
https://your-api.com/webhook/8f2c9d….
Failed Deliveries
A delivery fails if your endpoint answers with anything other than a 2xx status, takes longer than 10 seconds, or can't be reached.
⚠️ One failure pauses webhooks for an hour
After a failed delivery, all webhook deliveries for your channel stop for one hour. Events during that hour aren't sent, and failed deliveries aren't retried. Saving your settings again doesn't end the pause.
If you depend on webhooks, also check the Channel API from time to time, so a missed event doesn't go unnoticed. See How do I Use the Channel API?.
Stop Webhooks
Untick every event, or clear Endpoint URL, then click Save Webhook Settings.

