Ваш сайт или программа сама выдаёт подписки из нашего VPN. Нужен разработчик.

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

PUT/api/v1/vpn/webhook

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

Тело запроса

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

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

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

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

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

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

Подставится в примеры и в запрос. Хранится только в этом браузере.

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",
  "last_failure_at": null,
  "consecutive_failures": 0
}

Поля ответа

successboolean

true у любого успешного ответа.

urlstring | null

Адрес доставки; null, если вебхук не задан.

eventsstring[] | null

На какие события подписан адрес. null: на все, включая будущие.

is_activeboolean

Идёт ли доставка.

secret_setboolean

Выпущен ли секрет подписи (сам секрет есть только в кабинете).

all_eventsstring[]

Все события, на которые можно подписаться.

last_success_atstring | null

Последняя успешная доставка.

last_failure_atstring | null

Последняя неудачная доставка.

consecutive_failuresinteger

Сколько доставок подряд не удалось.

Собираем анонимную аналитику посещений. Подробнее