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

Список подписок

GET/api/v1/vpn/subscriptions

Все подписки аккаунта, включая проданные через ботов. Без живого трафика: он есть только в карточке одной подписки. Обычный режим: новые сверху, страницы по offset. Режим синхронизации (задан updated_since или cursor): по возрастанию updated_at, в ответе next_cursor, листайте, пока он не null, и запомните updated_at последней подписки для следующего захода. Подходит, чтобы держать свою базу в актуальном виде без запроса на каждую подписку.

Параметры запроса

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

Только подписки этого пользователя.

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

Только этого Telegram id.

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

Только этого тарифа.

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

term: на срок, lifetime: «Навсегда».

одно из:termlifetime
is_trialнеобязательно

Только пробные или только платные.

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

Фильтр по статусу.

одно из:activefrozenexpired
updated_sinceнеобязательно

Режим синхронизации: подписки, изменившиеся с этого момента (ISO-8601), по возрастанию updated_at, страницы по next_cursor.

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

next_cursor из прошлой страницы.

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

Сколько пропустить. Только в обычном режиме.

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

Размер страницы, до 100.

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

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

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

curl https://api.relayhub.surf/api/v1/vpn/subscriptions?updated_since=2026-10-14T00%3A00%3A00Z \
  -H "Authorization: Bearer <YOUR_API_KEY>"
Вставьте свой ключ, и он подставится вместо <YOUR_API_KEY>.

Вставьте API-ключ

Пример ответа
{
  "success": true,
  "total": 1,
  "offset": 0,
  "limit": 20,
  "items": [
    {
      "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/wnT9NRf0Zk6McRRnp2nggc3K",
      "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",
      "updated_at": "2026-09-10T07:58:12Z"
    }
  ]
}

Поля ответа

successboolean

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

totalinteger

Сколько всего записей под фильтром.

offsetinteger

Сколько записей пропущено, как в запросе.

limitinteger

Размер страницы, как в запросе.

itemsobject[]

Записи страницы.

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