PlatformXeDocs
Get API Key

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

FieldExampleUse case
hlshttps://stream.mux.com/{playbackId}.m3u8Adaptive-bitrate streaming. The right default for <MuxPlayer> or any HLS-aware player
mp4Highhttps://stream.mux.com/{playbackId}/high.mp4Download / share link; ~1080p
mp4Mediumhttps://stream.mux.com/{playbackId}/medium.mp4~720p
mp4Lowhttps://stream.mux.com/{playbackId}/low.mp4~480p, suitable for low-bandwidth
thumbnailhttps://image.mux.com/{playbackId}/thumbnail.jpgSingle-frame still
animatedThumbnailhttps://image.mux.com/{playbackId}/animated.gifLooping 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.