Playback URLs
How to play a streaming asset once it's ready.
Once an asset transitions to status: 'ready', PlatformXe surfaces a playbackUrls object on every GET /assets/[id] response with concrete URLs you can hand to a player. Don't hardcode Mux URL patterns in your code — read them from the response.
URL set
| Field | Example | Use case |
|---|---|---|
hls | https://stream.mux.com/{playbackId}.m3u8 | Adaptive-bitrate streaming. The right default for <MuxPlayer> or any HLS-aware player |
mp4High | https://stream.mux.com/{playbackId}/high.mp4 | Download / share link; ~1080p |
mp4Medium | https://stream.mux.com/{playbackId}/medium.mp4 | ~720p |
mp4Low | https://stream.mux.com/{playbackId}/low.mp4 | ~480p, suitable for low-bandwidth |
thumbnail | https://image.mux.com/{playbackId}/thumbnail.jpg | Single-frame still |
animatedThumbnail | https://image.mux.com/{playbackId}/animated.gif | Looping preview |
React (Mux Player)
import MuxPlayer from '@mux/mux-player-react';
<MuxPlayer
playbackId={asset.muxPlaybackId}
streamType="on-demand"
metadata={{ video_title: 'Property tour' }}
/>
Vanilla HTML
<video
src="https://stream.mux.com/{playbackId}/high.mp4"
poster="https://image.mux.com/{playbackId}/thumbnail.jpg"
controls
playsinline
></video>
For broad codec compatibility, prefer HLS via a JS player. Raw MP4 works as a fallback.
Signed playback
All assets currently use playback_policy: ['public'] — anyone with the playback id can stream. For paywalled or expiring content, signed playback can be added (Mux supports it via JWT-signed URLs); not implemented in this release.
Long-term URL stability
Mux playback ids are stable for the lifetime of the asset. The URL patterns above are public API and Mux has committed to backward compatibility — but PlatformXe's playbackUrls field is still the safer place to read them so that if a URL pattern ever changes, only one file (playback-urls.ts) needs updating.