Xtream Codes API Explained: How M3U8 Playlists and IPTV Panels Actually Work

Last updated: July 7, 2026 | Reviewed by StreamingVPS.com Engineering Team

The Xtream Codes API is a login-based interface — not a static file — that lets IPTV player apps like TiviMate or IPTV Smarters pull live channels, VOD libraries, series, and EPG data on demand from a server URL, username, and password. It’s different from a plain M3U8 playlist, which is just a flat text list fetched once. If you’re building or hosting an IPTV service, understanding which one your setup actually needs — and what has to run on your VPS to support it — changes your whole architecture.

Key Takeaways

  • The Xtream Codes API authenticates with a server URL, username, and password, then serves JSON responses through endpoints like player_api.php?action=get_live_streams — it is not a downloadable playlist file.
  • A plain M3U8/M3U file is a static, one-time-fetch text list of stream URLs; it has no login, no live category filtering, and no built-in EPG sync.
  • The original Xtream-Codes company was shut down by a multi-country law enforcement raid in September 2019, but the API format lives on through community forks like Xtream UI and the commercial XUI.one panel.
  • Streaming engines like Wowza and Flussonic generate and deliver the actual video; neither speaks the Xtream Codes API natively, so a separate panel or middleware layer sits in front of them to translate.
  • Running an Xtream-compatible panel is legal on its own — the legal risk is entirely about whether the channels behind it are properly licensed, not about the API format itself.

What Is the Xtream Codes API, Really?

Xtream Codes started as commercial panel software for managing an IPTV reseller business: user accounts, channel bouquets, credits, resellers-of-resellers, and a client-facing API that any compatible player app could authenticate against. The “API” part is what survived and matters technically today. A client app sends a request like:

http://yourdomain.com:8080/player_api.php?username=demo&password=demo

The server responds with a JSON object describing the account (expiry date, max connections, active status), and from there the app calls action-specific endpoints to pull categories and streams. This is the exact mechanism apps like TiviMate, IPTV Smarters Pro, and GSE Smart IPTV expect when you enter an “Xtream Codes login” instead of an M3U URL — three fields (host, username, password) instead of one long playlist link.

How Is the Xtream Codes API Different From a Plain M3U8 Playlist?

An M3U8 playlist is a text file, full stop. It lists stream URLs — often with #EXTINF metadata for channel name, logo, and group — and the player downloads it once and holds that list until you refresh it manually. There’s no session, no per-category loading, and EPG (if present) is usually a separate XMLTV file the player fetches on its own schedule.

The Xtream Codes API instead authenticates a session and returns data in small, filtered JSON chunks. When you open the “Sports” category in a player, it isn’t loading a 20,000-line playlist and filtering client-side — it’s calling get_live_streams with a category_id parameter and getting back just that category. This is also why Xtream-based services can push channel additions or removals instantly: the client re-queries live, it doesn’t re-download a static file.

Plain M3U8Xtream Codes API
Delivery mechanismStatic text file, fetched onceAuthenticated JSON API, queried live
Login modelNone (URL is the credential)Username + password + server URL
Category filteringClient-side, after full downloadServer-side, per API call
VOD / series supportRequires separate playlists or noneNative (get_vod_streams, get_series)
EPGSeparate XMLTV file, manually syncedServed via get_short_epg / get_simple_data_table
Update propagationManual refresh requiredImmediate on next API call

What Do the Actual API Endpoints Look Like?

All requests go through a single player_api.php entry point with an action parameter. The core actions a typical panel implements:

Endpoint actionWhat it returns
get_live_categoriesList of live TV category groups (e.g. Sports, News, Movies)
get_live_streamsChannels in a category, or all channels if no category_id is passed
get_vod_categories / get_vod_streamsVOD library structure and individual titles
get_series / get_series_infoTV series, seasons, and episode metadata
get_short_epgNow/next EPG entries for a given stream_id
get_simple_data_tableFuller EPG guide data for a channel

Actual stream playback then happens on a separate URL pattern — typically http://host:port/live/username/password/stream_id.m3u8 (or .ts) for live, and /movie/username/password/vod_id.ext for VOD — so the API handles catalog/auth, while the actual video bytes are served the same way any HLS or progressive stream would be. This is the layer where your streaming engine’s actual delivery performance matters: the panel can list a channel perfectly and the video can still stutter if the underlying VPS is undersized.

Is Xtream Codes Software Still Around in 2026?

Mostly through descendants, not the original. In September 2019, law enforcement across Italy, the Netherlands, France, and Bulgaria — coordinated via Eurojust — took down roughly 181 servers and seized more than 800,000 reseller accounts tied to Xtream-Codes, cutting off an estimated 50 million end users. The original company’s Italian legal case was later resolved in its favor on appeal, but the original panel product and its core team never really came back into active development.

