App management
Manage application settings via subscription
The application management functionality includes two areas:
Standard parameters that work for most panels.
Advanced parameters for which you need to specify the Provider ID
To enable a parameter, pass the value true or 1; to disable it, pass any other non-empty value.
Standard Parameters
Subscription Auto-Update

A task is created in the system to perform the operation at the specified interval. Depending on internal priorities, the system tries to run the subscription update at the set time. If for any reason the update was not performed within the specified interval, it will occur automatically on the next app launch. The interval is set in hours and must be a multiple of one hour.
Example of configuring this parameter:
profile-update-interval: [int]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
profile-update-interval: 1#profile-update-interval: 1
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Subscription Name

The name of the subscription profile. Can be passed as plain text or base64 (UTF-8). Restriction: Maximum length — 25 characters.
In the subscription body, specify the parameter with a # (e.g., #profile-title)
Example of configuring this parameter:
profile-title: [string]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
profile-title: Name VPN#profile-title: Name VPN
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Subscription Status String (traffic, expiration date)

Displays information about balance, used traffic volume, and subscription expiration date. On the left side of the scale in the app, the amount of used traffic (upload + download) is shown, and on the right — the total volume (total) after the "/" symbol. The subscription expiration date is specified in the expire parameter. Note: all data is transmitted in one header and separated by the ; symbol.
Example of configuring this parameter:
subscription-userinfo: [string]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
subscription-userinfo: upload=0; download=2153701362; total=0; expire=1790951622#subscription-userinfo: upload=0; download=2153701362; total=0; expire=1790951622
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Support Page Link

A button to go to the support page. Displayed as a blue icon on the right. If the link leads to Telegram, a Telegram icon is shown; otherwise, a standard link icon is used.
Example of configuring this parameter:
support-url: [string]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
support-url: https://t.me/happ_chat#support-url: https://t.me/happ_chat
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Website Link

A button to go to the subscription website. Displayed as a blue icon on the left. If the parameter is not set, the icon will be gray.
Example of configuring this parameter:
profile-web-page-url: [string]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
profile-web-page-url: https://happ.su#profile-web-page-url: https://happ.su
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Announcement

The subscription can contain an announcement message, passed as plain text or Base64. Restriction: maximum length of displayed text — 200 characters.
Example of configuring this parameter:
announce: [string]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
announce: base64:SGFwcCB0aGUgYmVzdCE=#announce: base64:SGFwcCB0aGUgYmVzdCE=
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Disable Routing
A global parameter to disable routing in the app.
Example of configuring this parameter:
routing-enable: [string]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
routing-enable: 0#routing-enable: 0
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Tunnel Configuration (Desktop only)
Pass your own tunnel configuration for the sing-box core.
Example of configuring this parameter:
custom-tunnel-config: [json]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
custom-tunnel-config: {...}#custom-tunnel-config: {...}
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Advanced Parameters
Provider ID parameter is required!
Change Subscription URL
If your domain is blocked by the provider, and users can only connect to servers and update the subscription via VPN, this parameter is for you. By setting a new domain name in this parameter value, you ensure its automatic replacement for all subscription users.
Example of configuring this parameter:
new-url: [url]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
new-url: https://mynew-domain.com/3J3jrb4jfc#new-url https://mynew-domain.com/3J3jrb4jfc
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Change Subscription Domain
Change the site domain without changing the full URL, keeping the rest of the address.
Example of configuring this parameter:
new-domain: [domain]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
new-domain: mynew-domain.com#new-domain mynew-domain.com
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Server Description in Subscription

