Конфигурации
Методы для управления VPN конфигурациями: получение, создание, продление, изменение локации.
Обзор
Модуль для работы с VPN конфигурациями пользователя. Позволяет получать список конфигов, создавать новые, продлевать и менять настройки.
GET /configs
Получить список всех VPN конфигураций пользователя.
Rate Limit: глобальный (60 req/min)
Результат кэшируется на 300 секунд. При попадании в кэш параметры limit и offset игнорируются.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | number | Нет | Количество записей на страницу (1-1000, по умолчанию 100) |
offset | number | Нет | Смещение для пагинации (минимум 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
| Parameter | Type | Required | Description |
|---|---|---|---|
location_id | number | Да | ID локации |
protocol | string | Да | Протокол: 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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | 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
| Field | Type | Required | Description |
|---|---|---|---|
location_id | number | Да* | ID локации (*не нужно если as_key=true) |
protocol | string | Да* | vless, trojan, trojan-2901, hysteria2, vless-2410, shadowsocks-2022, wg, amnezia-wg-2 (*не нужно если as_key=true) |
server_id | number | Нет | Предпочтительный сервер (выбирается автоматически, если не указан; взаимоисключающий с server_ids) |
server_ids | number[] | Нет | Список предпочтительных серверов по возрастанию задержки, сначала самые быстрые (1-50, взаимоисключающий с server_id) |
payment_method_id | number | Нет | ID способа оплаты (обязателен вместе с tariff_id, если не передан promocode) |
tariff_id | number | Нет | ID тарифа |
promocode | string | Нет | Промокод (4-32 символа). Взаимоисключим с payment_method_id/tariff_id; недопустим вместе с as_key |
use_extended_settings | boolean | Нет | Включить расширенные настройки. Доступно только для vless, trojan, vless-2410, shadowsocks-2022, amnezia-wg-2 |
use_warp | boolean | Нет | Использовать Cloudflare WARP. Требует use_extended_settings |
disable_flow_reality | boolean | Нет | Отключить Flow Reality. Несовместимо с use_xhttp и use_grpc |
disable_reality | boolean | Нет | Отключить Reality. Требует use_extended_settings |
change_sni | boolean | Нет | Изменить SNI. Требует use_extended_settings. Недоступно для vless-2410; нельзя вместе с disable_reality для trojan/trojan-2901 |
disable_sni | boolean | Нет | Установить QQ-fingerprint. Недоступно для vless-2410 |
enable_family_filter | boolean | Нет | Семейный фильтр. Требует use_extended_settings |
dns_preset | string | Нет | Пресет DNS на стороне сервера: cloudflare, google, quad9, adguard, adguard_family, yandex, comss, mullvad, custom. Требует use_extended_settings |
custom_dns_url | string | Нет | Собственный DoH URL (только схема https). Обязателен, когда dns_preset равен custom |
pass_all_traffic_through_vpn | boolean | Нет | Весь трафик через VPN. Требует use_extended_settings; для vless, trojan, vless-2410, shadowsocks-2022 допустимо только в smart-локациях |
block_bittorrent | boolean | Нет | Блокировать BitTorrent. Требует use_extended_settings |
use_xhttp | boolean | Нет | Использовать XHTTP вместо TCP (не сочетается с use_grpc) |
use_grpc | boolean | Нет | Использовать gRPC вместо TCP (не сочетается с use_xhttp) |
randomize_fingerprint | boolean | Нет | Рандомизированный uTLS-отпечаток вместо chrome |
grpc_multi_mode | boolean | Нет | Включить gRPC multi mode (TunMulti); требует use_grpc = true |
use_loopbacks | boolean | Нет | Перелив трафика в следующую группу балансировщика при полном отказе группы |
as_key | boolean | Нет | Купить как ключ активации |
enable_auto_renewal | boolean | Нет | Включить автопродление |
Пример запроса
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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
promocode | string | Нет | Промокод (4-32 символа). Взаимоисключим с payment_method_id/tariff_id |
payment_method_id | number | Нет | ID способа оплаты |
tariff_id | number | Нет | ID тарифа |
enable_auto_renewal | boolean | Нет | Включить автопродление. Применяется только при оплате с баланса счёта |
Пример запроса
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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
location_id | number | Да | ID новой локации |
protocol | string | Да | Протокол: vless, trojan, trojan-2901, hysteria2, vless-2410, shadowsocks-2022, wg, amnezia-wg-2 |
server_id | number | Нет | Предпочтительный сервер (взаимоисключающий с server_ids) |
server_ids | number[] | Нет | Список предпочтительных серверов по возрастанию задержки, сначала самые быстрые (1-50, взаимоисключающий с server_id) |
use_extended_settings | boolean | Нет | Расширенные настройки. Доступно только для vless, trojan, vless-2410, shadowsocks-2022, amnezia-wg-2 |
use_warp | boolean | Нет | WARP. Требует use_extended_settings |
disable_reality | boolean | Нет | Отключить Reality. Требует use_extended_settings |
change_sni | boolean | Нет | Изменить SNI. Требует use_extended_settings. Недоступно для vless-2410; нельзя вместе с disable_reality для trojan/trojan-2901 |
enable_family_filter | boolean | Нет | Семейный фильтр. Требует use_extended_settings |
dns_preset | string | Нет | Пресет DNS на стороне сервера: cloudflare, google, quad9, adguard, adguard_family, yandex, comss, mullvad, custom. Требует use_extended_settings |
custom_dns_url | string | Нет | Собственный DoH URL (только схема https). Обязателен, когда dns_preset равен custom |
disable_flow_reality | boolean | Нет | Отключить Flow Reality. Несовместимо с use_xhttp и use_grpc |
disable_sni | boolean | Нет | Установить QQ-fingerprint. Недоступно для vless-2410 |
block_bittorrent | boolean | Нет | Блокировать BitTorrent. Требует use_extended_settings |
pass_all_traffic_through_vpn | boolean | Нет | Весь трафик через VPN. Требует use_extended_settings; для vless, trojan, vless-2410, shadowsocks-2022 допустимо только в smart-локациях |
use_xhttp | boolean | Нет | XHTTP (не сочетается с use_grpc) |
use_grpc | boolean | Нет | gRPC (не сочетается с use_xhttp) |
randomize_fingerprint | boolean | Нет | Рандомизированный uTLS-отпечаток вместо chrome |
grpc_multi_mode | boolean | Нет | Включить gRPC multi mode (TunMulti); требует use_grpc = true |
use_loopbacks | boolean | Нет | Перелив трафика в следующую группу балансировщика при полном отказе группы |
Пример запроса
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
| Field | Type | Required | Description |
|---|---|---|---|
first_config_id | number | Да | ID входной конфигурации |
second_config_id | number | Да | ID выходной конфигурации |
first_type | string | Нет | "config", "paid_option" или "cloud" (по умолчанию "config") |
second_type | string | Нет | "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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
xray_config | string | Да | Новый Xray конфиг в виде JSON-строки. Должен содержать inbounds[0].port типа number |
public_key | string | null | Нет | Публичный ключ Reality, используемый при сборке connection URL |
use_loopbacks | boolean | Нет | Перелив трафика в следующую группу балансировщика при полном отказе группы (по умолчанию наследуется из текущих настроек) |
Пример запроса
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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description | Range |
|---|---|---|---|---|
port | number | Нет | UDP порт сервера (0 — автоматический выбор) | 1024-65535 |
client_listen_port | number | Нет | Порт прослушивания на клиенте (0 — автоматический выбор) | 1024-65535 |
mtu | number | Нет | MTU клиентского интерфейса (0 — наследовать значение сервера) | 1280-1420 |
dns | string | Нет | Устаревшее переопределение одним IPv4-адресом DNS. Нельзя комбинировать с dns_mode и dns_servers | |
dns_mode | string | Нет | Режим клиентского DNS: default, custom, system | |
dns_servers | string[] | Нет | Список IPv4-адресов DNS для режима custom. Должен быть пустым для default и system | |
persistent_keepalive | number | Нет | Интервал keepalive (по умолчанию наследуется 25, явный 0 отключает keepalive) | 0-65535 |
jc | number | Нет | Junk packet count | 0-128 |
jmin | number | Нет | Junk min size | 0-1280 |
jmax | number | Нет | Junk max size | 0-1280 |
s1 | number | Нет | Init packet junk size | 0-1132 |
s2 | number | Нет | Response packet junk size | 0-1188 |
s3 | number | Нет | Init packet magic header | 0-64 |
s4 | number | Нет | Response packet magic header | 0-32 |
h1 | string | Нет | Значение обфускации заголовка h1 (формат uint32 или min-max) | |
h2 | string | Нет | Значение обфускации заголовка h2 (формат uint32 или min-max) | |
h3 | string | Нет | Значение обфускации заголовка h3 (формат uint32 или min-max) | |
h4 | string | Нет | Значение обфускации заголовка h4 (формат uint32 или min-max) | |
i1 | string | Нет | Сигнатурный CPS-пакет i1 | |
i2 | string | Нет | Сигнатурный CPS-пакет i2 | |
i3 | string | Нет | Сигнатурный CPS-пакет i3 | |
i4 | string | Нет | Сигнатурный CPS-пакет i4 | |
i5 | string | Нет | Сигнатурный CPS-пакет i5 | |
awg_params | object | null | Нет | Полная замена набора AWG-переопределений (те же поля, что выше). null сбрасывает все переопределения. Нельзя комбинировать с плоскими AWG-полями | |
routing | object | null | Нет | Полная замена политики маршрутизации. null или режим full возвращают полный туннель | |
routing.mode | string | Да (внутри routing) | Режим маршрутизации: full, bypass, split | |
routing.allowed_ips | string[] | Нет | IPv4-подсети в формате CIDR, направляемые в туннель. Обязательны для split, запрещены для bypass и full | до 4096 элементов |
routing.excluded_ips | string[] | Нет | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | Да | Включить/выключить автопродление |
days | number | Нет | Количество дней для автопродления (минимум 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
| Parameter | Type | Required | Description |
|---|---|---|---|
configId | number | Да | 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
}>
}Ошибки
| errorCode | message | Когда |
|---|---|---|
| 1 | not found | Конфигурация не найдена |
| 3 | bad request | Конфигурация недоступна для управления устройствами |
| 48 | expired | Срок действия конфигурации истёк |
| 52 | server not available | Сервер конфигурации недоступен |
| 93 | wireguard devices are not supported for this config | Протокол конфигурации не поддерживает устройства WireGuard |
POST /configs/:configId/devices
Создать устройство пользовательской конфигурации.
Rate Limit: 1 req / 1 sec
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
configId | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Да | Название устройства, от 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
}
}Ошибки
| errorCode | message | Когда |
|---|---|---|
| 1 | not found | Конфигурация не найдена |
| 3 | bad request | Конфигурация недоступна для управления устройствами |
| 48 | expired | Срок действия конфигурации истёк |
| 52 | server not available | Сервер конфигурации недоступен |
| 60 | port not available | Не удалось выделить порт для нового устройства |
| 72 | awg params invalid | Параметры AWG не прошли проверку |
| 93 | wireguard devices are not supported for this config | Протокол конфигурации не поддерживает устройства WireGuard |
| 94 | wireguard device limit reached | Достигнут лимит устройств WireGuard |
PATCH /configs/:configId/devices/:deviceId
Переименовать устройство пользовательской конфигурации.
Rate Limit: 1 req / 1 sec
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
configId | number | Да | ID конфигурации |
deviceId | number | Да | ID устройства |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Да | Новое название устройства, от 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
| Parameter | Type | Required | Description |
|---|---|---|---|
configId | number | Да | ID конфигурации |
deviceId | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
protocol | string | Да | Протокол: 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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
protocol | string | Да | Новый протокол: 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
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | number | Да | ID конфигурации |
Пример запроса
curl -X DELETE "https://api.stealthsurf.net/configs/123/subconfig" \
-H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"Ответ
{
status: true,
statusCode: 200,
data: true
}Помогла ли вам эта статья?