Subscription Server
A separate HTTP/HTTPS server that serves proxy subscription links (standard, JSON, and Clash) to clients. The server listens on its own port (default 2096) and is configured in Settings → Subscription. Fresh panels generate random path prefixes for each format; all paths remain configurable. Every subscription endpoint sets response headers for client apps to read traffic/expiry info.
AuthorizationBearer <token>API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.
subid*stringClient subscription ID.
subPath*stringformat?stringSet to "info" to get the subscription status view-model as JSON instead of the links.
Successful response
application/json- response
success?booleanmsg?stringobj?unknowncurl -X GET "https://example.com/stringstring"{ "success": true, "msg": "string", "obj": null}AuthorizationBearer <token>API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.
subid*stringClient subscription ID.
subPath*stringSubscription is available. Headers match GET; no response body.
curl -X HEAD "https://example.com/stringstring"AuthorizationBearer <token>API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.
subid*stringClient subscription ID.
subPath*stringDevice-slot counters for the subscription.
application/json- response
HwidSlotStatus is the aggregate device-slot view exposed to subscribers: counters only, no hwid value or hash, no email, no device metadata.
active*booleanfull*booleanlimit*integerregistered*integerremaining*integercurl -X GET "https://example.com/stringstring/hwid-status"{ "active": true, "full": false, "limit": 2, "registered": 1, "remaining": 1}AuthorizationBearer <token>API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.
subid*stringClient subscription ID.
subPath*stringHeaders match GET; no response body.
curl -X HEAD "https://example.com/stringstring/hwid-status"AuthorizationBearer <token>API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.
subid*stringClient subscription ID.
jsonPath*stringSuccessful response
application/json- response
success?booleanmsg?stringobj?unknowncurl -X GET "https://example.com/stringstring"{ "success": true, "msg": "string", "obj": null}AuthorizationBearer <token>API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.
subid*stringClient subscription ID.
jsonPath*stringSubscription is available. Headers match GET; no response body.
curl -X HEAD "https://example.com/stringstring"AuthorizationBearer <token>API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.
subid*stringClient subscription ID.
clashPath*stringSuccessful response
application/json- response
success?booleanmsg?stringobj?unknowncurl -X GET "https://example.com/stringstring"{ "success": true, "msg": "string", "obj": null}AuthorizationBearer <token>API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.
subid*stringClient subscription ID.
clashPath*stringSubscription is available. Headers match GET; no response body.
curl -X HEAD "https://example.com/stringstring"
3x-ui