Добро пожаловать в Univista — мы рады, что вы здесь. Если что-то неясно, откройте «Справку» или свяжитесь с нами через службу поддержки на этом сайте, и мы поможем вам подключиться.
Open API v1 Доступ для B2B-партнёров

API для разработчиков

Программно управляйте VPN-подписками ваших пользователей. Передайте email — получите готовую ссылку на подписку.

Быстрый старт (3 шага)

ШАГ 1
🔑
Получить API-ключ
Подайте заявку через форму ниже, и мы создадим ваш ключ
ШАГ 2
📡
Отправить запрос
POST на /openapi/v1/subscriptions с email
ШАГ 3
Передать пользователю
Отправьте subscription_url вашему пользователю

Пример — создание подписки

curl -s -X POST https://univista.me/openapi/v1/subscriptions \ -H 'X-Api-Key: uk_live_your_key_here' \ -H 'Content-Type: application/json' \ -d '{"email":"[email protected]","plan_id":"30d"}'
# Response 201 { "data": { "subscription_url": "https://univista.me/sub?token=abc123...", "email": "[email protected]", "plan_id": "30d", "expires_at": "2026-05-29T00:00:00Z" } }

Аутентификация

Каждый запрос должен содержать ваш API-ключ в заголовке X-Api-Key .

X-Api-Key: uk_live_a1b2c3d4e5f6...
Важно о безопасности: API-ключ показывается только один раз при создании. Храните его в переменной окружения, никогда — в коде. Меняйте каждые 90 дней.

Base URL

https://univista.me/openapi/v1/

Эндпоинты API

POST /openapi/v1/subscriptions Создать подписку

Создаёт новую подписку для указанного email. Возвращает ссылку на подписку для передачи вашему пользователю.

Тело запроса (JSON)

ПолеТипОбязательноеОписание
emailstringrequiredEmail подписчика (уникален для каждой подписки)
plan_idstringoptional7d / 30d / 90d / 365d — по умолчанию 30d
memostringoptionalВнутренняя заметка (не видна пользователю, пишется в журнал аудита)

Пример запроса

curl -X POST https://univista.me/openapi/v1/subscriptions \ -H "X-Api-Key: uk_live_..." \ -H "Content-Type: application/json" \ -d '{"email":"[email protected]","plan_id":"30d","memo":"order #123"}'

Ответ 201

{ "data": { "subscription_token": "abc123...", "subscription_url": "https://univista.me/sub?token=abc123...", "email": "[email protected]", "plan_id": "30d", "expires_at": "2026-05-29T00:00:00Z", "created_at": "2026-04-29T10:00:00Z", "memo": "order #123" } }

Если у этого email уже есть активная подписка, возвращается 409 — используйте /renew для продления.

GET /openapi/v1/subscriptions/{email} Запросить подписку

Получить текущий статус подписки по email.

curl https://univista.me/openapi/v1/subscriptions/[email protected] \ -H "X-Api-Key: uk_live_..."

Ответ 200

{ "data": { "email": "[email protected]", "status": "active", // active | expired | rate_limited "plan_id": "30d", "expires_at": "2026-05-29T00:00:00Z", "days_remaining": 30, "subscription_url": "https://univista.me/sub?token=..." } }
POST /openapi/v1/subscriptions/{email}/renew Продлить подписку

Продлить существующую подписку. Два режима: extend (добавляет дни к текущему сроку) или reset (отсчёт заново с сегодняшнего дня).

ПолеТипОбязательноеОписание
plan_idstringrequired7d / 30d / 90d / 365d
modestringoptionalextend (по умолчанию) или reset
curl -X POST https://univista.me/openapi/v1/subscriptions/[email protected]/renew \ -H "X-Api-Key: uk_live_..." \ -H "Content-Type: application/json" \ -d '{"plan_id":"30d","mode":"extend"}'

Ответ 200

{ "data": { "email": "[email protected]", "new_expires_at": "2026-06-29T00:00:00Z", "subscription_url": "https://univista.me/sub?token=..." } }
DELETE /openapi/v1/subscriptions/{email} Отозвать подписку

Отключает (мягко отзывает) подписку для этого email. Запись подписки сохраняется, но её статус становится revoked, а доступ снимается при следующей синхронизации. Действует только на подписки, созданные вашим API-ключом.

curl -X DELETE https://univista.me/openapi/v1/subscriptions/[email protected] \ -H "X-Api-Key: uk_live_..."

Ответ 200

{ "data": { "email": "[email protected]", "status": "revoked", "revoked_at": "2026-06-22T10:00:00Z" } }
GET /openapi/v1/subscriptions Список подписок

Постраничный список подписок, созданных вашим API-ключом. Возвращаются только ваши подписки — данные других арендаторов никогда не раскрываются.

ПолеТипОбязательноеОписание
pageintoptionalНомер страницы, начиная с 1. По умолчанию 1.
per_pageintoptionalЭлементов на странице. По умолчанию 20, максимум 100 (с усечением).
statusstringoptionalФильтр: active / expired / all (по умолчанию all).
curl "https://univista.me/openapi/v1/subscriptions?page=1&per_page=20" \ -H "X-Api-Key: uk_live_..."

Ответ 200

{ "data": [ { "email": "[email protected]", "status": "active", "plan_id": "30d", "expires_at": "2026-07-22T00:00:00Z", "days_remaining": 30, "subscription_url": "https://univista.me/sub?token=..." } ], "meta": { "page": 1, "per_page": 20, "total": 156, "total_pages": 8 } }
GET /openapi/v1/me Сведения о ключе

Получить сведения о текущем API-ключе и использовании за сегодня.

curl https://univista.me/openapi/v1/me \ -H "X-Api-Key: uk_live_..."
{ "data": { "name": "Partner A", "owner_email": "[email protected]", "created_at": "2026-04-01T00:00:00Z", "rate_limit": { "per_minute": 60, "per_day": 1000, "remaining_today": 847 } } }

Коды ошибок

Все ошибки имеют единый формат:

{ "error": { "code": "invalid_email", "message": "..." } }
HTTPerror.codeОписание
400 invalid_email Неверный формат email
400 invalid_plan_id plan_id не распознан
401 missing_api_key Отсутствует заголовок X-Api-Key
401 invalid_api_key API-ключ недействителен или отозван
403 ip_not_whitelisted IP-адрес источника не в белом списке
404 subscription_not_found Для этого email нет подписки
409 email_already_exists Активная подписка существует — используйте renew
429 rate_limit_exceeded Превышен лимит запросов — смотрите заголовок Retry-After
500 internal_error Ошибка сервера

Лимиты запросов

60
req/min
На ключ, в минуту
1,000
req/day
На ключ, в сутки

При превышении лимита возвращается 429 с заголовком Retry-After указывающим, сколько секунд подождать. Лимиты можно повысить — свяжитесь с нами.

Запросить доступ к API

Заполните форму ниже. Мы рассмотрим вашу заявку и свяжемся с вами, чтобы передать API-ключ.

Уже есть ключ? Перейдите к разделу «Быстрый старт» выше. Связаться с поддержкой