# 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”](https://flowlock.cc/en/docs/routing.md)                       |
| `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”](https://flowlock.cc/en/docs/themes.md)                       |
| `flowlock-provider`       | your provider ID, see [“ID in the subscription”](https://flowlock.cc/en/docs/provider-id.md)                    |

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 list
```

`total=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”](https://flowlock.cc/en/docs/app-management.md) 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”](https://flowlock.cc/en/docs/user-agent.md) 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%20VPN
```

The 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”](https://flowlock.cc/en/docs/links.md) page.
