Перейти к содержимому

Заголовки ответа

Ответ подписки может нести настройки в HTTP-заголовках. Те же ключи можно записать строками #ключ: значение в начале тела (см. Формат подписки); если есть и то и другое, побеждает заголовок. Ключи не зависят от регистра. На этой странице перечислены все ключи, которые реализует mins.

Тип Правило
bool true или 1 включает настройку. Любое другое непустое значение (false, 0, yes, True) выключает. Пишите true/false строчными или 1/0. Исключение: per-app-proxy-enable принимает только 1 или 0.
text Обычный текст либо base64: и далее base64 от текста в UTF-8 (используйте для не-ASCII и многострочного текста, так как значения заголовков должны быть ASCII). Более длинный текст обрезается до лимита, а не отклоняется.
URL Должен быть https:// с корректным хостом и без пробелов. Шесть ключей принимают также ссылку mins://, которая всегда открывает предпросмотр импорта: support-url, profile-web-page-url, announce-url, premium-url, sub-info-button-link, sub-expire-button-link.
list Элементы через запятые и/или пробелы.
range N или N-M: целые без знака, N не больше M.
seconds Целое от 5 до 15.

Прочие правила:

  • Пустое или состоящее из пробелов значение считается «не передано»: прежнее значение сохраняется.
  • Отправляйте каждый заголовок один раз. Повторяющиеся заголовки с одним именем склеиваются через запятую.
  • Обычные HTTP-заголовки (Content-Type, Server, Date и т. д.) не являются ключами подписки. Они молча пропускаются и не попадают в раздел Не применяется.
  • Допустимый ключ с некорректным значением пропускается с причиной; остальные заголовки применяются.

Настройки, которые меняют маршрутизацию трафика устройства, DNS, автозапуск или локальные порты, никогда не применяются молча. Они сохраняются как ожидающие и показываются пользователю в предпросмотре импорта (Подписка запрашивает изменение настроек, значения Сейчас и Будет) либо на экране подписки (Подписка запрашивает изменение настроек) с кнопками Принять и Отклонить.

  • Пока пользователь не принял, действует прежнее значение.
  • Отклонённое значение запоминается и не предлагается снова, пока панель не пришлёт для этого ключа другое значение. Повторная отправка уже принятого значения ничего не меняет.
  • После Принять, если подключение идёт через эту подписку, клиент переподключается, чтобы применить изменение.
  • Остальные ключи применяются сразу и перечисляются в разделе Задано подпиской, где пользователь может переопределить каждый своим значением или вернуть глобальную настройку.

Ключи, требующие подтверждения, в таблицах ниже отмечены «Да»: routing-enable, proxy-enable, tun-enable, exclude-local-networks-enable, exclude-routes, exclude-routes-set, include-all-networks-enable, exclude-apns-enable, inbound-http-enable, dns-from-json-enable, app-auto-start и все ключи, начинающиеся с per-app-proxy- или server-address-resolve-.

