HLSAnalyzer.com API Documentation

Overview

HLSAnalyzer.com is an online HLS and MPEG-DASH analyzer and monitoring service. Streams are individually added to the monitoring system (Master/Media playlists for HLS, or MPD manifests for DASH), after which they can be configured for monitoring and alerting. Alerts can be delivered via email, or HTTP callback POSTs. HLSAnalyzer.com generates both stream delivery outage alerts as well as ad-insertion (SCTE-35) cue stoppage alerts. The monitoring engine downloads every segment and playlist, and logs the primary characteristics of the stream delivery process for subsequent evaluation and processing. Summary reports for SCTE-35 cues as measured by the system, as well as an overview of all alert events can be downloaded for up to 90 days.

There are two primary ways of interacting with our system: a browser-based UI interface that allows access to most features of the analyzer, as well as an HTTP REST-based API that facilitates integration with automated pipelines. For examples on integrating our APIs with real-world applications, refer to our sample code available on Github.

Browser Interface

The HLSAnalyzer.com browser-based UI can be used to add and remove streams, check the current API status, add files from a .csv file, and configure alert parameters. The interface utilizes the same API calls that are documented in the next section, ensuring a consistent experience while interacting with the HLS Analyzer monitoring server. The browser can also be used to monitor the state of all links associated with an API key in real-time.

For the best experience, the use of Google Chrome, Firefox, or Microsoft Edge is recommended.

Monitor All Streams

URL: /monitor-hls-playlists/monitor-api/api_key/

All streams associated with the particular API key will be available for inspection, via an interface similar to the following:

Monitor All Streams Interface

Features include:

  • Consolidated summary of all streams being monitored:
    • Total number of non-live variants
    • Master playlist status and media playlist status for each stream
    • Playback URL for individual stream monitoring
    • LinkID for the master and variant streams
    • Total monitoring time for each stream
  • The estimated playback and outage values:
    • For playlists with multiple variants, these numbers are averaged across all variants
    • For playlists with a single variant, these numbers are the actual values for that stream
  • Alarm state for each stream, as well as enabling or disabling stream outage and SCTE-35 outage alerts individually for each stream. SCTE-35 alerts are disabled by default.
Stream Features Overview

View API Status

All of the important parameters of the API can be monitored, including the current alert configuration state.

View API Status Panel

Perform Stream Processing

HLS and DASH streams can be added and removed from this interface. LinkIDs may be supplied for each stream, to make their identification easier. When not supplied, LinkIDs will automatically be assigned by the server when adding streams. Stream outage alerts as well as SCTE-35 outage alerts (disabled by default) may be individually enabled or disabled for each stream.

Stream Processing Interface

Configure Alert Parameters

Global alert parameters can be configured via this panel. The outage and clear settings apply globally to all streams, with delivery stream outages being specified in units of seconds and SCTE-35 outages in units of minutes. Alerts may be globally enabled or disabled from this panel as well. One or both alert types (email and HTTP Post callback) can be filled or left blank.

Configure Alert Parameters Panel

Batch Processing

Batch processing functions perform functions that involve a large set of streams:

  • Export the currently active stream list
  • Reset all stream statistics without removing them, or remove all streams (requires enablement via check-box)
  • Add streams based on a .csv file with each line containing the HLS/DASH link followed by an optional LinkID, an optional SCTE-35 alert enablement (0/1), and an optional stream-delivery alert enablement (0/1) as shown here:
http://www.example.com/playlist.m3u8, mylinkID2, 0, 1
https://www.example.com/playlist2.m3u8,
http://www.example.com/playlist3.m3u8, mylinkID3, 1
https://www.example.com/manifest.mpd, myDASHlink, 0, 1
Batch Processing Interface

Logs

There are two types of logs: summary logs and detailed logs. Summary logs can be selected for up to 7 days, while detailed logs up to 24 hours. The following logging functions can be performed by the system:

  • Alert Event Summary: the summary of stream outage and SCTE-35 outage alerts for the specified duration
  • SCTE-35 Hourly Cue Summary: the sum of SCTE-35 cue durations (between out to in) as measured by the analyzer for every hour in the specified time range
  • SCTE-35 Daily Cue Summary: the sum of all SCTE-35 cues durations every 24 hours in the specified time range
  • All Alert Events: export every individual alert event
  • All SCTE-35 Cues: export all SCTE-35 cue measurements

Logs will be available for up to 30 days in the past.

Alert Functionality

The monitoring service supports two types of outage alerts: stream delivery outages, and SCTE-35 cue outages. SCTE-35 alerts are disabled by default and must be enabled via the browser-based UI or the REST-APIs. Global alerts must be enabled before either stream outage alerts or SCTE-35 cue outage alerts are monitored.

