Sessions
A stream is made up of one or more sessions—periods when the stream is active. Only one session is active at a time. Sessions have their own IDs and metadata. Use the sessions API to list sessions for a stream.Recording
If recording is enabled, the session can be stored as an asset when the stream ends. Webhooks such asrecording.started, recording.ready, and recording.waiting notify your backend of recording state. The resulting recording is an asset you can play back like any VOD asset.
Ingest
You can send live video into a stream with:- RTMP — Default; use with OBS or other RTMP encoders. See Stream via OBS.
- WebRTC — Low-latency ingest from the browser. See Livestream from browser.
- SRT — Also supported for ingest.
Multistream
You can send the same stream to multiple RTMP/RTMPS destinations (e.g. Twitch, YouTube, Facebook Live) using multistream. Targets are configured per stream in the dashboard or via the API. Webhooks (multistream.connected, multistream.error, multistream.disconnected) report target status.
Playback
Viewers use the playback ID to watch the stream. The Livepeer Player prefers WebRTC for low latency (about 0.5–3 seconds) and falls back to HLS when needed (e.g. if the stream has B-frames). Playback URLs can also be obtained from the Playback Info API.Webhooks
Common stream-related events:stream.started— Stream is active and the HLS URL is available.stream.idle— Stream is no longer active.recording.*— Recording started, ready, or waiting.multistream.*— Multistream target connected, error, or disconnected.