Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/SpaceNeuroX/proxy-turn-vk-android/llms.txt

Use this file to discover all available pages before exploring further.

Subscriptions let server operators distribute a curated list of connection profiles to users via a single URL. Instead of sharing individual wdtt:// links, you publish one JSON file on your server and your users subscribe to it once. qWDTT fetches the file, imports all profiles into a locked folder, and can re-fetch it on a schedule to keep the list current — reflecting new servers, retired hashes, or updated passwords — without any action from users.

Adding a subscription

1

Open the Profiles tab

Tap the Profiles tab at the bottom of the screen.
2

Tap + and choose Subscription

Tap the + floating action button, then select Subscription from the bottom sheet.
3

Enter the subscription URL

Paste the HTTPS address of the JSON file into the Subscription address field.
https://example.com/my-subscription.json
4

Tap Add

qWDTT fetches the JSON, reads the subscriptionName field as the subscription and folder name, and imports all profiles from the profiles array. The subscription card appears at the top of the Profiles list.
The subscription name displayed in the app and used as the folder name comes from the subscriptionName field in the JSON. If this field is absent, the import fails with an error. Make sure every subscription JSON includes this field.

Subscription card

Each active subscription appears as a card above the profile list. The card shows:
  • Name — taken from subscriptionName in the JSON
  • Description — the description field, if provided
  • Traffic — a progress bar with used / limit values when trafficUsedMb and trafficLimitMb are present
  • Last updated — the local timestamp of the most recent successful refresh
  • Error message — if the last refresh failed, the error is shown in red below the timestamp
  • Refresh button — manually triggers an immediate re-fetch and profile replacement
  • Delete button — removes the subscription and its entire profile folder
Tap anywhere on the card body (not the icon buttons) to jump directly to the subscription’s profile folder, filtered in the list below.

Auto-refresh

qWDTT automatically refreshes subscriptions in the background while the tunnel is not running. The interval is controlled by the subscriptionAutoRefreshHours setting (Settings → Behaviour):
ValueBehaviour
-1Auto-refresh disabled
0Refresh every time the app is opened
6Every 6 hours
12 (default)Every 12 hours
24Every 24 hours
Only subscriptions whose last successful sync is older than the interval are refreshed; recently synced subscriptions are skipped to avoid redundant network requests.

Profile folder restrictions

Subscription profiles live in a dedicated locked folder. This folder enforces the following restrictions:
  • You cannot manually add, import, or drag profiles into a subscription folder.
  • You cannot move a profile from another folder into a subscription folder.
  • If you try to batch-import a JSON file whose group name matches an existing subscription folder, the import is blocked with an error.
The only way to modify profiles in a subscription folder is to refresh (or re-add) the subscription from its source URL. When a subscription is deleted, its profile folder and all profiles within it are permanently removed.

Hosting a subscription

To distribute profiles to your users, create a JSON file with the structure below and serve it from any HTTPS endpoint.
{
  "subscriptionName": "My VPN Service",
  "description": "Access until 2026-12-31 · 100 GB",
  "trafficUsedMb": 15360,
  "trafficLimitMb": 102400,
  "updatedAt": "2026-06-28",
  "version": 1,
  "profiles": [
    {
      "name": "Server 1 — Frankfurt",
      "peer": "203.0.113.10:56000",
      "hashes": "vk_hash_1,vk_hash_2",
      "workers": 18,
      "port": 9000,
      "password": "MySecretPass16"
    }
  ]
}

Top-level fields

subscriptionName
string
required
The subscription name shown on the card and used as the profile folder name. Alternative accepted key: groupName.
profiles
array
required
Array of profile objects. See profile fields below. Alternative accepted key: servers.
description
string
Free-text description displayed on the subscription card (e.g. expiry date, quota notice).
trafficUsedMb
number
Traffic used so far in megabytes. Displayed as the filled portion of the progress bar. Alternative accepted key: trafficMb.
trafficLimitMb
number
Traffic quota in megabytes. Used as the progress bar total. Alternative accepted key: trafficLimit.
updatedAt
string
Server-side timestamp string (any format). Shown on the card as a reference; not parsed for scheduling purposes.
version
integer
Version number of this profile set. Currently stored but not used in the UI.

Profile object fields

Each object in the profiles (or servers) array:
name
string
required
Profile display name shown in the list.
peer
string
required
Server address in IP:port format. The port should be the DTLS port (default 56000).
hashes
string
Comma-separated VK call hashes (up to 4). Alternative accepted key: vkHashes. If omitted or blank, the profile will use the global hash pool.
workers
integer
Workers per hash. Defaults to 16 if omitted. Alternative accepted key: workersPerHash.
port
integer
Local UDP listen port on the device. Defaults to 9000 if omitted. Alternative accepted key: listenPort.
password
string
Connection password matching wdtt-server. Alternative accepted key: pass.

Alternative key names reference

The parser accepts either the canonical key or its alias:
CanonicalAlias
subscriptionNamegroupName
profilesservers
hashesvkHashes
workersworkersPerHash
portlistenPort
passwordpass
trafficUsedMbtrafficMb
trafficLimitMbtrafficLimit
updatedAtupdated
descriptioninfo

Exporting a group as a subscription

Any existing profile folder can be exported as a subscription-compatible JSON file:
1

Open folder management

Tap on the Profiles tab, then choose Manage folders.
2

Export the folder

Tap Export next to the desired folder. Choose a save location. The resulting file contains subscriptionName (the folder name) and profiles[] in the standard format.
3

Host the file

Upload the file to your HTTPS server and share the URL with your users.
Always serve subscription files over HTTPS. Plain http:// works technically but sends profile passwords over an unencrypted connection. Use a free certificate (e.g. Let’s Encrypt) for any production subscription endpoint.
qWDTT also accepts a Base64-encoded JSON body as the HTTP response. If the response body is not valid JSON but decodes from Base64 to valid JSON, the decoded content is parsed instead. This can be useful if your CDN or server strips certain content-type headers.

Build docs developers (and LLMs) love