StealthSurf VPNStealthSurf VPN
Доступные методы

Конфигурации

Методы для управления VPN конфигурациями: получение, создание, продление, изменение локации.

Обзор

Модуль для работы с VPN конфигурациями пользователя. Позволяет получать список конфигов, создавать новые, продлевать и менять настройки.


GET /configs

Получить список всех VPN конфигураций пользователя.

Rate Limit: глобальный (60 req/min)

Результат кэшируется на 300 секунд. При попадании в кэш параметры limit и offset игнорируются.

Query Parameters

ParameterTypeRequiredDescription
limitnumberНетКоличество записей на страницу (1-1000, по умолчанию 100)
offsetnumberНетСмещение для пагинации (минимум 0, по умолчанию 0)

Пример запроса

curl -X GET "https://api.stealthsurf.net/configs?limit=10&offset=0" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 200,
  data: Array<{
    id: number                              // ID конфигурации
    connection_url: string                  // URL подключения (vless://, ss://, etc.)
    title: string | null                    // Название конфигурации
    location_id: number                     // ID локации сервера
    server_id: number                       // ID сервера
    protocol: string                        // Протокол (vless, trojan, trojan-2901, hysteria2, vless-2410, shadowsocks-2022, wg, amnezia-wg-2)
    expires_at: number                      // Unix timestamp окончания подписки
    created_at: number                      // Unix timestamp создания
    is_extended_settings_enabled?: boolean  // Расширенные настройки включены
    xray_config?: string                    // Xray конфиг (если расширенные настройки)
    awg_config?: string                     // AWG конфиг (если AmneziaWG)
    flags?: string[]                        // Флаги (noChangeCountry, etc.)
    is_online: boolean | null               // Статус сервера
    auto_renewal: boolean                   // Автопродление включено
    auto_renewal_days: number | null        // Дней для автопродления
    ipv6?: string | null                    // IPv6 адрес (если назначен)
  }>
}

GET /configs/tariffs

Получить тарифы для покупки и продления конфигов.

Rate Limit: глобальный (60 req/min)

Возвращаются только активные способы оплаты, отсортированные по позиции, и только те, у которых остался хотя бы один тариф после применения скидок и персонального ценового правила пользователя.

Пример запроса

curl -X GET "https://api.stealthsurf.net/configs/tariffs" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 200,
  data: Array<{
    id: number                    // ID платежного метода
    display_name: string          // Название (SBP, Card, TON, USDT TRC20, etc.)
    currency: string              // Валюта (RUB, TON, USDT)
    min_amount: number | null     // Минимальная сумма платежа (null, если не задана)
    tariffs: Array<{
      id: number                  // ID тарифа
      days: number                // Количество дней
      price: number               // Цена
      old_price?: number          // Старая цена (для отображения скидки)
    }>
  }>
}

GET /configs/available-servers

Получить доступные серверы для локации и протокола.

Rate Limit: 5 req / 5 sec

Query Parameters

ParameterTypeRequiredDescription
location_idnumberДаID локации
protocolstringДаПротокол: vless, trojan, trojan-2901, hysteria2, vless-2410, shadowsocks-2022, wg, amnezia-wg-2

Пример запроса

curl -X GET "https://api.stealthsurf.net/configs/available-servers?location_id=1&protocol=vless" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

Возвращается до 5 серверов, отсортированных по убыванию свободных слотов; выборка приоритизирует серверы из разных подсетей /24. Результат кэшируется на 10 секунд. В выдачу попадают только публичные серверы.

{
  status: true,
  statusCode: 200,
  data: Array<{
    id: number                // ID сервера
    ip: string                // IP адрес сервера
    available_slots: number   // Свободные слоты (max_configs - config_count)
  }>
}

GET /configs/:config_id/serverStats

Получить статистику сервера конфигурации.

Rate Limit: 3 req / 5 sec

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Пример запроса

