Documentation · For providers
App management
Subscription parameters a provider uses to manage FlowLock: info block, renewal, moving, fallback address and app settings; what FlowLock doesn't read and why.
Parameters come as a subscription response header or a line in the body, #name: value (a header wins over
a line with the same name). The names are Happ's: if your panel already sends them for Happ, FlowLock understands
them without any setup. Text can be encoded as base64:…. Boolean values: true or 1 means yes, false or 0
means no.
The parameters on this page work only for a verified subscription: it carries your ID, and its domain is verified in your cabinet. Parameters that work for any subscription are on the “Subscription headers” page.
Example
HTTP/1.1 200 OK
profile-title: base64:0JzQvtC5IFZQTg==
subscription-userinfo: upload=0; download=1073741824; total=107374182400; expire=1798761600
support-url: https://t.me/myvpn_support
flowlock-provider: k7m2x9q4bd
sub-info-color: blue
sub-info-text: A new server in the Netherlands is now on the list
sub-info-button-text: Learn more
sub-info-button-link: https://myvpn.example/news
sub-expire: 1
sub-expire-button-link: https://t.me/myvpn_bot?start=renew
fallback-url: https://sub2.example.com/abc123
ping-type: tcpExtended parameters
| Parameter | Value | What it does |
|---|---|---|
new-url |
link | permanently changes the subscription address for everyone. The new address must be on your verified domain; if the subscription doesn't load from it, the app goes back to the old one |
new-domain |
domain | changes only the domain (the path and token stay). Also only your verified domain |
fallback-url |
link | a fallback address on your verified domain: if the main one doesn't answer within 9 s, fails with a network error or returns HTTP 300 to 599, the app tries the fallback |
serverDescription |
up to 30 characters | a caption under the server name: in the server link vless://…#Germany?serverDescription=RmFzdA== (base64) or meta.serverDescription in a JSON subscription |
sub-info-text |
up to 200 characters, 0 removes it |
an info block on the subscription card |
sub-info-color |
blue (default), green, red |
the info block's colour |
sub-info-button-text |
up to 25 characters | a button in the info block (no button without it) |
sub-info-button-link |
https://… or tg://… |
where the button leads |
sub-expire |
1 |
a “Subscription ends in N days” banner 3 days before expire, and “Subscription has ended” after it |
sub-expire-button-link |
https://… or tg://… |
a “Renew” button in that banner |
notification-subs-expire |
1 |
a system notification 3 days before, 1 day before and on the day of expiry |
subscription-always-hwid-enable |
1 |
this subscription always sends the HWID, even if the user turned off “Send HWID”. The user sees the explanation “required by the provider” and can only delete the subscription |
App settings
The same keys can be sent with the “Change settings” command (see “Notifications and commands”).
| Parameter | Value | What it changes | Where |
|---|---|---|---|
subscription-autoconnect |
1 / 0 |
connect when the app starts | all |
subscription-ping-onopen-enabled |
1 / 0 |
ping servers when the app starts | all |
subscription-auto-update-enable |
1 / 0 |
auto-update of this subscription | all |
subscription-auto-update-open-enable |
1 / 0 |
refresh subscriptions when the app starts | all |
ping-type |
proxy, proxy-head, tcp, icmp |
ping method (proxy-head = proxy) |
all |
check-url-via-proxy |
https://… |
the check address for ping through the proxy | all |
proxy-ping-timeout |
seconds, 1 to 10 (more counts as 10) | ping timeout | all |
change-user-agent |
string up to 256 | User-Agent for downloading this subscription | all |
fragmentation-enable |
1 / 0 |
TLS ClientHello fragmentation | all |
fragmentation-packets |
tlshello or 1-3 |
which packets to split | macOS |
fragmentation-length |
50-100 |
piece length | macOS |
fragmentation-interval |
10-20 |
pause between pieces, ms | macOS |
subscriptions-sort-type |
without, ping, alphabet |
server order | all |
subscription-always-hwid-enable |
1 / 0 |
see above | all |
notification-subs-expire |
1 / 0 |
see above | all |
How the user sees it
Next to the setting there is “Set by the provider “My VPN”” and a “Restore mine” button. If the user restored their own value, the same header no longer overrides it; a new value does. If the user deletes the subscription, the settings you set go back to their previous values.
What FlowLock doesn't read
| Parameter | Why |
|---|---|
custom-tunnel-config, socks-auth-*, http-auth-*, dns-from-json-enable |
they open the local proxy to the outside, change DNS or replace the whole core configuration, which breaks the user's protection |
proxy-enable, tun-enable, tun-mode, tun-type |
the user chooses the connection mode (TUN needs administrator rights) |
exclude-routes, exclude-routes-set, per-app-proxy-* |
they let traffic go around the VPN |
hide-settings |
the user has the right to see what runs on their computer; limited links hide the subscription address |
server-address-resolve-*, subscription-request-timeout, subscription-autoconnect-type, proxy-ping-mode, ping-result, manual-block-user-agent |
FlowLock has no such setting, or it is the user's choice |
noises-*, mux-*, sniffing-enable, fragmentation-maxsplit, no-limit-*, user-agent-geo-files |
parameters of another core (Xray) or of Happ modes |
color-profile, hide-vpn-icon, subscriptions-collapse, subscriptions-expand-now, subscription-pin, dont-use-filter, app-auto-start, xray-tun-*, include-all-networks-enable and other mobile ones |
iOS/Android only, or meaningless on a computer; FlowLock has its own themes (flowlock-theme) |
providerid |
Happ's ID; FlowLock has its own, flowlock-provider |
Neither a header nor a command lets the provider change: the user's routing rules and “all direct”, DNS, local proxy ports and passwords, “Allow connections from the network”, the global “Send HWID” switch, the connection mode, diagnostics and the account.
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.