When playlists or segments are not delivered on time, then alerts may be received according to configuration parameters.

Media Playlist States

State Description
Live Playlist does not have an ENDLIST and is progressing by adding new segments.
Stalled New segments are not added to the playlist (stale playlist).
HTTPError The playlist cannot be downloaded due to HTTP errors.
LiveEnd The stream was in Live state, but has transitioned to ENDLIST. When in this state, no segment monitoring will be performed until the playlist returns to Live state again.
VOD The stream was never in Live state and has an ENDLIST.
Unknown The starting state of the stream, which will transition to any of the states described above.

Alert Sensitivity Modes

When either media playlist or segments arrive at a slower rate than the expected time duration, the playlist buffer will be depleted and eventually reach zero, which would indicate a rebuffering event at the player. There are 3 sensitivity modes for alerting, starting with most sensitive to the least:

Mode 3 (Most Sensitive)

The total time spent while the player is rebuffering is considered as the amount of outage and is used to trigger alerts. In this mode, segments are still arriving at the player, but cannot be downloaded in time and a player would experience rebuffering. The outage duration is compared to the duration of the rebuffering state (e.g. the hypothetical playback buffer is zero), and that can trigger an alert. This mode will track both complete stream outages, as well as intermittent delivery issues, but may generate many alerts since player outage durations are a common fact of online streaming.

Mode 3 - Most Sensitive Alert Diagram

Mode 2 (Normal Sensitivity)

In this mode, segments are also arriving slower than in real time. However, the analyzer will monitor the buffering state and an alert will trigger when the analyzer is continuously in a rebuffering state and the sum of Outage Durations exceeds the API-specified threshold.

Mode 2 - Normal Sensitivity Alert Diagram

Mode 1 (Least Sensitive)

In this mode, the analyzer will trigger an alert only when no segments can be downloaded. This mode can only track the total outages of the player, and will trigger when a continuous outage period has exceeded the threshold configured via APIs. This mode is suitable for customers who are only interested to know when playback has fully stopped due to a complete stream outage.

Mode 1 - Least Sensitive Alert Diagram

Master Playlist Alerts

Master playlists are downloaded once every 20 seconds. If the playlist cannot be downloaded for a specific period of time, an alert will be raised. The same API-specified threshold used for stream outages will be used for master playlists.

Alert Timing

A stream must be in outage condition for a minimum amount of time before an alert is generated. After the alert condition has been resolved, the clear condition must continue for a minimum amount of time before the clear condition is recognized by the system. This is shown in the following diagram:

Alert Timing Diagram

The sensitivity setting only applies to media playlist outages. Alerts for SCTE-35 outages and master playlists utilize a binary condition: whether the asset is present or not. In case of SCTE-35, alerts are raised when cues are not observed for the API-specified duration. We recommend customers evaluate the alert sensitivity settings before determining a level suitable for their system.

Example Alert Messages

Outage Alert:

Subject: OUTAGE: HLSAnalyzer Outage Alert for 5fa1ab24559c

This is an alert update from HLSAnalyzer.com for:
  https://example.com/example.m3u8

Alerts:
[5fa1ab24559c] Outage Time (UTC): 1610541723.00, Alert Condition Duration: 125.00 (sec),
Total Accumulated Stream Outage: 128.3 (sec), Status: Stalled,
Variant: https://example.com/example.m3u8

[5fa1ab24559c] This stream experienced inconsistent delivery for 125.00 seconds.

Clear Alert:

Subject: OK: HLSAnalyzer Clear Alert for 5fa1ab24559c

This is an alert update from HLSAnalyzer.com for:
  https://example.com/example.m3u8

Alerts:
[5fa1ab24559c] Outage Time (UTC): 1610542123.00, Alert Condition Duration: 305.00 (sec),
Total Accumulated Stream Outage: 386.0 (sec), Status: Live,
Variant: https://example.com/example.m3u8

[5fa1ab24559c] This stream's alert condition has been cleared after a consistent delivery period of 305.00 seconds.

Cloud Monitoring and Management

The HLSAnalyzer.com service is a fully managed and monitored solution that provides high service availability for our customers. The health of our system is monitored by:

  • Checking specific CPU and bandwidth threshold alerts every 15 minutes
  • Conducting hourly tests of the liveness of the monitoring server
  • Testing the end-to-end alert delivery capabilities of every monitoring instance every 6 hours
  • Evaluating the API key expiration date every 24 hours
  • Backing up of all configuration and stream settings every 6 hours

Our list of internal monitoring tools is always expanding to ensure that our service remains up and available and continuously monitors our clients' streams.

Transport Stream Data Extraction

