---
title: playManifest — Adaptive Streaming
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-management/content-delivery-playmanifest-adaptive-streaming
---

## playManifest — Adaptive Streaming


The `playManifest` endpoint is the primary way to get playback URLs for video and audio entries. It returns streaming manifests (HLS, DASH) or redirects to direct file URLs.

**URL pattern:**

```
https://cdnapisec.kaltura.com/p/\{PARTNER_ID\}/sp/\{PARTNER_ID\}00/playManifest/entryId/\{ENTRY_ID\}/format/\{FORMAT\}/protocol/https
```


Parameters are path-based key/value pairs (not query string), though query parameters are also accepted.

### Core Parameters

| Parameter | Short | Type | Description |
|-----------|-------|------|-------------|
| `entryId` | `e` | string | Entry ID to play |
| `format` | `f` | string | Delivery format (see table below) |
| `protocol` | `pt` | string | Media protocol for URLs inside manifest: `http`, `https` |
| `ks` | — | string | Kaltura Session (also accepted via `X-Kaltura-Ks` header) |

### Format Values

| Value | Description | Use Case |
|-------|-------------|----------|
| `applehttp` | HLS (Apple HTTP Live Streaming) | Most common — works on all modern browsers and mobile |
| `mpegdash` | MPEG-DASH | Alternative adaptive format (Widevine DRM) |
| `url` | Single progressive URL (redirect) | Simple `<video>` embed, no adaptive bitrate |
| `download` | Download URL (redirect with Content-Disposition) | Download buttons, offline access |
| `hds` | Adobe HTTP Dynamic Streaming | Legacy Flash-based players |
| `sl` | Microsoft Smooth Streaming (Silverlight) | Legacy Silverlight players |
| `hdnetworkmanifest` | Akamai HDS manifest | Akamai-specific delivery |
| `rtmp` | RTMP streaming | Legacy real-time streaming |
| `auto` | Auto-detect best format | Let the server choose |

### Flavor Selection Parameters

| Parameter | Short | Type | Description |
|-----------|-------|------|-------------|
| `flavorId` | `fi` | string | Single flavor asset ID |
| `flavorIds` | `fs` | string | Comma-separated flavor asset IDs |
| `flavorParamId` | `fp` | int | Single flavor params ID |
| `flavorParamIds` | `fps` | string | Comma-separated flavor params IDs |
| `tags` | `t` | string | Comma-separated flavor tags to filter by |

When no flavor selection parameters are provided, the server selects flavors based on format-specific tag defaults:
- **HLS/DASH:** `applembr` → `ipadnew,iphonenew` → `ipad,iphone`
- **Progressive HTTP:** `mbr` → `web`

### Bitrate Control

| Parameter | Short | Type | Description |
|-----------|-------|------|-------------|
| `preferredBitrate` | `pb` | int | Preferred bitrate in kbps |
| `maxBitrate` | `mb` | int | Maximum bitrate cap in kbps |
| `minBitrate` | `mib` | int | Minimum bitrate floor in kbps |

**Business scenario — bandwidth-constrained delivery:** A mobile app on a cellular connection caps `maxBitrate=1500` to prevent buffering, while a smart TV app on fiber sets `minBitrate=3000` for quality.

### Clipping and Seeking

| Parameter | Short | Type | Description |
|-----------|-------|------|-------------|
| `seekFrom` | `sf` | int | Start playback from this point (milliseconds) |
| `clipTo` | `ct` | int | End playback at this point (milliseconds) |

**Business scenario — content preview:** An e-commerce site shows 30-second previews of product videos. The playManifest URL includes `clipTo=30000` to limit playback without creating separate clips.

### Player and Session Parameters

| Parameter | Short | Type | Description |
|-----------|-------|------|-------------|
| `uiConfId` | `ui` | int | Player UI configuration ID |
| `sessionId` | — | string | Playback session ID for analytics |
| `playSessionId` | — | string | Play session tracking |
| `playbackContext` | `pc` | string | Playback context string |
| `referrer` | `r` | string | Base64-encoded referrer URL for access control |
| `responseFormat` | — | string | Response format: `redirect` (default), `f4m`, `m3u8`, `jsonp` |