Allows setting an additional caption displayed under the server name instead of the standard text (e.g., "VMess", "VLESS", "Trojan").
Maximum length — 30 characters.
If it doesn't fit on the screen, it will be shortened with an ellipsis.
Set after
titlevia the?separator.
Examples:
vless://[email protected]:443?encryption=none&node_id=482&headerType=none&type=tcp&security=reality&sni=booking.com&fp=chrome&pbk=YqHW8a4iAc1SZYpTrFVoOQg1F3yAdX1tWXuROZUCsEU[...]vmess://eyJob3N0IjoiZWxhaG9tZWtpdGNoZW4uY29tIiwicGF0aCI6IiIsInRscyI6IiIsImFkZCI6ImVsYWhvbWVraXRjaGVuLmNvbSIsInBvcnQiOjUwMDAsImFpZCI6MCwibmV0IjoidGNwIiwidHlwZSI6Im5vbmUiLCJ2IjoiMiIsInBzIjoi4piB77iPIDog[...]trojan://[email protected]:443?security=tls&insecure=1&fragment=3,1,tlshello&type=ws&headerType=&path=%2F&host=quictest.burncommunity.ru&sni=quictest.burncommunity.ru&fp=chrome&al[...]socks://pkg-private2-country-us-city-new_york_city:[email protected]:1080#title?serverDescription=SGFwcCB0aGUgYmVzdA==ss://[email protected]:9042#title?serverDescription=SGFwcCB0aGUgYmVzdA==wireguard://[email protected]:10803?publickey=asd33d223d33&address=dom.ru&allowinsecure=1&mtu=1500&reserved=1,22,33#title?serverDescription=SGFwcCB0aGUgYmVzdA=={
"dns": {
...
},
"inbounds": [
...
],
"outbounds": [
...
],
"remarks": "🇭🇰 Hong Kong",
"meta": {
"serverDescription": "Happ the best"
}
}Subscription Fragmentation and Fronting
Some CDNs support domain fronting. This allows connecting to your site through a third-party domain. For example, by specifying the connection address visa.com and Host header my-domain.com, the provider will only see a request to visa.com.
You can also access your domain for the server list using packet fragmentation in SNI TLSHello.
By default, fragmentation is enabled for all subscriptions. The user can add the subscription only once; on repeat attempts, if the account is not premium, the update will not be allowed.
URL Scheme with Parameters
[link]#title?[fragment]&[resolve-address]&[host]&[insecure]
Fronting:
visa.com/123#MyVPN?resolve-address=visa.com&host=mydomain.com
Fragmentation:
mydomain.com/123#MyVPN?fragment=80-250,10-100,tlshelloFragmentation has three parameters: [length], [interval] and [packets].
For fronting, specify the URL with the domain used for connection first, [...]
Non-disableable HWID
By default, HWID is enabled in all Happ apps. But if you want the user to be unable to disable the transmission of this parameter by turning it off in the app settings, you can send a special parameter with the subscription.
Example of configuring this parameter:
subscription-always-hwid-enable: [true / 1]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
subscription-always-hwid-enable: 1#subscription-always-hwid-enable: 1
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Subscription Expiration Notification
You can enable automatic notifications about subscription expiration. The user will receive reminders 3 days before expiration: the app will send one notification per day for three days. This helps the user not forget to renew the subscription on time.
Notification text:
Your subscription [name] will expire soon, don’t forget to renew it.Example of configuring this parameter:
notification-subs-expire: [true / 1]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
notification-subs-expire: 1#notification-subs-expire: 1
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Hide Server Settings in Subscription