curl -X GET "https://api.stealthsurf.net/configs/123/serverStats" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 200,
  data: {
    host: string              // IP адрес сервера
    status: string            // Статус (up, down)
    uptime_days: number       // Время работы в днях
    cpu_model: string         // Модель CPU
    stats: Array<{
      date: string            // Дата (YYYY-MM-DD)
      cpu: number             // CPU usage %
      ram: number             // RAM usage %
      up: number              // Upload Mbps
      down: number            // Download Mbps
    }>
  } | null                    // null, если у сервера нет адреса/статистики
}

POST /configs

Создать новую VPN конфигурацию.

Rate Limit: 1 req / 1 sec

Оплата обязательна: нужно передать либо promocode, либо пару payment_method_id + tariff_id. Одновременная передача обоих вариантов запрещена.

Request Body

FieldTypeRequiredDescription
location_idnumberДа*ID локации (*не нужно если as_key=true)
protocolstringДа*vless, trojan, trojan-2901, hysteria2, vless-2410, shadowsocks-2022, wg, amnezia-wg-2 (*не нужно если as_key=true)
server_idnumberНетПредпочтительный сервер (выбирается автоматически, если не указан; взаимоисключающий с server_ids)
server_idsnumber[]НетСписок предпочтительных серверов по возрастанию задержки, сначала самые быстрые (1-50, взаимоисключающий с server_id)
payment_method_idnumberНетID способа оплаты (обязателен вместе с tariff_id, если не передан promocode)
tariff_idnumberНетID тарифа
promocodestringНетПромокод (4-32 символа). Взаимоисключим с payment_method_id/tariff_id; недопустим вместе с as_key
use_extended_settingsbooleanНетВключить расширенные настройки. Доступно только для vless, trojan, vless-2410, shadowsocks-2022, amnezia-wg-2
use_warpbooleanНетИспользовать Cloudflare WARP. Требует use_extended_settings
disable_flow_realitybooleanНетОтключить Flow Reality. Несовместимо с use_xhttp и use_grpc
disable_realitybooleanНетОтключить Reality. Требует use_extended_settings
change_snibooleanНетИзменить SNI. Требует use_extended_settings. Недоступно для vless-2410; нельзя вместе с disable_reality для trojan/trojan-2901
disable_snibooleanНетУстановить QQ-fingerprint. Недоступно для vless-2410
enable_family_filterbooleanНетСемейный фильтр. Требует use_extended_settings
dns_presetstringНетПресет DNS на стороне сервера: cloudflare, google, quad9, adguard, adguard_family, yandex, comss, mullvad, custom. Требует use_extended_settings
custom_dns_urlstringНетСобственный DoH URL (только схема https). Обязателен, когда dns_preset равен custom
pass_all_traffic_through_vpnbooleanНетВесь трафик через VPN. Требует use_extended_settings; для vless, trojan, vless-2410, shadowsocks-2022 допустимо только в smart-локациях
block_bittorrentbooleanНетБлокировать BitTorrent. Требует use_extended_settings
use_xhttpbooleanНетИспользовать XHTTP вместо TCP (не сочетается с use_grpc)
use_grpcbooleanНетИспользовать gRPC вместо TCP (не сочетается с use_xhttp)
randomize_fingerprintbooleanНетРандомизированный uTLS-отпечаток вместо chrome
grpc_multi_modebooleanНетВключить gRPC multi mode (TunMulti); требует use_grpc = true
use_loopbacksbooleanНетПерелив трафика в следующую группу балансировщика при полном отказе группы
as_keybooleanНетКупить как ключ активации
enable_auto_renewalbooleanНетВключить автопродление

Пример запроса

curl -X POST "https://api.stealthsurf.net/configs" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": 1,
    "protocol": "vless",
    "promocode": "MYCODE"
  }'

Ответ (конфиг создан сразу)

Оплата промокодом, реферальным балансом или балансом счёта.

{
  status: true,
  statusCode: 201,
  data: {
    id: number
    connection_url: string
    title: string | null
    location_id: number
    server_id: number
    protocol: string
    expires_at: number
    created_at: number
    is_extended_settings_enabled?: boolean
    xray_config?: string
    awg_config?: string
    flags?: string[]
    is_online: boolean | null
    auto_renewal: boolean
    auto_renewal_days: number | null
    ipv6?: string | null
  }
}

