> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livepeer.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Livestream overview

> Concepts for livestreams in Livepeer Studio: streams, sessions, ingest, playback, and health.

A **stream** in Livepeer Studio is a livestream object you create via the API. It has a unique **stream ID**, a **stream key** (for ingest), and a **playback ID** (for viewers). Livepeer manages the stream lifecycle (create, update, delete) and notifies your app of state changes via webhooks.

## 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](https://livepeer.studio/docs/api-reference/session/get-all) 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 as `recording.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](./stream-via-OBS).
* **WebRTC** - Low-latency ingest from the browser. See [Livestream from browser](./livestream-from-browser).
* **SRT** - Also supported for ingest.

When a stream is live, [stream health](./stream-health) provides metrics (e.g. Transcoding status, ingest rate) so you can monitor quality and troubleshoot.

## Multistream

You can send the same stream to multiple RTMP/RTMPS destinations (e.g. Twitch, YouTube, Facebook Live) using [multistream](./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](/solutions/livepeer-studio/docs/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](https://livepeer.studio/docs/api-reference/playback/get).

<Warning>
  **B-frames** (bidirectional frames) can break WebRTC playback and cause fallback to HLS. With OBS, use the Livepeer Studio preset or set keyframe interval to 1 and turn off B-frames. See [Stream via OBS](./stream-via-OBS).
</Warning>

## 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.

See [Webhooks](../analytics/webhooks) and [Listen to events](../analytics/listen-to-events).

## Guides

* [Create a livestream](./create-livestream)
* [Play a livestream](./playback-livestream)
* [Stream via OBS](./stream-via-OBS)
* [Livestream from browser](./livestream-from-browser)
* [Multistream](./multistream)
* [Clip a livestream](./clip-livestream)
* [Stream health](./stream-health)
* [Optimise latency](./optimise-latency)