Disable the ability to view and edit server configurations for users of your subscription. Not available for all apps.
Example of configuring this parameter:
hide-settings: [true / 1]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
hide-settings: 1#hide-settings: 1
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Domain Resolving
The app can perform preliminary domain resolution for servers before establishing a connection. You can specify any DoH server, and when connecting to an Xray server, the domain name will be replaced with the received IP address. If multiple IP addresses are returned for a domain, the app will automatically select the one with the minimum response time (ping). However, note: with a large number of IP addresses, connection may take longer as all options will be pre-tested.
Example of configuring this parameter:
server-address-resolve-enable: [true / 1]
server-address-resolve-dns-domain: [url]
server-address-resolve-dns-ip: [ip]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
server-address-resolve-enable: 1
server-address-resolve-dns-domain: https://common.dot.dns.yandex.net/dns-query
server-address-resolve-dns-ip: 77.88.8.8#server-address-resolve-enable: 1
#server-address-resolve-dns-domain: https://common.dot.dns.yandex.net/dns-query
#server-address-resolve-dns-ip: 77.88.8.8
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Application Settings Management
Provider ID parameter is required!
Auto Connect
Allows automatically connecting the user to servers when launching the app. Additionally, using the subscription-autoconnect-type parameter, you can specify the criterion for connecting to a specific server.
Example of configuring this parameter:
subscription-autoconnect: [true / 1]
subscription-autoconnect-type: [“lastused“/”lowestdelay”]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
subscription-autoconnect: 1
subscription-autoconnect-type: lowestdelay#subscription-autoconnect: 1
#subscription-autoconnect-type: lastused
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Auto Ping
Run automatic server list testing when opening the app if necessary.
Example of configuring this parameter:
subscription-ping-onopen-enabled: [true / 1]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
subscription-ping-onopen-enabled: 1#subscription-ping-onopen-enabled: 1
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Auto-Update Subscriptions
In the app, you can enable or disable auto-update for all subscriptions at once — this setting applies to all subscriptions simultaneously. If you need to set auto-update only for a specific subscription, use the Subscription auto-update functionality. When the global setting is disabled, each subscription independently determines its update time.
Example of configuring this parameter:
subscription-auto-update-enable: [true / 1] Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
subscription-auto-update-enable: 1#new-url: https:/mynew-domain.com/3J3jrb4jfc
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Fragmentation
This is a global fragmentation management parameter for all subscriptions. If you need to assign fragmentation only to a specific subscription or server, use the free functionality and instructions from the general app documentation. When the global setting is disabled, each subscription independently determines fragmentation settings.
Example of configuring this parameter:
fragmentation-enable: [true / 1]
fragmentation-packets: [tlshello,1-2,1-3,1-5]
fragmentation-length: [50-100]
fragmentation-interval: [10-20]
fragmentation-maxsplit: [String]
noises-enable: [true / 1]
noises-type: [rand. str, base64]
noises-packet: [String]
noises-delay: [String]
noises-applyto: [ip,ipv4,ipv6]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
fragmentation-enable: 1
fragmentation-packets: tlshello
fragmentation-length: 50-100
fragmentation-interval: 5
fragmentation-maxsplit: 100-200
noises-enable: 1
noises-type: rand
noises-packet: 10-20
noises-delay: 10-16
noises-applyto: ipv4#fragmentation-enable: 1
#fragmentation-packets: tlshello
#fragmentation-length: 50-100
#fragmentation-interval: 5
#fragmentation-maxsplit: 100-200
#noises-enable: 1
#noises-type: rand
#noises-packet: 10-20
#noises-delay: 10-16
#noises-applyto: ipv4
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Ping
This function allows selecting the ping execution method in the app. Three options are available: “via Proxy”, “TCP”, and “ICMP”. For “via Proxy” mode, you can additionally specify a URL for ping checking.
Example of configuring this parameter:
ping-type: ["proxy", "proxy-head', "tcp","icmp"]
check-url-via-proxy: [url]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
ping-type: proxy
check-url-via-proxy: https://cp.cloudflare.com/generate_204#ping-type proxy
#check-url-via-proxy: https://cp.cloudflare.com/generate_204
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…User-Agent
This function allows changing the User-Agent used in headers when fetching the subscription. Useful when the provider blocks requests with non-standard or unsuitable headers.
Example of configuring this parameter:
change-user-agent: [String] Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
change-user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36#change-user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…App Auto-Start
This function allows automatically launching the app when the device is turned on. Currently available only on Android.
Example of configuring this parameter:
app-auto-start: [String] Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
app-auto-start: 1#app-auto-start: 1
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Update Subscriptions When App Launches
This function automatically updates all subscriptions in the app whenever the app is opened.
Example of configuring this parameter:
subscription-auto-update-open-enable: [String] Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
subscription-auto-update-open-enable: 1#subscription-auto-update-open-enable: 1
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…App-specific Proxy (Android)
This parameter allows specifying a list of apps that should use VPN or, conversely, bypass it. If an app is not yet installed on the device but is listed, it will be automatically taken into account on first VPN connection after installation.
Example of configuring this parameter:
per-app-proxy-mode: [off/on/bypass] \\Specify one of three parameters
per-app-proxy-list: [com.google.chrome,com.meta.instagram] \\list appIDs separated by ','Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
per-app-proxy-mode: on
per-app-proxy-list: com.google.chrome,com.meta.instagram#per-app-proxy-mode: on
#per-app-proxy-list: com.google.chrome,com.meta.instagram
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Packet Analysis (Sniffing)
In xray-core, sniffing is needed to analyze the first packets of a connection and automatically determine the protocol (HTTP, TLS, BitTorrent, etc.) and domain (SNI/Host). May affect media loading in the WeChat app. Enabled by default.
Example of configuring this parameter:
sniffing-enable: [String] Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
sniffing-enable: 1#sniffing-enable: 1
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Disable Subscription Collapse

This function disables the ability to collapse a subscription: the server list is always fully displayed.
Example of configuring this parameter:
subscriptions-collapse: [String] Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
subscriptions-collapse: 1#subscriptions-collapse: 1
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Ping Display Mode

Allows displaying icons instead of time values.
Example of configuring this parameter:
ping-result: [time,icon]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
ping-result: icon#ping-result: icon
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Mux
Mux in xray-core is a multiplexing function that allows transmitting data from multiple virtual TCP connections over one physical TCP connection. It is designed to reduce delays from TCP handshakes but not to increase bandwidth (may even slow down large downloads). Configured in outbound with parameters like enabled and concurrency (min -1, max 1024).
Example of configuring this parameter:
mux-enable: [true / 1]
mux-tcp-connections: [String]
mux-xudp-connections: [String]
mux-quic: [String]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
mux-enable: 1
mux-tcp-connections: 100
mux-xudp-connections: 200
mux-quic: skip#mux-enable: 1
#mux-tcp-connections: 100
#mux-xudp-connections: 200
#mux-quic: skip
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Proxy \ TUN Mode (Desktop only)
Use only one of the two listed parameters! These parameters determine the connection type when adding/updating the subscription.
Example of configuring this parameter:
proxy-enable: [true / 1]
tun-enable: [true / 1]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
proxy-enable: 1#proxy-enable: 1
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…TUN Mode (Desktop only)
Determines which mode will be used for TUN connection.
system— Uses OS system network stack. Fast and efficient, but depends on properly set routes and firewall.gvisor— Userspace gVisor stack. Less dependent on kernel rules and iptables/nftables/Docker conflicts, better isolation; might have slightly lower performance.
Example of configuring this parameter:
tun-mode: [system,gvisor]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
tun-mode: gvisor#tun-mode: gvisor
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Tunnel Core Selection (Desktop only)
Determines which core will be used for TUN connection. Available: sing-box
Example of configuring this parameter:
tun-type: [singbox, tun2proxy]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
tun-type: tun2proxy#tun-type: tun2proxy
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Exclude routes
Defines subnets and IP addresses whose traffic should not go through the tunnel. Addresses are specified in a single line, separated by spaces and commas.
Example of configuring this parameter:
exclude-routes: [String]Ways to pass it:
HTTP/2 200
date: Wed, 24 Nov 2024 10:00:52 GMT
content-type: application/json
content-length: 3798
content-disposition: attachment; filename="213"
exclude-routes: 192.169.1.0/24, 10.0.0.0/8#exclude-routes: 192.169.1.0/24, 10.0.0.0/8
vless://70cc48c5‑b2f4…
vmess://zkIAU1JitkI…Last updated