Ответ (требуется оплата)

{
  status: true,
  statusCode: 201,
  data: {
    link: string    // URL для оплаты
  }
}

Ответ (как ключ активации)

Только при as_key: true и оплате с реферального баланса или баланса счёта.

{
  status: true,
  statusCode: 201,
  data: {
    promocode: string    // Ключ активации
    days: number         // Количество дней
  }
}

POST /configs/renewal/:config_id

Продлить конфигурацию.

Rate Limit: 1 req / 1 sec

Нужно передать либо promocode, либо пару payment_method_id + tariff_id. Новая дата истечения считается как expires_at + days * 86400, то есть прибавляется к текущему значению, а не к моменту запроса.

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Request Body

FieldTypeRequiredDescription
promocodestringНетПромокод (4-32 символа). Взаимоисключим с payment_method_id/tariff_id
payment_method_idnumberНетID способа оплаты
tariff_idnumberНетID тарифа
enable_auto_renewalbooleanНетВключить автопродление. Применяется только при оплате с баланса счёта

Пример запроса

curl -X POST "https://api.stealthsurf.net/configs/renewal/123" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "payment_method_id": 1,
    "tariff_id": 2
  }'

Ответ (успех)

{
  status: true,
  statusCode: 201,
  data: {
    id: number          // ID конфигурации
    expires_at: number  // Новый Unix timestamp окончания
  }
}

Ответ (требуется оплата)

{
  status: true,
  statusCode: 201,
  data: {
    link: string    // URL для оплаты
  }
}

PATCH /configs/:config_id/settings

Изменить настройки конфигурации (локацию, протокол). Смена локации, сервера, протокола и расширенных опций выполняется с перевыпуском конфига на подходящем сервере.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Request Body

FieldTypeRequiredDescription
location_idnumberДаID новой локации
protocolstringДаПротокол: vless, trojan, trojan-2901, hysteria2, vless-2410, shadowsocks-2022, wg, amnezia-wg-2
server_idnumberНетПредпочтительный сервер (взаимоисключающий с server_ids)
server_idsnumber[]НетСписок предпочтительных серверов по возрастанию задержки, сначала самые быстрые (1-50, взаимоисключающий с server_id)
use_extended_settingsbooleanНетРасширенные настройки. Доступно только для vless, trojan, vless-2410, shadowsocks-2022, amnezia-wg-2
use_warpbooleanНетWARP. Требует use_extended_settings
disable_realitybooleanНетОтключить Reality. Требует use_extended_settings
change_snibooleanНетИзменить SNI. Требует use_extended_settings. Недоступно для vless-2410; нельзя вместе с disable_reality для trojan/trojan-2901
enable_family_filterbooleanНетСемейный фильтр. Требует use_extended_settings
dns_presetstringНетПресет DNS на стороне сервера: cloudflare, google, quad9, adguard, adguard_family, yandex, comss, mullvad, custom. Требует use_extended_settings
custom_dns_urlstringНетСобственный DoH URL (только схема https). Обязателен, когда dns_preset равен custom
disable_flow_realitybooleanНетОтключить Flow Reality. Несовместимо с use_xhttp и use_grpc
disable_snibooleanНетУстановить QQ-fingerprint. Недоступно для vless-2410
block_bittorrentbooleanНетБлокировать BitTorrent. Требует use_extended_settings
pass_all_traffic_through_vpnbooleanНетВесь трафик через VPN. Требует use_extended_settings; для vless, trojan, vless-2410, shadowsocks-2022 допустимо только в smart-локациях
use_xhttpbooleanНетXHTTP (не сочетается с use_grpc)
use_grpcbooleanНетgRPC (не сочетается с use_xhttp)
randomize_fingerprintbooleanНетРандомизированный uTLS-отпечаток вместо chrome
grpc_multi_modebooleanНетВключить gRPC multi mode (TunMulti); требует use_grpc = true
use_loopbacksbooleanНетПерелив трафика в следующую группу балансировщика при полном отказе группы

Пример запроса

