Skip to main content
Xtream Codes is the most common IPTV provider protocol. This guide walks you through connecting a provider, defining a target and granting client access.

Prerequisites

You need the following from your provider:
  • Base URL (e.g. http://fantastic.provider.xyz:8080)
  • Username
  • Password

Step 1: Define the input

1

Open source.yml

Add an entry under inputs with type: xtream.
source.yml
The name is a local identifier you reference later in sources.
2

Create a source and target

Add a sources block that wires the input to a named target with an xtream output.
source.yml
3

Configure api-proxy.yml

Tell tuliprox which public URL to advertise and create a client credential.
api-proxy.yml
Set proxy: reverse if you want tuliprox to proxy stream traffic instead of redirecting clients directly to the provider.
4

Set core config

A minimal config.yml for server mode:
config.yml

Xtream input options

Pass these under options on the input: Example with options:
source.yml

Xtream output options

Pass these under the output entry with type: xtream:

Testing the connection

After starting tuliprox, verify the Xtream endpoint responds:
You should receive a JSON response with user_info and server_info fields. To fetch the live category list:

Common issues

If update_on_boot: true is set, tuliprox fetches the provider on first start. Check the logs for HTTP errors from the provider URL. You can also trigger a manual update from the Web UI.
Double-check the username and password fields in source.yml. Note that tuliprox does not attempt failover for 401 or 403 responses.
If proxy: redirect is set, the client connects directly to the provider. Switch to proxy: reverse so tuliprox buffers the stream, or ensure the client can reach the provider URL directly.
Check that xtream_skip_vod and xtream_skip_series are not set to true unintentionally. Also confirm the provider actually supplies those content types at the given URL.