/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:
| Header | Description |
|---|---|
x-config-main-revision | BLAKE3 hash of config.yml |
x-config-sources-revision | BLAKE3 hash of source.yml |
x-config-api-proxy-revision | BLAKE3 hash of api-proxy.yml |
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:
| Header | Description |
|---|---|
Content-Type | application/json |
If-Match | Current x-config-main-revision value |
| Status | Meaning |
|---|---|
200 OK | Saved successfully. New revision in x-config-main-revision response header. |
400 Bad Request | Validation failed. |
409 Conflict | Config changed on server since you last fetched it. Reload and retry. |
428 Precondition Required | If-Match header missing. |
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.
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.
| Status | Meaning |
|---|---|
202 Accepted | Update queued or already pending. |
400 Bad Request | Invalid target name(s). |
503 Service Unavailable | Server is shutting down. |
Get live channels
PlaylistRequest object:
Get VOD
/playlist/live. Returns VOD items.
Get series
/playlist/live. Returns series items.
Get series info
The virtual stream ID of the series.
The provider stream ID.
PlaylistRequest with Target variant.
Get series episode item
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
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:
When
true, forces a full re-scan of all library directories even if files have not changed.| Status | Meaning |
|---|---|
202 Accepted | Scan started. |
400 Bad Request | Library not enabled or scan already in progress. |
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
The target name (as defined in
source.yml) to associate the user with.ProxyUserCredentialsDto object:
| Status | Meaning |
|---|---|
200 OK | User created. |
400 Bad Request | Duplicate username, duplicate token, or validation error. |
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.
| Status | Meaning |
|---|---|
200 OK | User updated. |
400 Bad Request | User not found, duplicate token, or validation error. |
Delete a user
The target the user belongs to.
The username to delete.
| Status | Meaning |
|---|---|
200 OK | User deleted. |
400 Bad Request | User not found in the specified target. |
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.