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

Облачные серверы

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

Обзор

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


GET /cloud-servers

Получить список облачных серверов пользователя.

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

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

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

Ответ

{
  status: true,
  statusCode: 200,
  data: Array<{
    id: number              // ID сервера
    location_id: number     // ID локации
    tariff_config_id: number
    status: string          // ordered | purchased | active | draining
    expires_at: number      // Unix timestamp
    url: string | null      // IP/домен сервера
    is_online: boolean
    auto_renewal: boolean
    auto_renewal_days: number | null
    hostname: string | null         // Пользовательский hostname
  }>
}

GET /cloud-servers/locations

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

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

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

curl -X GET "https://api.stealthsurf.net/cloud-servers/locations" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 200,
  data: Array<{
    id: number
    code: string                          // DE, NL, US, etc.
    title: string
    description: string | null
    caption: string | null
    is_active: boolean
    server_type: string                   // standard, premium, etc.
    available_tariff_config_ids: number[] // Доступные ID тарифных конфигов
    ping_ip: string | null
    tags: string[]                        // Метки локации, например ["virtual", "geo"]
  }>
}

Если кэш локаций пуст или повреждён, возвращается пустой массив.


GET /cloud-servers/tariffs

Получить тарифы для облачных серверов. Если действует глобальная скидка, у тарифов появляется поле old_price с ценой до скидки.

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

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

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

Ответ

{
  status: true,
  statusCode: 200,
  data: Array<{
    id: number                      // ID тарифной конфигурации
    title: string
    description: string | null
    payment_methods: Array<{
      id: number                    // ID платежного метода
      display_name: string
      currency: string
      min_amount: number | null
      tariffs: Array<{
        id: number                  // ID тарифа
        days: number
        price: number
        old_price?: number          // Старая цена (для отображения скидки)
      }>
    }>
  }>
}

Если кэш тарифов пуст или повреждён, возвращается пустой массив.


GET /cloud-servers/:id/serverStats

Получить статистику облачного сервера. Данные берутся из кэша системных метрик.

Rate Limit: 3 req / 5 sec

URL Parameters

ParameterTypeRequiredDescription
idnumberДаID облачного сервера

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

curl -X GET "https://api.stealthsurf.net/cloud-servers/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
    }>
  }
}

Поле data равно null, если у сервера ещё нет адреса или метрики отсутствуют в кэше.


GET /cloud-servers/:server_id/configs

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

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

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера

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

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

Ответ

{
  status: true,
  statusCode: 200,
  data: Array<{
    id: number
    title: string | null
    protocol: string
    connection_url: string
    is_extended_settings_enabled: boolean
    xray_config?: string
    awg_config?: string
    ipv6?: string | null
    created_at: number
  }>
}

Для протокола amnezia-wg-2 вместо xray_config заполняется awg_config.


POST /cloud-servers

Создать заказ на облачный сервер.

Rate Limit: 1 req / 5 sec

Request Body

FieldTypeRequiredDescription
location_idnumberДаID локации
tariff_config_idnumberНетID конфигурации тарифа. При оплате промокодом вычисляется из его product_type вида cloud_servers_{id}
payment_method_idnumberНетID способа оплаты (min 1)
tariff_idnumberНетID тарифа (min 1)
promocodestringНетПромокод (4-32 символа)
enable_auto_renewalbooleanНетВключить автопродление
hostnamestringНетДоменное имя сервера (макс. 255 символов)

Требуется ровно одно из: promocode или (payment_method_id + tariff_id). Указание обоих вариантов сразу или ни одного даёт ошибку bad request.

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

curl -X POST "https://api.stealthsurf.net/cloud-servers" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "location_id": 1,
    "tariff_config_id": 1,
    "payment_method_id": 1,
    "tariff_id": 1
  }'

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

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

Ответ (создано через баланс/промокод)

{
  status: true,
  statusCode: 201,
  data: {
    id: number
    location_id: number
    tariff_config_id: number
    status: string              // ordered
    expires_at: number
    url: string | null
    is_online: boolean
    auto_renewal: boolean
    auto_renewal_days: number | null
    hostname: string | null
  }
}

POST /cloud-servers/renewal

Продлить облачный сервер.

Rate Limit: 1 req / 5 sec

Request Body