Ключ Значение Лимиты Действие Подтверждение
profile-title text 25 символов Название подписки. Имя, введённое пользователем, главнее. Нет
profile-description text 200 символов Описание на карточке подписки. Нет
announce text 200 символов Объявление рядом с группой подписки на главном экране и на экране подписки. Нет
announce-url URL https:// или mins:// Кнопка Подробнее на объявлении на экране подписки. Нет
support-url URL https:// или mins:// Ссылка Поддержка в разделе Ссылки провайдера. Нет
profile-web-page-url URL https:// или mins:// Ссылка Сайт. Нет
premium-url URL https:// или mins:// Ссылка Тариф на сайте. Нет
support-email адрес содержит @; без пробелов, управляющих символов, ?, & и # Ссылка Написать в поддержку (открывает mailto:). Нет
sub-info-text (псевдоним banner-text) text 200 символов Информационная карточка на экране подписки. Нет
sub-info-button-text (псевдоним banner-button-text) text 25 символов Подпись кнопки карточки. По умолчанию: Подробнее. Нет
sub-info-button-link (псевдоним banner-button-url) URL https:// или mins:// Куда ведёт кнопка карточки. Без него кнопки нет. Нет
sub-info-color red, blue, green Тон карточки: цвет ошибки, обычный акцент, цвет успеха. Другие цвета не принимаются. Нет
serverDescription text 30 символов Описание по умолчанию для серверов подписки, у которых нет своего. Нет
Ключ Значение Лимиты Действие Подтверждение
subscription-userinfo upload=<байты>; download=<байты>; total=<байты>; expire=<unix-секунды> Целые без знака; неизвестные поля и неверные числа пропускаются с предупреждением; нужно хотя бы одно верное поле Показывает израсходованный трафик (upload + download) из total и дни до expire. total=0 или отсутствие — без лимита, expire=0 или отсутствие — без срока. Индикатор переходит в тон предупреждения при 90% лимита или за 3 дня до конца и в тон ошибки, когда лимит исчерпан или срок прошёл. Нет
notification-subs-expire, sub-expire bool false отключает уведомления об истечении для этой подписки. По умолчанию включены. Клиент уведомляет, когда остаётся 3 дня, когда остаётся 1 день и когда подписка истекла, по одному разу на этап. Нужен expire в subscription-userinfo. Нет
sub-expire-button-link URL в приложении https:// или mins://; действие в уведомлении принимает только https:// Кнопка Продлить на карточке подписки и в уведомлении об истечении. Нет
Ключ Значение Лимиты Действие Подтверждение
profile-update-interval целые часы больше 0 Интервал автообновления. По умолчанию — 6 часов, если не передан. Нет
subscription-auto-update-enable bool false отключает автообновление этой подписки. Нет
subscription-auto-update-open-enable bool true: при каждом запуске приложения обновляются все подписки независимо от интервалов. Действует на устройство; решает последняя подписка, приславшая ключ. Нет
subscription-request-timeout секунды от 5 до 15 Таймаут загрузки этой подписки. По умолчанию 9. Нет
new-url URL https:// С этого ответа заменяет сохранённый адрес подписки. На карточке подписки показывается URL подписки изменён со старым и новым адресом. Если новый адрес не HTTPS, обновление завершается ошибкой «Insecure subscription migration refused». Главнее new-domain. Нет
new-domain имя хоста без /, :, ?, #, @ и пробелов Заменяет только хост сохранённого адреса; схема, порт, путь и запрос остаются. То же уведомление и то же правило HTTPS, что у new-url. Нет
fallback-url URL https:// Второй адрес, который один раз пробуется, если загрузка основного не удалась. Сохраняется из успешного ответа, поэтому работает со второй загрузки. Нет
change-user-agent строка без управляющих символов User-Agent для следующих запросов этой подписки вместо пресета пользователя. См. Заголовки запроса. Нет
manual-block-user-agent bool true блокирует выбор User-Agent на экране подписки. Нет
subscription-always-hwid-enable bool true помечает подписку как требующую идентификатор устройства. Если пользователь выключил Отправлять идентификатор устройства (HWID), показывается предупреждение, что обновления могут перестать работать; выбор остаётся за пользователем. Нет
Ключ Значение Лимиты Действие Подтверждение
subscription-autoconnect bool true: при запуске приложения с выбранным сервером этой подписки подключение выполняется автоматически. Также сразу после первого импорта подписки. Нет
subscription-autoconnect-type lastused, lowestdelay, random Какой сервер выбирает автоподключение. lastused (по умолчанию): последний выбранный сервер группы, а если его нет — первый. lowestdelay: пингует группу и берёт самый быстрый. random: случайный. Нет
subscription-ping-onopen-enabled bool Пингует серверы этой подписки при запуске приложения и после импорта. Нет
subscriptions-sort-type (псевдоним sort-order) without, ping, alphabet sort-order принимает также none (= without) и name (= alphabet) Порядок серверов в группе: как у провайдера, по пингу, по имени. Нет
subscriptions-collapse bool false: группу нельзя свернуть. Нет
subscriptions-expand-now bool true: при обновлении подписки группа разворачивается. Нет
subscription-pin bool true: группа закрепляется выше остальных. Нет
Ключ Значение Лимиты Действие Подтверждение
ping-type tcp, proxy, proxy-head, icmp Как измеряются серверы этой подписки. Собственный mins.ping.type сервера и выбор пользователя для сервера главнее. Нет
ping-result time, icon Показывать число или только цвет качества. Нет
check-url-via-proxy URL только https:// (без mins://) Адрес проверки для proxy и proxy-head. По умолчанию https://www.gstatic.com/generate_204. Нет
proxy-ping-timeout секунды от 5 до 15 Таймаут пинга. По умолчанию 5 секунд. Нет
proxy-ping-mode default только default Принимается и сохраняется; на работу не влияет. Другие значения (double, keepalive) отклоняются. Нет

