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

Привязать пользователей пачкой

POST/api/v1/vpn/clients/link/batch

То же, что POST /clients/link, до 1000 строк за раз: перенести базу бота одним вызовом. Строки независимы: конфликт одной не отменяет остальные, ответ по каждой в том же порядке (result или error_code с error). Повтор всего пакета безопасен.

Тело запроса

itemsobject[]обязательно

До 1000 привязок за запрос. Каждая строка обрабатывается отдельно.

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

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

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

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

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

Пример ответа
{
  "success": true,
  "total": 2,
  "failed": 1,
  "items": [
    {
      "external_user_id": "user-42",
      "telegram_id": 123456789,
      "result": "linked",
      "client_id": "01a06310-8f2b-7c11-9a3e-2b5c7d9e1f00"
    },
    {
      "external_user_id": "user-43",
      "telegram_id": 987654321,
      "result": "error",
      "error_code": "external_user_conflict",
      "error": "telegram_id или external_user_id уже привязан к другому пользователю",
      "conflict": "telegram_taken",
      "conflict_external_user_id": "user-17"
    }
  ]
}

Поля ответа

successboolean

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

totalinteger

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

failedinteger

Сколько строк пакета не привязано (result: error).

itemsobject[]

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

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