Задать адрес и события

PUT/api/v1/vpn/webhook

Секрет подписи возьмите в кабинете (раздел «API»). Проверяйте подпись: X-Signature: sha256=hex(HMAC-SHA256(secret, raw_body)), сравнение constant-time по сырым байтам тела до разбора JSON.

curl -X PUT https://api.relayhub.surf/api/v1/vpn/webhook \
  -H "Authorization: Bearer <YOUR_API_KEY>"
Вставьте свой ключ в меню, и он подставится вместо <YOUR_API_KEY>.
{
  "success": true,
  "url": "https://example.com/vpn-webhook",
  "events": [
    "deposit.credited",
    "subscription.expired",
    "subscription.expires_in_24h"
  ],
  "is_active": true,
  "secret_set": true,
  "all_events": [
    "subscription.created",
    "subscription.renewed",
    "subscription.upgraded",
    "subscription.traffic_purchased",
    "subscription.frozen",
    "subscription.unfrozen",
    "subscription.expires_in_72h",
    "subscription.expires_in_48h",
    "subscription.expires_in_24h",
    "subscription.expired",
    "subscription.traffic_threshold",
    "deposit.credited"
  ],
  "last_success_at": "2026-09-02T12:07:01Z",
  "consecutive_failures": 0
}

Авторизация

Заголовок Authorization: Bearer <ключ> на каждом запросе. Ключ один на аккаунт, выпускается в кабинете партнёра и показывается один раз. Он тратит депозит: держите его на сервере.

Тело запроса

urlstring | nullнеобязательно

https-адрес. null выключает доставку, секрет сохраняется.

eventsstring[] | nullнеобязательно

Подмножество событий. null или пустой список = все, включая будущие.

Поля ответа

successbooleanобязательно
urlstringобязательно
eventsarrayобязательно
is_activebooleanобязательно
secret_setbooleanобязательно
all_eventsarrayобязательно
last_success_atstringобязательно
consecutive_failuresintegerобязательно

Когда откажет

401unauthorized: Неверный или отсутствующий API-ключ
403api_disabled: Доступ к API для этого аккаунта закрыт
422validation_error: Неверные параметры запроса
429rate_limited: Слишком много запросов
503upstream_unavailable: Поставщик VPN временно недоступен
Собираем анонимную аналитику посещений. Подробнее