FieldTypeRequiredDescription
server_idnumberДаID сервера (min 1)
payment_method_idnumberНетID способа оплаты (min 1)
daysnumberНетКоличество дней продления (min 1)
promocodestringНетПромокод (4-32 символа)
enable_auto_renewalbooleanНетВключить автопродление

Требуется ровно одно из: promocode или (payment_method_id + days).

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

curl -X POST "https://api.stealthsurf.net/cloud-servers/renewal" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "server_id": 123,
    "payment_method_id": 1,
    "days": 30
  }'

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

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

Ответ (продлено)

{
  status: true,
  statusCode: 201,
  data: {
    renewed: boolean
    expires_at: number
  }
}

POST /cloud-servers/:id/reboot

Перезагрузить облачный сервер.

Rate Limit: 1 req / 30 sec

URL Parameters

ParameterTypeRequiredDescription
idnumberДаID облачного сервера

Условия

  • Сервер должен иметь статус active
  • После вызова сервер перезагрузится через ~3 секунды
  • Сервер будет недоступен ~1-2 минуты

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

curl -X POST "https://api.stealthsurf.net/cloud-servers/123/reboot" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 201,
  data: {
    success: boolean  // true если перезагрузка инициирована
  }
}

Ошибки

errorCodemessageКогда
1not foundСервер не найден или не принадлежит пользователю
3bad requestСтатус сервера не active; не заполнен internal_ip; не удалось дренировать отложенную очистку рантайма перед перезагрузкой

POST /cloud-servers/:server_id/configs

Создать конфигурацию на облачном сервере.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера

Request Body

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

Дополнительные ограничения на уровне сервиса (нарушение даёт ошибку bad request):

  • Протокол должен поддерживаться сервером.
  • Для vless-2410 и trojan-2901 запрещены change_sni и disable_sni.
  • Для trojan и trojan-2901 запрещено сочетание disable_reality + change_sni.
  • Для shadowsocks-2022 с use_extended_settings запрещены disable_reality, change_sni, disable_sni, disable_flow_reality, use_xhttp, use_grpc.
  • Для amnezia-wg-2 с use_extended_settings дополнительно запрещены use_warp, enable_family_filter, dns_preset, block_bittorrent, pass_all_traffic_through_vpn.
  • Запрещены сочетания use_xhttp + disable_flow_reality и use_grpc + (use_xhttp или disable_flow_reality).

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

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

Ответ

{
  status: true,
  statusCode: 201,
  data: {
    id: number
    title: string | null
    protocol: string
    connection_url: string
    is_extended_settings_enabled: boolean
    xray_config?: string
    awg_config?: string
    ipv6?: string | null
    created_at: number
  }
}

PATCH /cloud-servers/:server_id/configs/:config_id/protocol

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

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера
config_idnumberДаID конфигурации

Request Body

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

Ограничения на сочетания флагов совпадают с POST /cloud-servers/:server_id/configs.

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

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

Ответ

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

Для протокола amnezia-wg-2 вместо xray_config возвращается awg_config.


PATCH /cloud-servers/:server_id/configs/:config_id/xray

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

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера
config_idnumberДаID конфигурации

Request Body

FieldTypeRequiredDescription
xray_configstringДаJSON-строка конфигурации Xray. Порт берётся из inbounds[0].port и должен попадать в диапазон 1024-65535
public_keystring | nullНетПубличный ключ
use_loopbacksbooleanНетПереливать трафик в следующую группу балансировщика при полном отказе группы

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

curl -X PATCH "https://api.stealthsurf.net/cloud-servers/123/configs/456/xray" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "xray_config": "{...}",
    "public_key": "your_public_key_here"
  }'

Ответ

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

PATCH /cloud-servers/:server_id/configs/:config_id/awg

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

Rate Limit: 1 req / 1 sec

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

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера
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/cloud-servers/123/configs/456/awg" \
  -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    // Новый URL подключения
    xray_config?: string
    awg_config?: string       // Обновлённый AWG конфиг
  }
}

Ошибки

errorCodemessageКогда
1not foundСервер, конфигурация или её сохранённые AWG-настройки не найдены
3bad requestСтатус сервера не active; расширенные настройки выключены или протокол не amnezia-wg-2; сохранённые AWG-настройки не парсятся; изменения не применились; параллельно выполняется другое обновление настроек
60port not availableНовый порт вне диапазона 1024-65535, блокировка порта не захвачена или порт занят на сервере
72awg params invalidСмешаны канонический и плоский форматы, одновременно переданы dns и dns_mode/dns_servers, либо тело не содержит ни одного применимого поля

