Skip to main content
See the Playback Guide for the full flow. Each step is detailed below.

Decide the playback method

string
string
Comma-separated, e.g. aac,ac3
integer
string
direct, remux, audio-only, or transcode
string
Path to request next
string
mkv, mp4, or dash
GET /watch/vod/{item_id}/play-info

Direct play / redirect notice

Direct play returns the raw file (Range supported for seeking). Otherwise returns:
GET /watch/vod/{item_id}, raw bytes at /watch/vod/{item_id}/file

Transcoded manifests

integer
Which available version to play
integer
integer
Requesting either manifest starts the transcode job if it isn’t already running; segment requests that follow are held until ffmpeg produces them.
Roku and Android are DASH-only. Always route those clients to master.mpd, never master.m3u8. See the CLAUDE.md design note on live/VOD format selection if you’re extending this.