What did continue is the API format and forked codebases. Xtream UI picked up the original open-source panel code after the raid, and the commercial XUI.one panel followed as a paid successor with ongoing updates. Because so many player apps hard-coded support for the player_api.php request pattern, the format itself became a de facto standard independent of who’s running the backend — similar to how “RSS” outlived any single RSS reader.

What Do You Need to Host an Xtream-Compatible IPTV Service on a VPS?

Two separate things, and conflating them is the most common setup mistake: a streaming engine that ingests and delivers the actual video, and a panel/middleware layer that speaks the Xtream Codes API to client apps.

Wowza Streaming Engine and Flussonic Media Server are excellent at the first job — transcoding, packaging to HLS, handling thousands of concurrent viewer connections — but neither one natively exposes player_api.php endpoints. Flussonic’s own team has been explicit on their community forum that Flussonic isn’t an Xtream Codes alternative and expects to sit behind middleware like Ministra/Stalker for subscriber-facing panel features (the same distinction covered in our IPTV middleware guide). Wowza is the same story: it’s the delivery engine, and panel-facing auth/catalog logic goes through its ModuleCustomAuthenticator or an external system.

LayerJobTypical softwareRuns where
Streaming engineIngest, transcode, package to HLS/RTMPWowza Streaming Engine, Flussonic, Ant MediaDedicated streaming VPS, sized for viewer concurrency
Panel / middlewareXtream API auth, catalog, EPG, billingXUI.one, self-built player_api.php layer, Flussonic Catena, MinistraSame VPS for small deployments, separate VPS once subscriber count grows
Client appConsumes the APITiviMate, IPTV Smarters Pro, GSE Smart IPTVViewer’s device

For a small deployment (a few hundred channels, a few thousand active sessions), we’ve seen a 4 vCPU / 8GB VPS handle the panel layer comfortably, with the streaming engine on its own separate instance so a traffic spike on delivery doesn’t starve the panel’s database queries — and vice versa. Splitting these two roles across separate VPS instances is the single biggest reliability improvement we recommend once a deployment moves past the hobby stage.

Is Running an Xtream Codes Panel Legal?

The API format, the panel software, and the act of hosting it are not illegal by themselves — they’re just a client-server protocol, no different in principle from any streaming API. The legal exposure is entirely about content rights: distributing licensed broadcast channels you don’t have rights to, through any delivery mechanism, is what draws enforcement attention (as the 2019 case demonstrated). Legitimate uses — a hotel in-house channel lineup, a corporate video-on-demand library, a properly licensed regional broadcaster’s own app backend — run on the exact same API mechanics without any of that risk. If you’re evaluating a provider or building your own service, the licensing question is the one that actually matters, not which playlist format is in use.

FAQ

Is the Xtream Codes API the same thing as an M3U8 playlist?
No. An M3U8 file is a static text list of stream URLs fetched once, while the Xtream Codes API is a login-based JSON interface (player_api.php) that returns live categories, VOD, series, and EPG data dynamically on every request.

Is Xtream Codes software still available in 2026?
The original Xtream-Codes company was raided by European law enforcement in 2019 and its core team dissolved, but the API format survives through forks and clones such as Xtream UI and XUI.one, and it remains the de facto standard that IPTV player apps expect.

Does Wowza or Flussonic natively speak the Xtream Codes API?
No. Wowza Streaming Engine and Flussonic Media Server generate and deliver the actual video streams, but neither exposes player_api.php endpoints natively — you need a separate panel or middleware layer in front of them to speak Xtream Codes to client apps.

Is running an Xtream Codes panel legal?
The API format and panel software themselves are legal to run; what’s illegal is using them to distribute copyrighted broadcast content you don’t have rights to. Hosting your own licensed channels, a hotel/IPTV-in-a-box deployment, or a legitimate reseller of properly licensed content through an Xtream-compatible panel is no different from any other CDN delivery model.

What VPS specs do I need to run an Xtream-compatible IPTV panel?
For a panel serving a few hundred concurrent Xtream API sessions plus VOD/EPG queries, a 4 vCPU / 8GB VPS with SSD storage is a reasonable starting point, separate from whatever VPS is running your actual streaming engine (Wowza, Flussonic, or Ant Media).

Get Your Streaming Engine Right, Then Layer the Panel On Top

The Xtream Codes API only works well when the video underneath it is solid — a perfectly configured panel can’t fix a streaming engine that’s dropping frames under load. StreamingVPS.com ships Wowza, Flussonic, Ant Media, and other engines pre-installed and fully managed, live in 60 seconds, so you can focus on the panel and catalog layer instead of fighting server setup. See our Wowza streaming VPS plans or full pricing to get the delivery layer sorted first. Get a pre-installed streaming VPS from StreamingVPS.com — go live in 60 seconds.

Sources consulted: TorrentFreak — Xtream Codes IPTV System Targeted in Massive Police Operation, TorrentFreak — Xtream-Codes IPTV Company Declared Lawful, Flussonic Forum — Two auth backends, GitHub — player_api.php reference implementation.

Leave a Reply

Your email address will not be published. Required fields are marked *