Documentation · For providers
Subscription headers
What FlowLock reads from any subscription's response (name, traffic and expiry, support, announcement, refresh interval) and what it sends to the panel itself.
FlowLock reads these parameters from any subscription; no provider ID is needed for them. The names are the common ones (Remnawave, Marzban, 3x-ui and other panels already send them), so usually there is nothing to set up.
The parameters come as response headers of the subscription. For link-list and base64 subscriptions they can also
go as a line in the body, #name: value, within the first 50 lines; a header wins over a line with the same
name. Text can be encoded as base64:… (Remnawave does this with rwEncodeBase64:).
What is read
| Parameter | What it does |
|---|---|
profile-title |
subscription name (text or base64:) |
subscription-userinfo |
traffic and expiry: upload=…; download=…; total=…; expire=<unix> |
support-url |
the “Support” button |
profile-web-page-url |
the “Subscription page” button |
announce |
the “From the provider” announcement (up to 200 characters, text or base64:) |
profile-update-interval |
how often to refresh the subscription, in hours |
routing |
the subscription's routing rules, see “Routing” |
routing-enable |
0: don't apply the subscription's routing rules (the user's own rules are left alone) |
flowlock-theme |
a colour theme, if the user agreed, see “Themes” |
flowlock-provider |
your provider ID, see “ID in the subscription” |
Sample response:
HTTP/1.1 200 OK
profile-title: base64:0JzQvtC5IFZQTg==
subscription-userinfo: upload=0; download=1073741824; total=107374182400; expire=1798761600
profile-update-interval: 12
support-url: https://t.me/myvpn_support
announce: A new server in the Netherlands is now on the listtotal=0 or no total means traffic without a limit (“unlimited”); expire=0 or no expire means no expiry date.
Extended parameters (the info block, “Renew”, moving to a new domain, app settings) work only for a verified subscription. They are described on the “App management” page.
Subscription formats
FlowLock understands base64 and link lists (vless://, vmess://, trojan://, ss://, hysteria2:///hy2://
and others), Xray JSON and sing-box JSON. In JSON subscriptions the routing rules are taken from the JSON itself
(routing in Xray, route in sing-box).
What FlowLock sends to the panel
- User-Agent: its own, like
FlowLock/1.2.0 (macOS; arm64). Details and compatibility are on the “User-Agent” page. - HWID headers for device limits (as in Remnawave):
x-hwid,x-device-os,x-ver-os,x-device-model, as long as the user has “Send HWID” turned on. A subscription can require the HWID always (subscription-always-hwid-enable, needs an ID).
FlowLock downloads subscriptions directly, outside the VPN: many panels don't answer requests from VPN server addresses.
“Add to FlowLock” button
You can put a link on the subscription page that adds the subscription to the app:
flowlock://add/https://sub.example.com/abc123
https://flowlock.cc/add/#url=https%3A%2F%2Fsub.example.com%2Fabc123&name=My%20VPNThe first one opens the app (it asks for confirmation), the second one opens the website, which adds the subscription to the user's FlowLock account. The other commands are on the “flowlock:// links” page.
This page in Markdown · Every page is available as Markdown: add .md to its address without the trailing slash. The list is in llms.txt, everything at once in llms-full.txt.