Применяется только к серверам, которые клиент собирает сам: серверам из ссылок и отдельным outbound в JSON. Полный Xray JSON используется как есть, и каждый ключ этой таблицы для JSON-подписки отклоняется с причиной «Traffic controls do not override a full Xray JSON configuration». Фрагментация и шумы работают с TCP-соединениями; к серверам на UDP (Hysteria2, WireGuard, mKCP) они неприменимы, и пока включены, такие серверы не собираются.

Ключ Значение Лимиты Действие Подтверждение
fragmentation-enable bool Включает или выключает фрагментацию TLS. Нет
fragmentation-packets tlshello или range all отклоняется Какие пакеты делить. Нет
fragmentation-length range Размер фрагмента в байтах, например 50-100. Нет
fragmentation-interval range Задержка между фрагментами, например 10-20. Нет
fragmentation-maxsplit range Максимальное число разбиений. Нет
noises-enable bool Включает или выключает шумовые пакеты. Нет
noises-packet-type (псевдоним noises-type) array, str, hex, base64, rand по умолчанию array Формат noises-packet. Нет
noises-packet строка должна соответствовать типу (ниже) Содержимое шума. Если не соответствует заявленному типу, все ключи noises-* этого ответа игнорируются. Нет
noises-delay range Задержка в миллисекундах. Нет
noises-rand range Длина случайных данных. Нет
noises-rand-range range по умолчанию 0-255 Диапазон значений случайных байт. Нет
mux-enable bool Включает или выключает мультиплексирование. Нет
mux-tcp-connections целое 32-битное знаковое целое; диапазон mins не проверяет Параллелизм TCP в Mux. Нет
mux-xudp-connections целое 32-битное знаковое целое; диапазон mins не проверяет Параллелизм XUDP в Mux. Нет
mux-quic reject, allow, skip Как Mux обращается с QUIC (UDP 443). Нет
sniffing-enable bool Включает или выключает определение назначения (sniffing). Нет

Форматы noises-packet: array — байты, 1,2,3 или [1,2,3]; str — любая строка; hex — hex-пары через запятую, например 0a0b,ff00; base64 — элементы base64 через запятую; rand — диапазон, например 10-20.

Эти ключи меняют поведение всего устройства, пока используются серверы подписки. Все ключи таблицы, кроме user-agent-geo-files, требуют подтверждения пользователя.

