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

Обновить ссылку

POST/api/v1/vpn/subscriptions/{subscription_id}/rotate-link

Выдаёт подписке новый адрес. Старая ссылка перестаёт отдавать конфиг сразу, новая в subscription_url: отдайте её пользователю заново. Нужно, когда ссылка утекла. Устройства, которые уже импортировали профиль, продолжат подключаться: ключи серверов при обновлении не меняются. Чтобы закрыть доступ полностью, заморозьте подписку. Не чаще раза в час на подписку, иначе 409 subscription_state.

Параметры пути

subscription_idобязательно

Идентификатор подписки: subscription.subscription_id из ответа покупки или списка.

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

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

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

curl -X POST https://api.relayhub.surf/api/v1/vpn/subscriptions/<subscription_id>/rotate-link \
  -H "Authorization: Bearer <YOUR_API_KEY>"
Вставьте свой ключ, и он подставится вместо <YOUR_API_KEY>.

Запрос меняет данные или списывает деньги: выполняйте его из своего кода.

Пример ответа
{
  "success": true,
  "subscription": {
    "subscription_id": "01a06315-1270-705a-8d4c-58fea607bf2c",
    "client_id": "01a06310-8f2b-7c11-9a3e-2b5c7d9e1f00",
    "external_user_id": "user-42",
    "telegram_id": null,
    "bot_id": null,
    "source": "api",
    "plan_uuid": "550e8400-e29b-41d4-a716-446655440000",
    "plan_name": "Standard 30d",
    "is_trial": false,
    "product": "term",
    "is_lifetime": false,
    "status": "active",
    "subscription_url": "https://api.relayhub.surf/sub/Qm4kLc7VZp2xR9tHf6yWn0Ea",
    "days": 30,
    "days_left": 30,
    "devices": 2,
    "traffic_limit_bytes": null,
    "auto_renew": false,
    "renewal_count": 0,
    "renewal_progress": 0,
    "created_at": "2026-09-02T12:00:00Z",
    "end_date": "2026-10-02T12:00:00Z",
    "frozen_at": null,
    "price_minor": 450,
    "price_usd": "4.50"
  },
  "rotated_at": "2026-09-10T08:00:00Z"
}

Поля ответа

successboolean

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

subscriptionobject

Подписка после операции.

rotated_atstring

Когда выдана новая ссылка. Следующая смена возможна через час.

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