curl -X PATCH "https://api.stealthsurf.net/configs/123/settings" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": 5,
    "protocol": "vless"
  }'

Ответ

{
  status: true,
  statusCode: 200,
  data: {
    connection_url: string   // Новый URL подключения
    server_id: number        // ID нового сервера
    xray_config?: string     // Xray конфиг (если расширенные настройки)
    awg_config?: string      // AWG конфиг (если AmneziaWG)
  }
}

server_id может отличаться от запрошенного, если сработал фолбэк на другой сервер.


POST /configs/makeBridge

Создать мост между двумя конфигурациями (двойной VPN).

Rate Limit: 1 req / 1 sec

Первый конфиг становится точкой входа, второй — точкой выхода и нормализуется в расширенный vless с отключённым Reality. Оба конфига при необходимости автоматически переводятся на vless и на подходящий сервер, а их существующие субконфиги удаляются.

Request Body

FieldTypeRequiredDescription
first_config_idnumberДаID входной конфигурации
second_config_idnumberДаID выходной конфигурации
first_typestringНет"config", "paid_option" или "cloud" (по умолчанию "config")
second_typestringНет"config", "paid_option" или "cloud" (по умолчанию "config")

Тип определяет источник конфига: config — обычный конфиг пользователя, paid_option — конфиг платной опции, cloud — конфиг облачного сервера. Для типа cloud перенос на другой сервер невозможен: облачный сервер должен быть активен и уже поддерживать vless.

Пример запроса

curl -X POST "https://api.stealthsurf.net/configs/makeBridge" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "first_config_id": 123,
    "second_config_id": 456
  }'

Ответ

{
  status: true,
  statusCode: 201,
  data: true
}

PATCH /configs/:config_id/XrayConfig

Обновить Xray конфигурацию. Доступно только для конфигов с включёнными расширенными настройками.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Request Body

FieldTypeRequiredDescription
xray_configstringДаНовый Xray конфиг в виде JSON-строки. Должен содержать inbounds[0].port типа number
public_keystring | nullНетПубличный ключ Reality, используемый при сборке connection URL
use_loopbacksbooleanНетПерелив трафика в следующую группу балансировщика при полном отказе группы (по умолчанию наследуется из текущих настроек)

Пример запроса

curl -X PATCH "https://api.stealthsurf.net/configs/123/XrayConfig" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "xray_config": "{...}"
  }'

Ответ

{
  status: true,
  statusCode: 200,
  data: {
    connection_url: string
    server_id: number
    xray_config?: string
    awg_config?: string
  }
}

POST /configs/:config_id/resetXrayConfig

Сбросить XRay конфигурацию к настройкам по умолчанию. Доступно только для конфигов с включёнными расширенными настройками.

Rate Limit: 1 req / 4 sec

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Пример запроса

curl -X POST "https://api.stealthsurf.net/configs/123/resetXrayConfig" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 201,
  data: {
    connection_url: string
    server_id: number
    xray_config?: string
    awg_config?: string
  }
}

PATCH /configs/:config_id/awgConfig

Обновить AWG конфиг (AmneziaWG параметры обфускации). Доступно только для конфигов протокола amnezia-wg-2 с включёнными расширенными настройками.

Rate Limit: 1 req / 1 sec

Плоские AWG-поля и объект awg_params взаимоисключимы: либо передаются отдельные поля, либо целиком объект awg_params.

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Request Body

