Skip to content

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 ​

  1. In the channel menu, click Integration, then the Webhooks tab.
  2. In Endpoint URL, enter your server's address, such as https://your-api.com/webhook.
  3. Under Events, tick the events to send. Use Select all or Clear all for a whole group.
  4. 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.
MessageWhat 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 ​

GroupEventSent whendata contains
Scheduled clipsscheduled_show_startedA broadcast from the Schedule page starts playingschedule_id, title, start_time
scheduled_show_endedA scheduled broadcast finishesschedule_id, title, end_time
Live streamlive_show_startedYour encoder connected and the channel went livetitle, location, thumbnail, start_time
live_show_endedYour encoder disconnected and the channel left livetitle, end_time
Upcoming show remindersshow_starting_1h55 to 65 minutes before a scheduled broadcast startsschedule_id, title, start_time, starts_in_seconds
show_starting_2m90 to 150 seconds beforeschedule_id, title, start_time, starts_in_seconds
show_starting_60s30 to 80 seconds beforeschedule_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:

json
{
  "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"
  }
}
FieldMeaning
eventThe event's name
channel_idYour channel's internal number
channel_uuidYour channel's UUID
timestampWhen the delivery was sent
dataThe event's details. See Events

A reminder looks like this:

json
{
  "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_uuid with 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.