# FlowLock User-Agent

> Which User-Agent FlowLock sends when it downloads a subscription, how to recognise FlowLock in a panel, and what happens if the panel doesn't accept it.

When downloading a subscription, FlowLock introduces itself with its own User-Agent:

```
FlowLock/<version> (<system>; <architecture>)
```

| Example                         |                      |
| ------------------------------- | -------------------- |
| `FlowLock/1.2.0 (macOS; arm64)` | macOS, Apple Silicon |
| `FlowLock/0.1.0 (Windows; x64)` | Windows              |
| `FlowLock/0.1.0 (Linux; x64)`   | Linux                |

- System: `macOS`, `Windows`, `Linux`. Architecture: `x64`, `arm64`, `x86`.
- FlowLock doesn't send the system version: it would be an extra fingerprint.
- The Windows/Linux service, when it refreshed the subscription by itself (right after the computer starts, before the
  window has been opened), may send a UA without a version: `FlowLock (Windows; x64)`.

## How to recognise FlowLock in a panel

Look for a User-Agent that starts with `FlowLock/` or `FlowLock (`. For example, a panel rule condition: “User-Agent
starts with `FlowLock`”. There is no need to serve FlowLock a special format: it understands base64, links, Xray JSON
and sing-box JSON.

## If the panel doesn't accept FlowLock's User-Agent

Some panels answer unknown clients with an HTML page or a 403/406 status. Then FlowLock retries the request once with
the compatible User-Agent `v2rayN/7.13.8`, and for the next **7 days** it loads that subscription with it straight
away, then tries its own again. There is no retry on 404, 5xx or any other response: a different User-Agent won't help
there.

It is better to teach your panel to answer FlowLock with the subscription: that way you'll see in the panel's logs how
many FlowLock users you have.

## Custom User-Agent

- A person can set a User-Agent for one subscription or for all of them; then exactly that one is sent, with no
  retries.
- The provider of a verified subscription can set it with the `change-user-agent` parameter (see
  [“App management”](https://flowlock.cc/en/docs/app-management.md)).