FieldTypeRequiredDescriptionRange
portnumberНетUDP порт сервера (0 — автоматический выбор)1024-65535
client_listen_portnumberНетПорт прослушивания на клиенте (0 — автоматический выбор)1024-65535
mtunumberНетMTU клиентского интерфейса (0 — наследовать значение сервера)1280-1420
dnsstringНетУстаревшее переопределение одним IPv4-адресом DNS. Нельзя комбинировать с dns_mode и dns_servers
dns_modestringНетРежим клиентского DNS: default, custom, system
dns_serversstring[]НетСписок IPv4-адресов DNS для режима custom. Должен быть пустым для default и system
persistent_keepalivenumberНетИнтервал keepalive (по умолчанию наследуется 25, явный 0 отключает keepalive)0-65535
jcnumberНетJunk packet count0-128
jminnumberНетJunk min size0-1280
jmaxnumberНетJunk max size0-1280
s1numberНетInit packet junk size0-1132
s2numberНетResponse packet junk size0-1188
s3numberНетInit packet magic header0-64
s4numberНетResponse packet magic header0-32
h1stringНетЗначение обфускации заголовка h1 (формат uint32 или min-max)
h2stringНетЗначение обфускации заголовка h2 (формат uint32 или min-max)
h3stringНетЗначение обфускации заголовка h3 (формат uint32 или min-max)
h4stringНетЗначение обфускации заголовка h4 (формат uint32 или min-max)
i1stringНетСигнатурный CPS-пакет i1
i2stringНетСигнатурный CPS-пакет i2
i3stringНетСигнатурный CPS-пакет i3
i4stringНетСигнатурный CPS-пакет i4
i5stringНетСигнатурный CPS-пакет i5
awg_paramsobject | nullНетПолная замена набора AWG-переопределений (те же поля, что выше). null сбрасывает все переопределения. Нельзя комбинировать с плоскими AWG-полями
routingobject | nullНетПолная замена политики маршрутизации. null или режим full возвращают полный туннель
routing.modestringДа (внутри routing)Режим маршрутизации: full, bypass, split
routing.allowed_ipsstring[]НетIPv4-подсети в формате CIDR, направляемые в туннель. Обязательны для split, запрещены для bypass и fullдо 4096 элементов
routing.excluded_ipsstring[]НетIPv4-подсети в формате CIDR, исключаемые из туннеля. Обязательны для bypass, опциональны для splitдо 4096 элементов

Пример запроса

curl -X PATCH "https://api.stealthsurf.net/configs/123/awgConfig" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "jc": 4,
    "jmin": 50,
    "jmax": 1000
  }'

Ответ

{
  status: true,
  statusCode: 200,
  data: {
    connection_url: string
    server_id: number
    xray_config?: string
    awg_config?: string
  }
}

POST /configs/:config_id/awgConfig/generate

Сгенерировать параметры обфускации AWG без изменения конфигурации. Доступно только для конфигов протокола amnezia-wg-2 с включёнными расширенными настройками.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Пример запроса

curl -X POST "https://api.stealthsurf.net/configs/123/awgConfig/generate" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 201,
  data: {
    h1: string    // Значение обфускации заголовка h1
    h2: string    // Значение обфускации заголовка h2
    h3: string    // Значение обфускации заголовка h3
    h4: string    // Значение обфускации заголовка h4
    s1: number    // Размер junk-данных init-пакета
    s2: number    // Размер junk-данных response-пакета
  }
}

POST /configs/:config_id/awgConfig/regenerate

Перегенерировать и сразу применить параметры H1–H4 и S1–S2 AWG. Доступно только для конфигов протокола amnezia-wg-2 с включёнными расширенными настройками.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Пример запроса

curl -X POST "https://api.stealthsurf.net/configs/123/awgConfig/regenerate" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 201,
  data: {
    connection_url: string   // Новый URL подключения
    server_id: number        // ID сервера
    xray_config?: string
    awg_config?: string      // Обновлённый AWG конфиг
  }
}

PATCH /configs/title/:config_id

Обновить название конфигурации.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Request Body

FieldTypeRequiredDescription
titlestring | nullДаНовое название (1-64 символа) или null

Пример запроса

curl -X PATCH "https://api.stealthsurf.net/configs/title/123" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Мой конфиг"
  }'

Ответ

{
  status: true,
  statusCode: 200,
  data: true
}

PATCH /configs/:config_id/auto-renewal

Переключить автопродление конфига.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Request Body

FieldTypeRequiredDescription
enabledbooleanДаВключить/выключить автопродление
daysnumberНетКоличество дней для автопродления (минимум 1, обязательно при включении)

Пример запроса

curl -X PATCH "https://api.stealthsurf.net/configs/123/auto-renewal" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "days": 30
  }'

Ответ