Ключ Значение Лимиты Действие Подтверждение
proxy-enable bool при передаче обоих должен быть противоположен tun-enable true: режим подключения Только прокси; false: VPN (TUN). Да
tun-enable bool см. выше true: VPN (TUN); false: Только прокси. Если оба ключа присланы с одним значением, оба игнорируются. Если прислан только один, второй сбрасывается. Да
exclude-local-networks-enable bool Обход локальных сетей. Да
exclude-routes list IP или CIDR (10.0.0.0/8, 2001:db8::/32) Добавляет к Исключённым маршрутам: они идут напрямую. Да
exclude-routes-set list то же Заменяет Исключённые маршруты. Да
include-all-networks-enable bool Включить все сети. Только iOS и macOS. Да
exclude-apns-enable bool Исключить push-уведомления Apple. Только iOS и macOS. Да
inbound-http-enable bool В режиме VPN дополнительно открывает локальный порт прокси на 127.0.0.1 с сгенерированными учётными данными. Да
dns-from-json-enable bool Только для серверов с полным JSON. true (по умолчанию): используется собственный dns из JSON. false: его заменяет DNS, построенный из действующего профиля маршрутизации. Да
server-address-resolve-enable bool нужны оба ключа ниже Перед подключением разрешает доменные имена серверов подписки через DoH-резолвер ниже и подключается по IP. SNI и Host не меняются. Только серверы из ссылок. Если разрешение не удалось, используется исходный домен с предупреждением. Да
server-address-resolve-dns-domain URL DoH-адрес https:// DoH-резолвер. Да
server-address-resolve-dns-ip IP IP-адрес Адрес этого резолвера, чтобы ему самому не требовалось разрешение имени. Да
app-auto-start bool Android: Запускать после загрузки устройства. Да
routing-enable bool true: серверы подписки используют профиль маршрутизации подписки. false: профиль маршрутизации для них не используется. Автоматически становится true, если routing содержит профиль, который должен быть включён (JSON, base64, адрес https:// или ссылка onadd). Да
routing профиль см. Профили маршрутизации Профиль маршрутизации: JSON, base64 от JSON (можно с base64:), адрес https:// или ссылка маршрутизации mins:///happ:///incy://. Профиль сохраняется неактивным и используется серверами этой подписки только после подтверждения routing-enable. Адрес загружается при импорте подписки; последующие обновления подписки его заново не скачивают, поэтому присылайте профиль внутри ответа, если он часто меняется. Профиль, не прошедший проверку, пропускается как «Invalid routing profile». Через routing-enable
user-agent-geo-files safari-mac, chrome-win, safari-ios, firefox-win, chrome-android User-Agent браузера, с которым загружаются геофайлы (User-Agent геофайлов). Действует на устройство; решает последняя подписка, приславшая ключ. Нет

Раздельное туннелирование по приложениям

Заголовок раздела «Раздельное туннелирование по приложениям»

Per-app-маршрутизация есть только на Android, Windows и Linux. Ключи без суффикса (per-app-proxy-enable, per-app-proxy-mode, per-app-proxy-list, per-app-proxy-list-set, per-app-proxy-list-invert) — это варианты для Android: они читаются на всех платформах, кроме Windows и Linux, где игнорируются и вместо них используются ключи с -windows и -linux. Ключи с -windows читаются только на Windows, с -linux — только на Linux. На iOS и macOS принятая per-app-настройка приводит к ошибке подключения «Per-app routing is not supported on this platform». Используйте заголовок запроса x-device-os (см. Заголовки запроса) и отправляйте эти ключи только на поддерживаемые платформы.

Ключ Значение Действие Подтверждение
per-app-proxy-enable 1 или 0 Ключ без суффикса (вариант для Android). 0: режим по приложениям выключен. 1: включает режим «только выбранные», если режим не задан. Да
per-app-proxy-mode off, on, bypass (proxy читается как on) Ключ без суффикса (вариант для Android). on: через VPN идут только перечисленные приложения. bypass: все приложения, кроме перечисленных. Да
per-app-proxy-list список ID пакетов Ключ без суффикса (вариант для Android). Добавляет к списку. Да
per-app-proxy-list-set list Ключ без суффикса (вариант для Android). Заменяет список. Да
per-app-proxy-list-invert list Ключ без суффикса (вариант для Android). Включает режим «все, кроме перечисленных» и заменяет список. Да
per-app-proxy-mode-windows off, on, bypass Windows. Смысл тот же, что у per-app-proxy-mode. Да
per-app-proxy-list-windows-add, per-app-proxy-list-windows-set список имён исполняемых файлов Windows. Добавить к списку или заменить его. Да
per-app-proxy-mode-linux off, on, bypass Linux. Смысл тот же. Да
per-app-proxy-list-linux-add, per-app-proxy-list-linux-set список имён исполняемых файлов Linux. Добавить к списку или заменить его. Да

Эти ключи распознаются и отклоняются. Они появляются в разделе Не применяется в сведениях о подписке с указанной причиной (текст причины показывается на английском).

Ключ Причина
hide-settings, hide-url, hide-check Providers cannot hide client settings or controls. (Провайдеры не могут скрывать настройки и элементы управления клиента.)
color-profile, banner-bg-color, banner-button-color Provider colors are not applied; the application theme belongs to the user. (Цвета провайдера не применяются; тема приложения принадлежит пользователю.)
custom-tunnel-config sing-box configuration is outside the supported scope. (Конфигурация sing-box вне поддерживаемого объёма.)
hide-vpn-icon The system VPN indicator cannot be hidden. (Системный индикатор VPN скрыть нельзя.)
subscription-alternative-hwid-enabled Alternative HWID format is undocumented. (Альтернативный формат HWID не документирован.)
no-limit-enabled, no-limit-xhttp-enabled Xray memory-limit controls do not apply to this engine. (Лимиты памяти Xray к этому движку не относятся.)

Любой другой заголовок не является ключом подписки и молча пропускается, без предупреждения. Это относится и к параметрам Happ и INCY, которые mins не реализует, например tun-type, socks-auth-* или http-auth-*. (Неизвестная строка #key: value в теле — иначе: она считается задуманными метаданными и пропускается с причиной «Unsupported subscription parameter».)

Отклонение по значению: ключ из таблиц выше со значением вне лимитов пропускается с причиной вроде «Timeout must be 5–15 seconds», «Expected a positive interval in hours», «Unsupported parameter value», «Expected IP literals or CIDR networks», «Unsafe URL ignored; HTTPS is required (mins links require import preview)» или «INCY boolean parameters require 1 or 0».

Ответ с частыми ключами. Значения base64 декодируются в Example VPN и Planned maintenance on Friday, 02:00-03:00 UTC.

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
profile-title: base64:RXhhbXBsZSBWUE4=
profile-update-interval: 12
subscription-userinfo: upload=1073741824; download=5368709120; total=107374182400; expire=1798761600
support-url: https://t.me/example_support
profile-web-page-url: https://example.com
announce: base64:UGxhbm5lZCBtYWludGVuYW5jZSBvbiBGcmlkYXksIDAyOjAwLTAzOjAwIFVUQw==
announce-url: https://example.com/status
sub-expire-button-link: https://example.com/renew
sub-info-text: Renew by Friday and keep your plan
sub-info-button-text: Renew
sub-info-button-link: https://example.com/renew
sub-info-color: red
subscriptions-sort-type: ping
ping-type: proxy-head
check-url-via-proxy: https://cp.cloudflare.com/generate_204
subscription-ping-onopen-enabled: true
vless://11111111-1111-4111-8111-111111111111@fi.example.com:443?type=ws&security=tls&sni=fi.example.com&path=%2Fws&host=fi.example.com#Finland
hysteria2://s3cret@de.example.com:443/?sni=de.example.com#Germany

Фрагментация и шумы работают только с серверами на TCP/TLS. Включайте их в подписке без серверов Hysteria2, WireGuard и mKCP (см. Настройка трафика), например только с VLESS:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
fragmentation-enable: true
fragmentation-packets: tlshello
fragmentation-length: 50-100
fragmentation-interval: 10-20
vless://11111111-1111-4111-8111-111111111111@fi.example.com:443?type=ws&security=tls&sni=fi.example.com&path=%2Fws&host=fi.example.com#Finland
vless://11111111-1111-4111-8111-111111111111@nl.example.com:443?security=tls&sni=nl.example.com#Netherlands

Настройки, требующие подтверждения: исключение банковского приложения из туннеля на Android, исключение локальных сетей и профиль маршрутизации. Пользователя спросят один раз; если он отклонит, именно этот набор больше не предлагается.

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
exclude-local-networks-enable: true
exclude-routes: 10.0.0.0/8, 192.168.0.0/16
per-app-proxy-mode: bypass
per-app-proxy-list: com.example.bank, com.example.wallet
routing: https://example.com/routing/ru.json
vless://11111111-1111-4111-8111-111111111111@fi.example.com:443?security=tls#Finland