Live TV API
List channels, start playback, and read guide data.
Try it with a token
Use a bearer token from the Authentication flow for authenticated playback requests.
Channels
List channels
GET /api/livetv/channels
Authorization: Bearer <token>curl -sS \
-H "Authorization: Bearer $OMNILUX_TOKEN" \
http://your-server:4000/api/livetv/channelsResponse:
[
{
"id": 1,
"name": "Movies",
"number": 1,
"sourceType": "virtual",
"scheduleMode": "shuffle",
"alwaysOn": false,
"category": "Movies",
"logoUrl": "/artwork/channels/1/logo.jpg",
"enabled": true
}
]Channel management exists in the admin surface, but this public page focuses on playback and guide consumption.
Stream playback
Watch a channel
GET /api/livetv/watch/:channelId
Authorization: Bearer <token>Returns an HLS stream URL. For pre-warmed channels, this resolves immediately. For cold-start channels, the server starts the stream and long-polls until ready (up to 5 seconds).
Response: Redirects to live.m3u8.
curl -i \
-H "Authorization: Bearer $OMNILUX_TOKEN" \
http://your-server:4000/api/livetv/watch/1HLS manifest
GET /api/livetv/watch/:channelId/live.m3u8
Authorization: Bearer <token>HLS manifest with 6-second segments and a 3-segment sliding window.
Authentication for playback should use the standard bearer-token flow documented in Authentication.
EPG
Get EPG data
GET /api/livetv/epg
Authorization: Bearer <token>curl -sS \
-H "Authorization: Bearer $OMNILUX_TOKEN" \
"http://your-server:4000/api/livetv/epg?start=2024-01-01T00:00:00Z&end=2024-01-02T00:00:00Z&channelIds=1,2"Query parameters:
| Parameter | Type | Description |
|---|---|---|
start | string | ISO 8601 start time |
end | string | ISO 8601 end time |
channelIds | string | Comma-separated channel IDs |
Response:
{
"channels": [
{
"id": 1,
"name": "Movies",
"programs": [
{
"title": "Die Hard",
"start": "2024-01-01T20:00:00Z",
"end": "2024-01-01T22:11:00Z",
"description": "An NYPD officer...",
"posterUrl": "/artwork/movies/562/poster.jpg"
}
]
}
]
}Additional Live TV administration and external-client workflows exist in the product, but this public reference intentionally limits itself to core channel playback and guide access.