{
  status: true,
  statusCode: 200,
  data: {
    auto_renewal: boolean
    auto_renewal_days: number | null
  }
}

Устройства WireGuard

Методы управляют отдельными устройствами конфигураций с протоколом wg или amnezia-wg-2. Основное устройство возвращается с id: null и is_primary: true.

Объект устройства имеет следующую структуру:

{
  id: number | null
  title: string
  is_primary: boolean
  protocol: "wg" | "amnezia-wg-2"
  connection_url: string
  created_at: number
}

GET /configs/:configId/devices

Получить устройства пользовательской конфигурации.

Rate Limit: глобальный (60 req/min)

URL Parameters

ParameterTypeRequiredDescription
configIdnumberДаID конфигурации

Пример запроса

curl -X GET "https://api.stealthsurf.net/configs/123/devices" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 200,
  data: Array<{
    id: number | null
    title: string
    is_primary: boolean
    protocol: "wg" | "amnezia-wg-2"
    connection_url: string
    created_at: number
  }>
}

Ошибки

errorCodemessageКогда
1not foundКонфигурация не найдена
3bad requestКонфигурация недоступна для управления устройствами
48expiredСрок действия конфигурации истёк
52server not availableСервер конфигурации недоступен
93wireguard devices are not supported for this configПротокол конфигурации не поддерживает устройства WireGuard

POST /configs/:configId/devices

Создать устройство пользовательской конфигурации.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
configIdnumberДаID конфигурации

Request Body

FieldTypeRequiredDescription
titlestringДаНазвание устройства, от 1 до 64 символов

Пример запроса

curl -X POST "https://api.stealthsurf.net/configs/123/devices" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "MacBook"
  }'

Ответ

{
  status: true,
  statusCode: 200,
  data: {
    id: number | null
    title: string
    is_primary: boolean
    protocol: "wg" | "amnezia-wg-2"
    connection_url: string
    created_at: number
  }
}

Ошибки

errorCodemessageКогда
1not foundКонфигурация не найдена
3bad requestКонфигурация недоступна для управления устройствами
48expiredСрок действия конфигурации истёк
52server not availableСервер конфигурации недоступен
60port not availableНе удалось выделить порт для нового устройства
72awg params invalidПараметры AWG не прошли проверку
93wireguard devices are not supported for this configПротокол конфигурации не поддерживает устройства WireGuard
94wireguard device limit reachedДостигнут лимит устройств WireGuard

PATCH /configs/:configId/devices/:deviceId

Переименовать устройство пользовательской конфигурации.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
configIdnumberДаID конфигурации
deviceIdnumberДаID устройства

Request Body

FieldTypeRequiredDescription
titlestringДаНовое название устройства, от 1 до 64 символов

Пример запроса

curl -X PATCH "https://api.stealthsurf.net/configs/123/devices/42" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Рабочий MacBook"
  }'

Ответ

{
  status: true,
  statusCode: 200,
  data: {
    id: number | null
    title: string
    is_primary: boolean
    protocol: "wg" | "amnezia-wg-2"
    connection_url: string
    created_at: number
  }
}

Ошибки

Возможны ошибки not found (1), bad request (3), expired (48), server not available (52) и wireguard devices are not supported for this config (93).


DELETE /configs/:configId/devices/:deviceId

Отозвать устройство пользовательской конфигурации.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
configIdnumberДаID конфигурации
deviceIdnumberДаID устройства

Пример запроса

curl -X DELETE "https://api.stealthsurf.net/configs/123/devices/42" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 200,
  data: {
    success: true
  }
}

Ошибки

Возможны ошибки not found (1), bad request (3), expired (48), server not available (52) и wireguard devices are not supported for this config (93).


Субконфиги

Субконфиги — это дополнительные HTTP/SOCKS5-прокси для существующего конфига.


GET /configs/:config_id/subconfig/protocols

Получить доступные протоколы прокси для сервера этого конфига.

Rate Limit: глобальный (60 req/min)

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Пример запроса

curl -X GET "https://api.stealthsurf.net/configs/123/subconfig/protocols" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 200,
  data: {
    protocols: string[]   // Доступные протоколы (http, socks5)
  }
}

