Official TypeScript library providing comprehensive client access to Mux's video infrastructure API including asset management, live streaming, analytics, and webhook handling
Live streaming functionality for creating, managing, and controlling real-time video streams with simulcast support, playback restrictions, and automatic recording options.
Create and configure live streams for real-time video broadcasting.
/**
* Create a new live stream
* @param body - Live stream creation parameters
* @returns Promise resolving to the created live stream
*/
create(body: LiveStreamCreateParams): Promise<LiveStream>;
interface LiveStreamCreateParams {
/** Playback policies for the live stream */
playback_policies?: Array<PlaybackPolicy>;
/** Asset settings for recorded content */
new_asset_settings?: NewAssetSettings;
/** Whether to reconnect automatically */
reconnect_window?: number;
/** Whether the stream should be reduced latency */
reduced_latency?: boolean;
/** Simulcast target configurations */
simulcast_targets?: Array<CreateSimulcastTargetRequest>;
/** Test mode flag */
test?: boolean;
/** Generated subtitle settings */
generated_subtitles?: Array<LiveStreamGeneratedSubtitleSettings>;
/** Embedded subtitle settings */
embedded_subtitles?: Array<LiveStreamEmbeddedSubtitleSettings>;
}
interface LiveStream {
/** Unique identifier for the live stream */
id: string;
/** Creation timestamp */
created_at: string;
/** Stream key for broadcasting */
stream_key: string;
/** Current status of the live stream */
status?: 'idle' | 'active' | 'disabled';
/** Array of playback IDs */
playback_ids?: Array<PlaybackID>;
/** RTMP ingest URL */
rtmp?: RTMPSettings;
/** SRT ingest settings */
srt?: SRTSettings;
/** Reconnection window in seconds */
reconnect_window?: number;
/** Recent asset IDs created from this stream */
recent_asset_ids?: Array<string>;
}
interface NewAssetSettings {
/** Playback policies for created assets */
playback_policies?: Array<PlaybackPolicy>;
/** MP4 support for created assets */
mp4_support?: Mp4Support;
/** Audio normalization for created assets */
normalize_audio?: boolean;
}Usage Examples:
// Basic live stream creation
const liveStream = await mux.video.liveStreams.create({
playback_policies: ["public"],
new_asset_settings: {
playback_policies: ["public"],
mp4_support: "standard",
},
});
// Advanced live stream with simulcast
const liveStream = await mux.video.liveStreams.create({
playback_policies: ["signed"],
reduced_latency: true,
reconnect_window: 60,
simulcast_targets: [
{
url: "rtmp://live.twitch.tv/live/",
stream_key: "your-twitch-stream-key",
},
],
generated_subtitles: [
{
language_code: "en",
name: "English Auto-Generated",
},
],
});Retrieve, update, and manage live stream settings.
/**
* Retrieve live stream details
* @param liveStreamId - The live stream identifier
* @returns Promise resolving to live stream details
*/
retrieve(liveStreamId: string): Promise<LiveStream>;
/**
* Update live stream settings
* @param liveStreamId - The live stream identifier
* @param body - Update parameters
* @returns Promise resolving to updated live stream
*/
update(liveStreamId: string, body: LiveStreamUpdateParams): Promise<LiveStream>;
interface LiveStreamUpdateParams {
/** Updated playback policy */
playback_policies?: Array<PlaybackPolicy>;
/** Updated asset settings */
new_asset_settings?: NewAssetSettings;
/** Updated reconnection window */
reconnect_window?: number;
/** Updated latency mode */
reduced_latency?: boolean;
}
/**
* List live streams with optional filtering and pagination
* @param query - Listing parameters
* @returns Paginated list of live streams
*/
list(query?: LiveStreamListParams): PagePromise<LiveStreamsBasePage, LiveStream>;
interface LiveStreamListParams extends BasePageParams {
/** Filter by stream status */
status?: 'active' | 'idle' | 'disabled';
/** Filter streams created after this timestamp */
created_at_gte?: string;
}
/**
* Delete a live stream
* @param liveStreamId - The live stream identifier
* @returns Promise that resolves when deletion is complete
*/
delete(liveStreamId: string): Promise<void>;Control live stream state and lifecycle operations.
/**
* Complete a live stream and create an asset
* @param liveStreamId - The live stream identifier
* @returns Promise that resolves when completion is initiated
*/
complete(liveStreamId: string): Promise<void>;
/**
* Disable a live stream temporarily
* @param liveStreamId - The live stream identifier
* @returns Promise that resolves when stream is disabled
*/
disable(liveStreamId: string): Promise<void>;
/**
* Enable a previously disabled live stream
* @param liveStreamId - The live stream identifier
* @returns Promise that resolves when stream is enabled
*/
enable(liveStreamId: string): Promise<void>;
/**
* Reset the stream key for a live stream
* @param liveStreamId - The live stream identifier
* @returns Promise resolving to updated live stream with new stream key
*/
resetStreamKey(liveStreamId: string): Promise<LiveStream>;Manage playback IDs for live stream access control.
/**
* Create a playback ID for a live stream
* @param liveStreamId - The live stream identifier
* @param body - Playback ID creation parameters
* @returns Promise resolving to the created playback ID
*/
createPlaybackId(
liveStreamId: string,
body: LiveStreamCreatePlaybackIDParams
): Promise<PlaybackID>;
interface LiveStreamCreatePlaybackIDParams {
/** Access policy for the playback ID */
policy: PlaybackPolicy;
/** DRM configuration ID (required for DRM policy) */
drm_configuration_id?: string;
}
/**
* Retrieve playback ID details for a live stream
* @param liveStreamId - The live stream identifier
* @param playbackId - The playback ID
* @returns Promise resolving to playback ID details
*/
retrievePlaybackId(liveStreamId: string, playbackId: string): Promise<PlaybackID>;
/**
* Delete a playback ID from a live stream
* @param liveStreamId - The live stream identifier
* @param playbackId - The playback ID to delete
* @returns Promise that resolves when deletion is complete
*/
deletePlaybackId(liveStreamId: string, playbackId: string): Promise<void>;Add and manage simulcast targets for broadcasting to multiple platforms simultaneously.
/**
* Create a simulcast target for a live stream
* @param liveStreamId - The live stream identifier
* @param body - Simulcast target creation parameters
* @returns Promise resolving to the created simulcast target
*/
createSimulcastTarget(
liveStreamId: string,
body: LiveStreamCreateSimulcastTargetParams
): Promise<SimulcastTarget>;
interface LiveStreamCreateSimulcastTargetParams {
/** RTMP URL for the simulcast target */
url: string;
/** Stream key for the target platform */
stream_key?: string;
/** Passthrough data */
passthrough?: string;
}
interface SimulcastTarget {
/** Simulcast target identifier */
id: string;
/** Target RTMP URL */
url: string;
/** Current status of the simulcast */
status?: 'idle' | 'starting' | 'broadcasting' | 'errored';
/** Error details if status is errored */
error_severity?: 'normal' | 'fatal';
}
/**
* Retrieve simulcast target details
* @param liveStreamId - The live stream identifier
* @param simulcastTargetId - The simulcast target identifier
* @returns Promise resolving to simulcast target details
*/
retrieveSimulcastTarget(
liveStreamId: string,
simulcastTargetId: string
): Promise<SimulcastTarget>;
/**
* Delete a simulcast target
* @param liveStreamId - The live stream identifier
* @param simulcastTargetId - The simulcast target identifier
* @returns Promise that resolves when deletion is complete
*/
deleteSimulcastTarget(liveStreamId: string, simulcastTargetId: string): Promise<void>;Configure subtitle generation and embedding for live streams.
/**
* Update embedded subtitle settings for a live stream
* @param liveStreamId - The live stream identifier
* @param body - Embedded subtitle update parameters
* @returns Promise resolving to updated live stream
*/
updateEmbeddedSubtitles(
liveStreamId: string,
body: LiveStreamUpdateEmbeddedSubtitlesParams
): Promise<LiveStream>;
interface LiveStreamUpdateEmbeddedSubtitlesParams {
/** Array of embedded subtitle configurations */
embedded_subtitles?: Array<LiveStreamEmbeddedSubtitleSettings>;
}
/**
* Update generated subtitle settings for a live stream
* @param liveStreamId - The live stream identifier
* @param body - Generated subtitle update parameters
* @returns Promise resolving to updated live stream
*/
updateGeneratedSubtitles(
liveStreamId: string,
body: LiveStreamUpdateGeneratedSubtitlesParams
): Promise<LiveStream>;
interface LiveStreamUpdateGeneratedSubtitlesParams {
/** Array of generated subtitle configurations */
generated_subtitles?: Array<LiveStreamGeneratedSubtitleSettings>;
}
interface LiveStreamEmbeddedSubtitleSettings {
/** Display name for the subtitle track */
name?: string;
/** Language code (ISO 639-1) */
language_code?: string;
/** Passthrough data */
passthrough?: string;
}
interface LiveStreamGeneratedSubtitleSettings {
/** Display name for the subtitle track */
name?: string;
/** Language code for transcription */
language_code?: string;
/** Transcription vocabulary ID */
transcription_vocabulary_id?: string;
/** Passthrough data */
passthrough?: string;
}Configure how recorded assets are created from live streams.
/**
* Update new asset settings for static renditions
* @param liveStreamId - The live stream identifier
* @param body - Static rendition update parameters
* @returns Promise resolving to updated live stream
*/
updateNewAssetSettingsStaticRenditions(
liveStreamId: string,
body: LiveStreamUpdateNewAssetSettingsStaticRenditionsParams
): Promise<LiveStream>;
interface LiveStreamUpdateNewAssetSettingsStaticRenditionsParams {
/** Static rendition settings for recorded assets */
new_asset_settings?: {
mp4_support?: Mp4Support;
normalize_audio?: boolean;
playback_policies?: Array<PlaybackPolicy>;
};
}interface RTMPSettings {
/** RTMP stream URL */
stream_url?: string;
/** RTMP stream key */
stream_key?: string;
}
interface SRTSettings {
/** SRT endpoint */
endpoint?: string;
/** SRT passphrase */
passphrase?: string;
}
interface CreateSimulcastTargetRequest {
/** Target RTMP URL */
url: string;
/** Stream key for target */
stream_key?: string;
/** Passthrough data */
passthrough?: string;
}
type Mp4Support = 'none' | 'standard' | 'capped-1080p';
type PlaybackPolicy = 'public' | 'signed' | 'drm';
interface PlaybackID {
id: string;
policy: PlaybackPolicy;
drm_configuration_id?: string;
}Install with Tessl CLI
npx tessl i tessl/npm-mux--mux-nodedocs