# flowlock:// links

> Commands of the flowlock:// scheme: connect, disconnect, add a subscription, import, routing rules, limited links and themes.

FlowLock registers the `flowlock://` scheme in the system. You can put such a link on a website, in a bot or in a
shortcut. The browser itself asks the person whether to open the app.

## Commands

| Link                                | What it does                                                                         | Confirmation |
| ----------------------------------- | ------------------------------------------------------------------------------------ | ------------ |
| `flowlock://connect`                | connect                                                                              | no           |
| `flowlock://disconnect`             | disconnect                                                                           | no           |
| `flowlock://toggle`                 | connect or disconnect                                                                | no           |
| `flowlock://open`, `flowlock://`    | show the window                                                                      | no           |
| `flowlock://quit`                   | quit the app                                                                         | no           |
| `flowlock://add/<address>`          | add a subscription by its address                                                    | **yes**      |
| `flowlock://import/<base64>`        | import a subscription, servers, a profile or routing rules, depending on the content | **yes**      |
| `flowlock://routing/add/<base64>`   | add routing rules (a Happ profile) to the person's rules                             | **yes**      |
| `flowlock://routing/onadd/<base64>` | the same, and offer “Selective” mode if the profile has `GlobalProxy: false`         | **yes**      |
| `flowlock://install/<code>`         | a subscription from a [limited link](https://flowlock.cc/en/docs/install-links.md)                           | **yes**      |
| `flowlock://theme/<data>`           | a shared [colour theme](https://flowlock.cc/en/docs/user-themes.md)                                          | **yes**      |

The scheme and the command are case-insensitive, and the slashes after `:` are optional (`flowlock:connect`).
Commands with confirmation always show exactly what will be added and wait for “Add” or “Cancel”: FlowLock never runs
a link from the browser silently. The worst a stranger's page can do with a command that needs no confirmation is
disconnect the VPN.

## Arguments

- `add/…`: the subscription address as is (`flowlock://add/https://sub.example.com/abc`) or percent-encoded
  (`flowlock://add/https%3A%2F%2Fsub.example.com%2Fabc`). Only `http://` and `https://`.
- `import/…` and `routing/…`: base64 (standard or URL-safe; trailing `=` are optional). Inside `import`:
  - an `http(s)://` address: a subscription;
  - server links, WireGuard/AmneziaWG `.conf`, `.ovpn`: servers;
  - `happ://routing/add|onadd/…`: routing rules;
  - a FlowLock profile (JSON): a profile import where you choose the sections.

Example: an “Add to FlowLock” button on a subscription page:

```html
<a href="flowlock://add/https%3A%2F%2Fsub.example.com%2Fabc123">Add to FlowLock</a>
```

## Web links

Some messengers don't make `flowlock://` clickable. For them there are pages on the website:

- `https://flowlock.cc/i/<code>`: a limited link, with an “Open in FlowLock” button and an app download;
- `https://flowlock.cc/theme#<data>`: a colour theme with a preview;
- `https://flowlock.cc/add/#url=<address>&name=<name>`: add a subscription to the FlowLock account on the website.
