Documentation Index
Fetch the complete documentation index at: https://mintlify.com/euzu/tuliprox/llms.txt
Use this file to discover all available pages before exploring further.
api-proxy.yml tells Tuliprox which server URLs to advertise to clients and which users may access which targets.
Top-level entries
| Entry | Description |
|---|---|
server | Named server definitions (URL, protocol, timezone) |
user | User credential definitions per target |
use_user_db | Store users in the database instead of this file |
auth_error_status | HTTP status code returned on authentication failure |
server
You can define multiple named servers — typically one for local network access and one for external access. One server should always be named default.
Server fields
| Field | Description |
|---|---|
name | Unique server name (default is required) |
protocol | http or https |
host | Hostname or IP address Tuliprox advertises |
port | Port number (as a string) |
timezone | IANA timezone name for EPG time shifting (e.g. Europe/Paris) |
message | Welcome message returned in Xtream API info responses |
path | URL path prefix — useful when behind a reverse proxy |
If Tuliprox is behind another reverse proxy, use
path to simplify URL rewriting without extra proxy rewrites.user
Users are defined per target. Each target can expose multiple sets of credentials.
Credential fields
| Field | Type | Description |
|---|---|---|
username | string | Required. Username for authentication |
password | string | Required. Password for authentication |
token | string | Optional unique token (alternative to username/password) |
proxy | string | Stream proxy mode — see Proxy mode |
server | string | Which server definition to use for URL generation |
epg_timeshift | int | EPG time offset in hours |
max_connections | int | Maximum simultaneous streams for this user |
status | string | Account status — evaluated when user_access_control is enabled |
exp_date | int | Unix timestamp of account expiry |
priority | int | Stream priority (lower = higher priority, negatives allowed) |
user_ui_enabled | bool | Enable Web UI access for this user |
user_access_control | bool | Override the global access control setting for this user |
username and password are mandatory. token is optional but must be globally unique if set.Proxy mode
Theproxy field controls how Tuliprox delivers streams to this user.
| Value | Description |
|---|---|
redirect | Tuliprox returns the provider URL directly — client connects to provider |
reverse | Tuliprox proxies all stream traffic itself |
reverse[live] | Reverse proxy only for live streams |
reverse[live,vod] | Reverse proxy for live and VOD, redirect for series |
Priority
User priority is optional and defaults to0.
| Rule | Description |
|---|---|
| Lower number = higher priority | priority: -10 outranks priority: 0 |
| Negative values are allowed | Use negatives for VIP users |
| Preemption on exhaustion | Higher-priority users can take a stream slot from lower-priority active streams when the provider is at capacity |
| Equal priority | A user with the same priority does not preempt a currently running stream |
max_connections is independent | Connection limits apply regardless of priority |
Probe tasks use the same priority scale via
metadata_update.probe.user_priority in config.yml.use_user_db
When set to true, users are stored in the Tuliprox database instead of this YAML file. Use the Web UI to add, edit, or remove users.
auth_error_status
HTTP status code returned when authentication fails (invalid or missing credentials). Defaults to 403.
This setting applies to streaming and playlist API endpoints (
player_api.php, get.php, xmltv.php, stream paths, resource paths). It does not affect the Web UI / REST API (/api/v1/…) or HDHomeRun endpoints, which always use their own fixed status codes.Access URLs
- Xtream
- M3U
- XMLTV
Reverse proxy in front of Tuliprox
If another proxy sits in front of Tuliprox, configure it to forward the original client IP.- nginx
- Traefik
Multiple server example
This pattern exposes Tuliprox on the local network and externally via HTTPS with different base URLs:User bouquets
Tuliprox supports per-user bouquets — curated channel lists that are stored in the user config directory (user_config_dir in config.yml). Bouquets are managed through the Web UI and are tied to a user’s target assignment. They allow users to create personal filtered views without modifying the shared target configuration.