AIOStreamsAIOStreams
ReferenceAddon Protocol

Live TV

Channel catalogs, programme guides and channel numbers, which Jellyfin clients show as Live TV.

Catalogs of channels don't show as libraries in Jellyfin clients. Together they make up Live TV: one list of channels, their groups, and a programme guide. The guide uses Stremio's own format, so the same catalog fills Stremio's guide too.

Channel catalogs

A catalog is a live one when its type is tv or channel, or when it declares the date extra of a guide. Its entries are the channels, in the catalog's order, one catalog after another in the configuration's catalog order.

"catalogs": [
  {
    "type": "tv",
    "id": "channels",
    "name": "Channels",
    "extra": [{ "name": "genre", "options": ["News", "Sports", "Kids"] }, { "name": "skip" }]
  }
]
FieldMeaning
genreThe channel groups. Clients list them as Live TV's groups and ask for one group's channels
skipPaging. Clients page through long lists, so a catalog with hundreds of channels should allow it

An entry also opens as a channel outside a live catalog when its type is tv or channel, its meta has behaviorHints.isLive: true, or every one of its videos has a startTime.

Channels

Channels are ordinary catalog entries and metas, with these fields read as well:

FieldTypeMeaning
channelNumberstring or numberThe channel's number. Without one, channels are numbered by their place in the whole list
logoURLThe channel's picture in lists and the guide, in place of poster
videosarrayThe channel's programmes, in a guide answer
behaviorHints.catchupDaysnumberHow many days back the channel's programmes play from their start, as catch-up

A channel's streams are its sources, each a version the user can switch to. The apps reopen a source that drops, and move on to the next one when it keeps failing.

Guides

A guide catalog declares the date extra; set behaviorHints.epgProvider in the manifest too for Stremio to show it. It is asked for one UTC day at a time, and answers with its channels and each channel's programmes that day. Stremio reads the answer from metasDetailed, so send the entries there rather than in metas.

{
  "behaviorHints": { "epgProvider": true },
  "catalogs": [
    {
      "type": "tv",
      "id": "guide",
      "name": "Guide",
      "extra": [{ "name": "date" }, { "name": "genre", "options": ["News", "Sports"] }, { "name": "skip" }]
    }
  ]
}
GET {addonBase}/catalog/tv/guide/date=2026-11-05&skip=100.json
{
  "metasDetailed": [
    {
      "id": "mytv:bbc-news",
      "type": "tv",
      "name": "BBC News",
      "logo": "https://…",
      "channelNumber": 231,
      "videos": [
        {
          "id": "mytv:bbc-news:1762300800",
          "title": "Newsday",
          "startTime": "2026-11-05T00:00:00Z",
          "endTime": "2026-11-05T01:00:00Z",
          "overview": "The latest news from around the world.",
          "thumbnail": "https://…",
          "genres": ["News"]
        }
      ]
    }
  ]
}

Stremio also asks without date to list the channels alone; answer that as usual, in metas.

Programme fieldMeaning
startTime, endTimeWhen it airs, as ISO dates. A programme without both is left out of the guide
titleIts title; name is read when there is no title
overviewIts description
thumbnailIts picture
backgroundA wide picture for its page
genresIts genres. Movie, news, kids and sports genres mark it as one in Jellyfin's guide
season, episodeIts season and episode numbers, for an episode of a show
cast, directorsNames, shown as its people
imdbIdIts IMDb id

The guide covers a week from today, and as far back as the addons declare catch-up. Channels are listed from pages without a date, and their programmes are asked for from the same catalog, group and page with one, so keep a channel on the same page with or without a date.

A guide that also declares the ids extra is asked for just the channels on screen, by their ids, comma-separated. Answer with those channels in metasDetailed, whatever page they're on:

GET {addonBase}/catalog/tv/guide/ids=mytv%3Abbc-news,mytv%3Aitv1&date=2026-11-05.json

Catch-up

A channel with behaviorHints.catchupDays keeps its programmes that long. Any programme of its that has begun within those days plays from its start: AIOStreams asks for the programme's own video id as the stream, and plays what you answer as a recording rather than live.

GET {addonBase}/stream/tv/mytv:bbc-news:1762300800.json
{ "streams": [{ "url": "https://…/archive/bbc-news/2026-11-05T00-00/60.ts", "name": "Catch-up" }] }

Answer with the programme from its start to its end, or no streams where it's gone. A stream that can be seeked plays best; an Xtream archive (/timeshift/…) only plays from where it starts.

Declare the longest catch-up of your channels in the manifest too, and the guide goes that many days back. Without it, the guide starts today.

"behaviorHints": { "epgProvider": true, "catchupDays": 7 }

On this page