HLSAnalyzer.com provides advanced transport stream (TS) feature extraction capabilities for compliance monitoring, video AI applications, and text-processing workflows. Our system extracts and processes critical metadata from MPEG transport streams in real-time.

Transport Stream Feature Extraction
Note: Transport stream data extraction is available for HLS streams only. DASH streams use fragmented MP4 (fMP4) segments which require different extraction methods (not yet supported).

Caption Extraction (CEA-608/708)

Extract closed captions from transport streams for compliance verification, accessibility auditing, and content analysis:

  • Real-time Streaming: Access captions via Server-Sent Events (SSE) for continuous 24/7 monitoring and live processing
  • Polling Mode: Retrieve captions every 30 seconds for batch processing and periodic compliance checks
  • Format Support: CEA-608 and CEA-708 closed caption standards with JSON and SRT output formats
  • 30-Day Archival: Historical caption data stored for up to 30 days for compliance audit trails and retrospective analysis

SCTE-35 Cue Extraction

Monitor and extract SCTE-35 ad insertion markers for programmatic advertising compliance and ad verification:

  • Transport Stream Source (HLS only): Extract SCTE-35 cues directly from TS segments with microsecond-precision timing
  • Playlist Source (HLS): Parse SCTE-35 markers from HLS playlist tags (#EXT-X-CUE-OUT, #EXT-X-DATERANGE)
  • Manifest Source (DASH): Parse SCTE-35 markers from DASH EventStream elements and inline emsg boxes
  • Multiple Formats: Support for splice_insert, time_signal, and custom SCTE-35 command types
  • 30-Day Archival: Complete SCTE-35 cue history archived for advertising compliance audits

Transport Stream Information

Access detailed MPEG-TS structure information including Program Association Table (PAT), Program Map Table (PMT), and individual Program IDs (PIDs) for comprehensive stream analysis and troubleshooting.

API Error Response Codes

Category Error Code Description
API EC100 General Error or Warning
EC101 Link quota limit reached
EC102 Invalid API Key
EC103 This feature requires a paid subscription
EC104 API Key has expired
M3U8/MPD Links EC110 Error condition with a specific text message
EC111 Warning condition with a specific text message
LinkID EC120 Invalid or missing LinkID
Alerting EC130 Invalid alert limit value specified
EC131 Invalid alert setup value specified

Analyzer Error and Warning Codes

Error Codes

Code Message Description
EC-1000 Media playlist has become a master playlist A URI previously associated with a media playlist has become a master playlist. This is generally an unexpected condition.
EC-1001 An unusually large jump in media playlist progression Media sequence numbers are expected to increase by 1, per RFC 8216 Section 6.2.2.
EC-1002 Media sequence wraparound According to RFC 8216 Section 6.2.2, media sequence numbers MUST not wrap.
EC-1003 Negatively increasing media sequence According to RFC 8216 Section 6.2.2, media sequence numbers MUST not decrease.
EC-1004 Extra player buffer accumulation This error indicates the arrival of new segments faster than in real-time. This condition may eventually lead to skipped segment playback.
EC-1005 Negative segment duration Segment duration must always be greater than zero.
EC-1006 Segment duration is greater than the target duration Segment duration is greater than the target duration by more than 150%.
EC-1007 An unusually large segment duration Any segment duration greater than 120 seconds is considered to be an error condition.
EC-1008 Invalid target or segment duration The server could not decipher the segment or target duration in the playlist.
EC-2000 Bandwidth parameter not specified for media Playlist According to RFC 8216 Section 4.3.4.2: "Every EXT-X-STREAM-INF tag MUST include the BANDWIDTH attribute."
EC-2001 The ratio of measured Peak Bitrate exceeds the specified bitrate The measured peak bitrate must be less than the specified bitrate from the Master playlist.
EC-2002 Could not download the segment The segment specified by the media playlist could not be downloaded.
EC-2003 Playlist and stream mismatch The parameter specified in the Master playlist does not match the stream's characteristic.
EC-2004 Could not download the playlist An HTTP error is reported by the operating system when trying to read the link.
EC-2005 Additional HLS conformance errors A specific error was encountered; refer to the error message for details.
EC-3000 Subscription required Some operations, such as downloading high-bitrate streams, require a subscription.

Warning Codes

Code Message Description
WA-1001 Rebuffering Error A rebuffering event was experienced by the monitoring server, due to the slow arrival of media playlist segments.
WA-1002 Slow segment download time Downloading of the segment took longer than the specified segment duration.
WA-1003 Media sequence number increment mismatch Media sequence number differences do not match the expected segment counts in a live playlist.
WA-2000 Master playlist feature not supported Media playlists that change resolution or are added or removed are not yet supported.

Copyright © 2026 Task One, LLC. All Rights Reserved.