/api/v1/ (or /<path>/api/v1/ if a URL path prefix is configured). All endpoints except the public playlist resource endpoint require a valid admin JWT bearer token.
Admin endpoints are protected by the
validator_admin middleware. If web_auth_enabled is false in your tuliprox setup, the middleware is bypassed and no token is required.System
Server status
Active streams
GeoIP database update
200 OK on success, 400 Bad Request if GeoIP is disabled or the download failed.
IP info
ipcheck to be configured in config.yml.
Configuration
Get full configuration
config.yml, source.yml, and api-proxy.yml contents merged into a single JSON object. Response headers include revision hashes for each file:
Save main config
config.yml. Requires the If-Match header to contain the current revision hash from x-config-main-revision.
Request body: JSON ConfigDto object.
Headers:
Responses:
Save sources config
source.yml. Same If-Match / x-config-sources-revision revision-check protocol as config/main.
Request body: JSON SourcesConfigDto object.
Get API proxy config
api-proxy.yml content (excluding the user list). Response includes the x-config-api-proxy-revision header.
Save API proxy config
api-proxy.yml. Uses the same If-Match / x-config-api-proxy-revision revision-check protocol.
Request body: JSON ApiProxyConfigDto object (without the user list — use the user endpoints below to manage users).
Get batch content for an input
text/csv.
number
required
The numeric input ID.
Test Xtream provider login
source.yml.
Request body:
File downloads
Queue a file download
Get download status
Playlist management
Trigger playlist update
202 Accepted but no duplicate run is queued.
Request body: JSON array of target name strings. Send an empty array [] to update all targets.
Get live channels
PlaylistRequest object:
Get VOD
/playlist/live. Returns VOD items.
Get series
/playlist/live. Returns series items.
Get series info
string
required
The virtual stream ID of the series.
string
required
The provider stream ID.
PlaylistRequest with Target variant.
Get series episode item
string
required
The virtual stream ID of the episode.
PlaylistRequest with Target variant.
Get EPG for playlist
PlaylistEpgRequest object:
Get web player URL
Public: playlist resource proxy
string
required
Obfuscated resource identifier generated internally by tuliprox.
Library management
These endpoints are available only whenlibrary.enabled: true in config.yml.
Trigger library scan
202 Accepted immediately; the scan runs asynchronously. If a scan is already in progress, returns 400 Bad Request.
Request body:
boolean
When
true, forces a full re-scan of all library directories even if files have not changed.Get library status
User management
These endpoints manage proxy users inapi-proxy.yml (or the user database when use_user_db: true).
Create a user
string
required
The target name (as defined in
source.yml) to associate the user with.ProxyUserCredentialsDto object:
Update a user
username in the request body identifies the user to update. If the target path parameter differs from the user’s current target, the user is moved to the new target.
Request body: Same ProxyUserCredentialsDto structure as create.
Delete a user
string
required
The target the user belongs to.
string
required
The username to delete.
User self-service API
These endpoints are for authenticated end-users (not admins). They use a user JWT bearer token rather than the admin token, and are enabled only whenuser_ui_enabled is true in config.yml.
Get playlist categories
Get user bouquet
Save user bouquet
PlaylistBouquetDto object.