### Delivery and CDN Parameters

| Parameter | Short | Type | Description |
|-----------|-------|------|-------------|
| `cdnHost` | `ch` | string | Override CDN hostname |
| `storageId` | `si` | int | Serve from a specific remote storage |
| `deliveryProfileId` | — | int | Use a specific delivery profile |
| `deliveryProfileIds` | — | string | Comma-separated delivery profile IDs |
| `deliveryCode` | `dc` | string | Delivery code identifier |

### Audio and Caption Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `defaultAudioLang` | string | Default audio language code |
| `muxedAudioLang` | string | Muxed audio track language |
| `tracks` | string | Track selection string |
| `disableCaptions` | bool | Suppress caption tracks from manifest |

### Sequence / Multi-Entry Playback

| Parameter | Type | Description |
|-----------|------|-------------|
| `sequence` | string | Comma-separated entry IDs for multi-entry sequence playback (HLS/DASH only) |

### Security Parameters

| Parameter | Short | Type | Description |
|-----------|-------|------|-------------|
| `expiry` | `ex` | int | URL token expiry (Unix timestamp) |
| `kt` | — | string | Kaltura URL token (pre-signed URL verification) |
| `hashes` | — | string | Access control hash verification |

### Examples


```bash
# HLS streaming (most common)
https://cdnapisec.kaltura.com/p/$KALTURA_PARTNER_ID/sp/$\{KALTURA_PARTNER_ID\}00/playManifest/entryId/$KALTURA_ENTRY_ID/format/applehttp/protocol/https

# MPEG-DASH streaming
https://cdnapisec.kaltura.com/p/$KALTURA_PARTNER_ID/sp/$\{KALTURA_PARTNER_ID\}00/playManifest/entryId/$KALTURA_ENTRY_ID/format/mpegdash/protocol/https

# Progressive download (single MP4)
https://cdnapisec.kaltura.com/p/$KALTURA_PARTNER_ID/sp/$\{KALTURA_PARTNER_ID\}00/playManifest/entryId/$KALTURA_ENTRY_ID/format/url/protocol/https

# Download with specific flavor
https://cdnapisec.kaltura.com/p/$KALTURA_PARTNER_ID/sp/$\{KALTURA_PARTNER_ID\}00/playManifest/entryId/$KALTURA_ENTRY_ID/format/download/protocol/https/flavorParamIds/0

# With access control (append KS)
https://cdnapisec.kaltura.com/p/$KALTURA_PARTNER_ID/sp/$\{KALTURA_PARTNER_ID\}00/playManifest/entryId/$KALTURA_ENTRY_ID/format/applehttp/protocol/https/ks/$KALTURA_KS

# 30-second preview clip
https://cdnapisec.kaltura.com/p/$KALTURA_PARTNER_ID/sp/$\{KALTURA_PARTNER_ID\}00/playManifest/entryId/$KALTURA_ENTRY_ID/format/applehttp/protocol/https/clipTo/30000

# Capped at 1500kbps maximum bitrate
https://cdnapisec.kaltura.com/p/$KALTURA_PARTNER_ID/sp/$\{KALTURA_PARTNER_ID\}00/playManifest/entryId/$KALTURA_ENTRY_ID/format/applehttp/protocol/https/maxBitrate/1500

# With referrer for domain restriction
https://cdnapisec.kaltura.com/p/$KALTURA_PARTNER_ID/sp/$\{KALTURA_PARTNER_ID\}00/playManifest/entryId/$KALTURA_ENTRY_ID/format/applehttp/protocol/https/referrer/aHR0cHM6Ly9teXNpdGUuY29t
```


**Download URL from entry object:** Every `KalturaMediaEntry` includes a `downloadUrl` property that is a pre-built playManifest download URL.
