---
title: "Get an HLS CMAF playlist for a video. Returns a master playlist when `track` is omitted, or a single-track media playlist when `track` is supplied. The playlist references each segment + per-track init segment via getVideoBlob, addressed by content hash. The `uri` is an AT-URI pointing at a playable record — today only place.stream.video records are supported, but the surface is collection-agnostic so other record types can join later."
method: GET
path: "/xrpc/place.stream.playback.getVideoPlaylist"
tags: ["place.stream.playback"]
---

# Get an HLS CMAF playlist for a video. Returns a master playlist when `track` is omitted, or a single-track media playlist when `track` is supplied. The playlist references each segment + per-track init segment via getVideoBlob, addressed by content hash. The `uri` is an AT-URI pointing at a playable record — today only place.stream.video records are supported, but the surface is collection-agnostic so other record types can join later.

`GET /xrpc/place.stream.playback.getVideoPlaylist`

## Query parameters

- `uri` string, uri, required — AT-URI of the record to play back (e.g. at://did:plc:.../place.stream.video/<rkey>).
- `track` string — Track ID (stringified u32 matching the MUXL container) for a single-track media playlist. Omit for the master playlist.
- `start` integer — Start time in milliseconds from the beginning of the video. Defaults to 0. For a place.stream.video record whose source is a place.stream.media.defs#sourceClip, this is in the clip's local timeline (0 == the clip's start).
- `end` integer — End time in milliseconds. Omit to include all remaining content. Local to the clip's timeline when playing back a sourceClip record.
- `sid` string — Opaque playback session identifier. Omit on the master playlist request; the server generates one and embeds it in every sub-playlist URL it returns. Players never have to construct it themselves — they just follow the URLs the master playlist hands them, which carry the sid into media-playlist + segment requests. Used downstream to correlate a player's playlist + segment fetches for view-count accounting.

## Response `200`

Success

## Other responses

- `400` — Bad Request

## Changes

- **2026-05-20** `3e9273785059` — 1 info
  - endpoint added
- **2026-05-18** `c001420ea608` — 1 breaking
  - api path removed without deprecation
- **2026-05-15** `63354df75daa` — 1 info
  - added the new optional `query` request parameter `sid`
- **2026-05-14** `2b214ec62c54` — 2 breaking, 2 warning
  - added the new required `query` request parameter `uri`
  - added `subschema #4` to the `error` response property `oneOf` list for the response status `400`
  - deleted the `query` request parameter `did`
  - deleted the `query` request parameter `rkey`
- **2026-05-14** `510d64b5fee8` — 1 info
  - endpoint added

[Full history](https://skmtc.dev/streamplace/apis/generated-lexicon-api-schema/changes/xrpc/place.stream.playback.getVideoPlaylist/get.md)

---

[API](https://skmtc.dev/streamplace/apis/generated-lexicon-api-schema.md) · [All operations](https://skmtc.dev/streamplace/apis/generated-lexicon-api-schema/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/streamplace/generated-lexicon-api-schema/revisions/8e2ce7f5d85b/schema)