POST /cloud-servers/:server_id/configs/:config_id/awg/generate

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

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера
config_idnumberДаID конфигурации

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

curl -X POST "https://api.stealthsurf.net/cloud-servers/123/configs/456/awg/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-пакета
  }
}

Ошибки

errorCodemessageКогда
1not foundСервер, конфигурация или её сохранённые AWG-настройки не найдены
3bad requestСтатус сервера не active; расширенные настройки выключены или протокол не amnezia-wg-2; сохранённые AWG-настройки не парсятся

POST /cloud-servers/:server_id/configs/:config_id/awg/regenerate

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

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера
config_idnumberДаID конфигурации

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

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

Ответ

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

Ошибки

errorCodemessageКогда
1not foundСервер, конфигурация или её сохранённые AWG-настройки не найдены
3bad requestСтатус сервера не active; расширенные настройки выключены или протокол не amnezia-wg-2; сохранённые AWG-настройки не парсятся; изменения не применились; параллельно выполняется другое обновление настроек

PATCH /cloud-servers/:server_id/configs/:config_id/title

Изменить название конфигурации на облачном сервере.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера
config_idnumberДаID конфигурации

Request Body

FieldTypeRequiredDescription
titlestring | nullДаНовое название (1-64 символа, не только пробелы) или null для сброса

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

curl -X PATCH "https://api.stealthsurf.net/cloud-servers/123/configs/456/title" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Новое название"
  }'

Ответ

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

DELETE /cloud-servers/:server_id/configs/:config_id

Удалить конфигурацию на облачном сервере.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера
config_idnumberДаID конфигурации

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

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

Ответ

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

POST /cloud-servers/:server_id/configs/:config_id/resetXrayConfig

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

Rate Limit: 1 req / 4 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера
config_idnumberДаID конфигурации

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

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

Ответ

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

PATCH /cloud-servers/:id/auto-renewal

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

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
idnumberДаID облачного сервера

Request Body

FieldTypeRequiredDescription
enabledbooleanДаВключить/выключить автопродление
daysnumberНетДней для автопродления, min 1 (обязательно при enabled: true)

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

curl -X PATCH "https://api.stealthsurf.net/cloud-servers/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 /cloud-servers/:serverId/configs/:configId/devices

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

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

URL Parameters

ParameterTypeRequiredDescription
serverIdnumberДаID облачного сервера
configIdnumberДаID конфигурации

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

curl -X GET "https://api.stealthsurf.net/cloud-servers/123/configs/456/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
  }>
}

Ошибки

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


POST /cloud-servers/:serverId/configs/:configId/devices

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

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
serverIdnumberДаID облачного сервера
configIdnumberДаID конфигурации

Request Body

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

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

curl -X POST "https://api.stealthsurf.net/cloud-servers/123/configs/456/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 /cloud-servers/:serverId/configs/:configId/devices/:deviceId

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

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
serverIdnumberДаID облачного сервера
configIdnumberДаID конфигурации
deviceIdnumberДаID устройства

Request Body

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

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

curl -X PATCH "https://api.stealthsurf.net/cloud-servers/123/configs/456/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 /cloud-servers/:serverId/configs/:configId/devices/:deviceId

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

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
serverIdnumberДаID облачного сервера
configIdnumberДаID конфигурации
deviceIdnumberДаID устройства

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

curl -X DELETE "https://api.stealthsurf.net/cloud-servers/123/configs/456/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).


Прокси облачных серверов


GET /cloud-servers/:server_id/proxies

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

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

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера

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

curl -X GET "https://api.stealthsurf.net/cloud-servers/123/proxies" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

{
  status: true,
  statusCode: 200,
  data: Array<{
    id: number
    title: string | null
    protocol: string            // http | socks5
    connection_url: string      // user:pass@server:port
    created_at: number
  }>
}

POST /cloud-servers/:server_id/proxies

Создать прокси на облачном сервере.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера

Request Body

FieldTypeRequiredDescription
protocolstringДаhttp или socks5

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

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

Ответ

