For providers
Integration
What Psykotic sends and reads when it fetches a subscription.
This page is for server owners and providers who want Psykotic to work smoothly with their panel.
Response format
The subscription body can be a Base64-encoded list of keys or a plain list with one key per line. Supported schemes: vless, vmess, trojan, ss, hysteria2 / hy2.
Headers the app reads
| Header | Usage |
|---|---|
profile-title | Subscription name shown in the app |
subscription-userinfo | upload=…; download=…; total=…; expire=… — traffic and expiry |
HTTP/1.1 200 OK
profile-title: My Server
subscription-userinfo: upload=0; download=2147483648; total=107374182400; expire=1798761600
HWID and device headers
For panels with device limits (Remnawave and compatible), Psykotic sends these headers with every subscription request:
| Header | Value |
|---|---|
x-hwid | Device ID (see below) |
x-device-os | Operating system, e.g. iOS, Android, Windows |
x-ver-os | OS version |
x-device-model | Device model |
User-Agent | Psykotic/x.y.z |
On phones the HWID is a SHA-256 hash of the system app identifier (identifierForVendor on iOS, ANDROID_ID on Android), so reinstalling the app doesn’t take a new slot. On desktop it’s a random ID created on first launch. The raw identifier never leaves the device.
These headers go only to the subscription URL the user added. Psykotic Products LTD does not receive them.
Update interval
The app refreshes subscriptions in the background every 12 hours.