Request headers
This is what your panel receives when mins fetches a subscription URL. Use it to tell clients apart, to enforce device limits and to choose a response per platform.
What mins sends
Section titled “What mins sends”GET /sub/abc123 HTTP/1.1Host: sub.example.comUser-Agent: mins/1.1.0 (android)Accept-Language: enx-hwid: 3f9a1c07b2d44e5e8a61c0d2f7b9e413x-device-os: androidx-ver-os: Linux 6.1.99-android14-11 #1 SMP PREEMPTx-device-model: localhost| Header | Value | Notes |
|---|---|---|
User-Agent |
Depends on the subscription’s preset, see below | Providers can force a value with change-user-agent. |
Accept-Language |
en or ru |
The language set in Settings → Appearance → Language. |
x-hwid |
32 lowercase hex characters | Random identifier, generated once per installation and the same for all subscriptions on that installation. It is not derived from hardware. |
x-device-os |
android, ios, macos, windows or linux |
Operating system of the device. |
x-ver-os |
Free text | The operating system version string as the platform reports it. The format differs between systems. |
x-device-model |
Free text | The device’s host name as the OS reports it. It is not a marketing model name and can be a generic value such as localhost. |
The four x- headers are sent together or not at all. There are no cookies and no authentication headers: the credentials are the subscription URL itself.
User-Agent presets
Section titled “User-Agent presets”The user picks a preset per subscription on the subscription screen (User-Agent). The default is mins.
| Preset | User-Agent sent |
|---|---|
| mins (default) | mins/<app version> (<os>), for example mins/1.1.0 (android) |
| Happ | Happ/1.63.1 |
| INCY | INCY/<app version>/<os>, for example INCY/1.1.0/android |
| Xray | Xray-core/26.10.31 |
| custom | Any text the user typed |
<os> is the same value as in x-device-os.
Why this matters to a panel: many panels choose the response format from the User-Agent (for example JSON for Happ-like clients and a link list for others). Users who need a particular format can switch the preset. mins accepts a link list, base64, and Xray JSON, so the default mins User-Agent works with any of them; see Subscription format.
Providers can take over the choice:
| Header in your response | Effect |
|---|---|
change-user-agent: <string> |
From the next fetch on, this exact string is sent as User-Agent, and the subscription shows it as the Custom User-Agent. |
manual-block-user-agent: true |
The user cannot change the preset or the custom value of this subscription. |
Device identifier (HWID)
Section titled “Device identifier (HWID)”x-hwid exists so that panels can count devices and enforce device limits (for example Remnawave). It is on by default.
- The user can turn it off per subscription with Send device identifier (HWID). With it off, none of the four
x-headers is sent. - If your service requires the identifier, send
subscription-always-hwid-enable: true. mins then tells the user that “Provider requires HWID. Turning it off may stop subscription updates; the choice remains yours.” It does not force the setting: privacy stays with the user. - The identifier lives in the app’s data. After a reinstall without restoring a backup, a new identifier is generated.
- If the client cannot read its stored identifier, it refuses to update subscriptions with “Device identity unavailable; restore a backup before updating subscriptions” and does not send a new one.
Other requests mins makes
Section titled “Other requests mins makes”| Request | Sent to | Notes |
|---|---|---|
| Routing profile by URL | The https:// URL from a routing link or the routing key |
No redirects are followed; 9 s to connect and 20 s to receive. The x- headers are not sent. |
| Geo files | The Geoipurl and Geositeurl of a routing profile |
User-Agent is the browser string the user chose in Settings → Subscriptions → Geo files User-Agent (default: the same string as the mins preset above), or the provider’s user-agent-geo-files. |
| Ping probes | The probe URL (check-url-via-proxy, default https://www.gstatic.com/generate_204) |
Through the server being measured, not to your panel. |