{
  status: true,
  statusCode: 201,
  data: {
    id: number
    title: string | null
    protocol: string
    connection_url: string
    created_at: number
  }
}

PATCH /cloud-servers/:server_id/proxies/:proxy_id/protocol

Изменить протокол прокси.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера
proxy_idnumberДаID прокси

Request Body

FieldTypeRequiredDescription
protocolstringДаhttp или socks5

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

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

Ответ

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

PATCH /cloud-servers/:server_id/proxies/:proxy_id/title

Изменить название прокси.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера
proxy_idnumberДаID прокси

Request Body

FieldTypeRequiredDescription
titlestring | nullДаНовое название (1-100 символов, не только пробелы) или null для сброса

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

curl -X PATCH "https://api.stealthsurf.net/cloud-servers/123/proxies/456/title" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "HTTP Proxy"
  }'

Ответ

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

DELETE /cloud-servers/:server_id/proxies/:proxy_id

Удалить прокси.

Rate Limit: 1 req / 1 sec

URL Parameters

ParameterTypeRequiredDescription
server_idnumberДаID облачного сервера
proxy_idnumberДаID прокси

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

curl -X DELETE "https://api.stealthsurf.net/cloud-servers/123/proxies/456" \
  -H "Authorization: Bearer stlth_XXXXXXXX_YYYYYYYYYYYYYYYYYYYYYYYY"

Ответ

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

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

Содержание

ОбзорGET /cloud-serversПример запросаОтветGET /cloud-servers/locationsПример запросаОтветGET /cloud-servers/tariffsПример запросаОтветGET /cloud-servers/:id/serverStatsURL ParametersПример запросаОтветGET /cloud-servers/:server_id/configsURL ParametersПример запросаОтветPOST /cloud-serversRequest BodyПример запросаОтвет (требуется оплата)Ответ (создано через баланс/промокод)POST /cloud-servers/renewalRequest BodyПример запросаОтвет (требуется оплата)Ответ (продлено)POST /cloud-servers/:id/rebootURL ParametersУсловияПример запросаОтветОшибкиPOST /cloud-servers/:server_id/configsURL ParametersRequest BodyПример запросаОтветPATCH /cloud-servers/:server_id/configs/:config_id/protocolURL ParametersRequest BodyПример запросаОтветPATCH /cloud-servers/:server_id/configs/:config_id/xrayURL ParametersRequest BodyПример запросаОтветPATCH /cloud-servers/:server_id/configs/:config_id/awgURL ParametersRequest BodyПример запросаОтветОшибкиPOST /cloud-servers/:server_id/configs/:config_id/awg/generateURL ParametersПример запросаОтветОшибкиPOST /cloud-servers/:server_id/configs/:config_id/awg/regenerateURL ParametersПример запросаОтветОшибкиPATCH /cloud-servers/:server_id/configs/:config_id/titleURL ParametersRequest BodyПример запросаОтветDELETE /cloud-servers/:server_id/configs/:config_idURL ParametersПример запросаОтветPOST /cloud-servers/:server_id/configs/:config_id/resetXrayConfigURL ParametersПример запросаОтветPATCH /cloud-servers/:id/auto-renewalURL ParametersRequest BodyПример запросаОтветУстройства WireGuardGET /cloud-servers/:serverId/configs/:configId/devicesURL ParametersПример запросаОтветОшибкиPOST /cloud-servers/:serverId/configs/:configId/devicesURL ParametersRequest BodyПример запросаОтветОшибкиPATCH /cloud-servers/:serverId/configs/:configId/devices/:deviceIdURL ParametersRequest BodyПример запросаОтветОшибкиDELETE /cloud-servers/:serverId/configs/:configId/devices/:deviceIdURL ParametersПример запросаОтветОшибкиПрокси облачных серверовGET /cloud-servers/:server_id/proxiesURL ParametersПример запросаОтветPOST /cloud-servers/:server_id/proxiesURL ParametersRequest BodyПример запросаОтветPATCH /cloud-servers/:server_id/proxies/:proxy_id/protocolURL ParametersRequest BodyПример запросаОтветPATCH /cloud-servers/:server_id/proxies/:proxy_id/titleURL ParametersRequest BodyПример запросаОтветDELETE /cloud-servers/:server_id/proxies/:proxy_idURL ParametersПример запросаОтвет