Облачные серверы
Методы для управления облачными серверами: получение, создание, продление, управление конфигурациями.
Обзор
Модуль для работы с облачными серверами пользователя. Позволяет заказывать серверы, продлевать их и управлять конфигурациями на них.
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
| Parameter | Type | Required | Description |
|---|---|---|---|
id | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | 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
| Field | Type | Required | Description |
|---|---|---|---|
location_id | number | Да | ID локации |
tariff_config_id | number | Нет | ID конфигурации тарифа. При оплате промокодом вычисляется из его product_type вида cloud_servers_{id} |
payment_method_id | number | Нет | ID способа оплаты (min 1) |
tariff_id | number | Нет | ID тарифа (min 1) |
promocode | string | Нет | Промокод (4-32 символа) |
enable_auto_renewal | boolean | Нет | Включить автопродление |
hostname | string | Нет | Доменное имя сервера (макс. 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
| Field | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID сервера (min 1) |
payment_method_id | number | Нет | ID способа оплаты (min 1) |
days | number | Нет | Количество дней продления (min 1) |
promocode | string | Нет | Промокод (4-32 символа) |
enable_auto_renewal | boolean | Нет | Включить автопродление |
Требуется ровно одно из: 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
| Parameter | Type | Required | Description |
|---|---|---|---|
id | number | Да | 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 если перезагрузка инициирована
}
}Ошибки
| errorCode | message | Когда |
|---|---|---|
| 1 | not found | Сервер не найден или не принадлежит пользователю |
| 3 | bad request | Статус сервера не active; не заполнен internal_ip; не удалось дренировать отложенную очистку рантайма перед перезагрузкой |
POST /cloud-servers/:server_id/configs
Создать конфигурацию на облачном сервере.
Rate Limit: 1 req / 1 sec
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
protocol | string | Да | Протокол: vless, trojan, trojan-2901, hysteria2, vless-2410, shadowsocks-2022, wg, amnezia-wg-2 |
title | string | Нет | Название (1-64 символа) |
use_extended_settings | boolean | Нет | Расширенные настройки |
use_warp | boolean | Нет | WARP |
disable_flow_reality | boolean | Нет | Отключить Flow Reality |
disable_reality | boolean | Нет | Отключить Reality |
change_sni | boolean | Нет | Изменить SNI |
disable_sni | boolean | Нет | Отключить SNI |
enable_family_filter | boolean | Нет | Семейный фильтр |
pass_all_traffic_through_vpn | boolean | Нет | Весь трафик через VPN |
block_bittorrent | boolean | Нет | Блокировать BitTorrent |
use_xhttp | boolean | Нет | XHTTP вместо TCP; нельзя включать одновременно с use_grpc |
use_grpc | boolean | Нет | gRPC вместо TCP; нельзя включать одновременно с use_xhttp |
grpc_multi_mode | boolean | Нет | Включить gRPC multi mode (TunMulti); требует use_grpc: true |
randomize_fingerprint | boolean | Нет | Рандомизированный uTLS-отпечаток вместо chrome |
use_loopbacks | boolean | Нет | Переливать трафик в следующую группу балансировщика при полном отказе группы |
dns_preset | string | Нет | Пресет DNS: cloudflare, google, quad9, adguard, adguard_family, yandex, comss, mullvad, custom |
custom_dns_url | string | Нет | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
config_id | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
protocol | string | Да | Протокол: vless, trojan, trojan-2901, hysteria2, vless-2410, shadowsocks-2022, wg, amnezia-wg-2 |
use_extended_settings | boolean | Нет | Расширенные настройки |
use_warp | boolean | Нет | WARP |
disable_flow_reality | boolean | Нет | Отключить Flow Reality |
disable_reality | boolean | Нет | Отключить Reality |
change_sni | boolean | Нет | Изменить SNI |
disable_sni | boolean | Нет | Отключить SNI |
enable_family_filter | boolean | Нет | Семейный фильтр |
pass_all_traffic_through_vpn | boolean | Нет | Весь трафик через VPN |
block_bittorrent | boolean | Нет | Блокировать BitTorrent |
use_xhttp | boolean | Нет | XHTTP вместо TCP; нельзя включать одновременно с use_grpc |
use_grpc | boolean | Нет | gRPC вместо TCP; нельзя включать одновременно с use_xhttp |
grpc_multi_mode | boolean | Нет | Включить gRPC multi mode (TunMulti); требует use_grpc: true |
randomize_fingerprint | boolean | Нет | Рандомизированный uTLS-отпечаток вместо chrome |
use_loopbacks | boolean | Нет | Переливать трафик в следующую группу балансировщика при полном отказе группы |
dns_preset | string | Нет | Пресет DNS: cloudflare, google, quad9, adguard, adguard_family, yandex, comss, mullvad, custom |
custom_dns_url | string | Нет | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
config_id | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
xray_config | string | Да | JSON-строка конфигурации Xray. Порт берётся из inbounds[0].port и должен попадать в диапазон 1024-65535 |
public_key | string | null | Нет | Публичный ключ |
use_loopbacks | boolean | Нет | Переливать трафик в следующую группу балансировщика при полном отказе группы |
Пример запроса
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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
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/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 конфиг
}
}Ошибки
| errorCode | message | Когда |
|---|---|---|
| 1 | not found | Сервер, конфигурация или её сохранённые AWG-настройки не найдены |
| 3 | bad request | Статус сервера не active; расширенные настройки выключены или протокол не amnezia-wg-2; сохранённые AWG-настройки не парсятся; изменения не применились; параллельно выполняется другое обновление настроек |
| 60 | port not available | Новый порт вне диапазона 1024-65535, блокировка порта не захвачена или порт занят на сервере |
| 72 | awg 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
config_id | number | Да | 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-пакета
}
}Ошибки
| errorCode | message | Когда |
|---|---|---|
| 1 | not found | Сервер, конфигурация или её сохранённые AWG-настройки не найдены |
| 3 | bad 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
config_id | number | Да | 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 конфиг
}
}Ошибки
| errorCode | message | Когда |
|---|---|---|
| 1 | not found | Сервер, конфигурация или её сохранённые AWG-настройки не найдены |
| 3 | bad request | Статус сервера не active; расширенные настройки выключены или протокол не amnezia-wg-2; сохранённые AWG-настройки не парсятся; изменения не применились; параллельно выполняется другое обновление настроек |
PATCH /cloud-servers/:server_id/configs/:config_id/title
Изменить название конфигурации на облачном сервере.
Rate Limit: 1 req / 1 sec
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
config_id | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
config_id | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
config_id | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
id | number | Да | ID облачного сервера |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | Да | Включить/выключить автопродление |
days | number | Нет | Дней для автопродления, 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
| Parameter | Type | Required | Description |
|---|---|---|---|
serverId | number | Да | ID облачного сервера |
configId | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
serverId | number | Да | ID облачного сервера |
configId | number | Да | ID конфигурации |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Да | Название устройства, от 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
}
}Ошибки
| 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 /cloud-servers/:serverId/configs/:configId/devices/:deviceId
Переименовать устройство конфигурации облачного сервера.
Rate Limit: 1 req / 1 sec
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
serverId | number | Да | ID облачного сервера |
configId | number | Да | ID конфигурации |
deviceId | number | Да | ID устройства |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Да | Новое название устройства, от 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
| Parameter | Type | Required | Description |
|---|---|---|---|
serverId | number | Да | ID облачного сервера |
configId | number | Да | ID конфигурации |
deviceId | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
protocol | string | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
proxy_id | number | Да | ID прокси |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
protocol | string | Да | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
proxy_id | number | Да | ID прокси |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
title | string | 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
| Parameter | Type | Required | Description |
|---|---|---|---|
server_id | number | Да | ID облачного сервера |
proxy_id | number | Да | 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
}Помогла ли вам эта статья?