Возвращается пересечение списка протоколов сервера с http и socks5; массив может быть пустым.

Возможна ошибка NOT_FOUND, если конфигурация не найдена.


GET /configs/:config_id/subconfig

Получить субконфиг.

Rate Limit: глобальный (60 req/min)

Результат кэшируется на 300 секунд.

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Пример запроса

curl -X GET "https://api.stealthsurf.net/configs/123/subconfig" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 200,
  data: {
    id: number
    protocol: string            // http | socks5
    connection_url: string      // http://user:pass@server:8080
  } | null                      // null, если субконфиг не создан
}

POST /configs/:config_id/subconfig

Создать субконфиг. На один конфиг допускается только один субконфиг.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Request Body

FieldTypeRequiredDescription
protocolstringДаПротокол: http или socks5

Пример запроса

curl -X POST "https://api.stealthsurf.net/configs/123/subconfig" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "protocol": "http"
  }'

Ответ

{
  status: true,
  statusCode: 201,
  data: {
    id: number
    protocol: string
    connection_url: string
  }
}

PATCH /configs/:config_id/subconfig

Изменить протокол субконфига. Идентификатор субконфига при этом не меняется.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Request Body

FieldTypeRequiredDescription
protocolstringДаНовый протокол: http или socks5

Пример запроса

curl -X PATCH "https://api.stealthsurf.net/configs/123/subconfig" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "protocol": "socks5"
  }'

Ответ

{
  status: true,
  statusCode: 200,
  data: {
    id: number
    protocol: string
    connection_url: string
  }
}

DELETE /configs/:config_id/subconfig

Удалить субконфиг.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
config_idnumberДаID конфигурации

Пример запроса

curl -X DELETE "https://api.stealthsurf.net/configs/123/subconfig" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 200,
  data: true
}

Помогла ли вам эта статья?

Содержание

ОбзорGET /configsQuery ParametersПример запросаОтветGET /configs/tariffsПример запросаОтветGET /configs/available-serversQuery ParametersПример запросаОтветGET /configs/:config_id/serverStatsURL ParametersПример запросаОтветPOST /configsRequest BodyПример запросаОтвет (конфиг создан сразу)Ответ (требуется оплата)Ответ (как ключ активации)POST /configs/renewal/:config_idURL ParametersRequest BodyПример запросаОтвет (успех)Ответ (требуется оплата)PATCH /configs/:config_id/settingsURL ParametersRequest BodyПример запросаОтветPOST /configs/makeBridgeRequest BodyПример запросаОтветPATCH /configs/:config_id/XrayConfigURL ParametersRequest BodyПример запросаОтветPOST /configs/:config_id/resetXrayConfigURL ParametersПример запросаОтветPATCH /configs/:config_id/awgConfigURL ParametersRequest BodyПример запросаОтветPOST /configs/:config_id/awgConfig/generateURL ParametersПример запросаОтветPOST /configs/:config_id/awgConfig/regenerateURL ParametersПример запросаОтветPATCH /configs/title/:config_idURL ParametersRequest BodyПример запросаОтветPATCH /configs/:config_id/auto-renewalURL ParametersRequest BodyПример запросаОтветУстройства WireGuardGET /configs/:configId/devicesURL ParametersПример запросаОтветОшибкиPOST /configs/:configId/devicesURL ParametersRequest BodyПример запросаОтветОшибкиPATCH /configs/:configId/devices/:deviceIdURL ParametersRequest BodyПример запросаОтветОшибкиDELETE /configs/:configId/devices/:deviceIdURL ParametersПример запросаОтветОшибкиСубконфигиGET /configs/:config_id/subconfig/protocolsURL ParametersПример запросаОтветGET /configs/:config_id/subconfigURL ParametersПример запросаОтветPOST /configs/:config_id/subconfigURL ParametersRequest BodyПример запросаОтветPATCH /configs/:config_id/subconfigURL ParametersRequest BodyПример запросаОтветDELETE /configs/:config_id/subconfigURL ParametersПример запросаОтвет