API для разработчиков
Программно управляйте VPN-подписками ваших пользователей. Передайте email — получите готовую ссылку на подписку.
Быстрый старт (3 шага)
Пример — создание подписки
Аутентификация
Каждый запрос должен содержать ваш API-ключ в заголовке X-Api-Key .
Base URL
Эндпоинты API
/openapi/v1/subscriptions
Создать подписку
Создаёт новую подписку для указанного email. Возвращает ссылку на подписку для передачи вашему пользователю.
Тело запроса (JSON)
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| string | required | Email подписчика (уникален для каждой подписки) | |
| plan_id | string | optional | 7d / 30d / 90d / 365d — по умолчанию 30d |
| memo | string | optional | Внутренняя заметка (не видна пользователю, пишется в журнал аудита) |
Пример запроса
Ответ 201
Если у этого email уже есть активная подписка, возвращается 409 — используйте /renew для продления.
/openapi/v1/subscriptions/{email}
Запросить подписку
Получить текущий статус подписки по email.
Ответ 200
/openapi/v1/subscriptions/{email}/renew
Продлить подписку
Продлить существующую подписку. Два режима: extend (добавляет дни к текущему сроку) или reset (отсчёт заново с сегодняшнего дня).
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| plan_id | string | required | 7d / 30d / 90d / 365d |
| mode | string | optional | extend (по умолчанию) или reset |
Ответ 200
/openapi/v1/subscriptions/{email}
Отозвать подписку
Отключает (мягко отзывает) подписку для этого email. Запись подписки сохраняется, но её статус становится revoked, а доступ снимается при следующей синхронизации. Действует только на подписки, созданные вашим API-ключом.
Ответ 200
/openapi/v1/subscriptions
Список подписок
Постраничный список подписок, созданных вашим API-ключом. Возвращаются только ваши подписки — данные других арендаторов никогда не раскрываются.
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| page | int | optional | Номер страницы, начиная с 1. По умолчанию 1. |
| per_page | int | optional | Элементов на странице. По умолчанию 20, максимум 100 (с усечением). |
| status | string | optional | Фильтр: active / expired / all (по умолчанию all). |
Ответ 200
/openapi/v1/me
Сведения о ключе
Получить сведения о текущем API-ключе и использовании за сегодня.
Коды ошибок
Все ошибки имеют единый формат:
| HTTP | error.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 | Ошибка сервера |
Лимиты запросов
При превышении лимита возвращается 429 с заголовком Retry-After указывающим, сколько секунд подождать. Лимиты можно повысить — свяжитесь с нами.
Запросить доступ к API
Заполните форму ниже. Мы рассмотрим вашу заявку и свяжемся с вами, чтобы передать API-ключ.
Уже есть ключ? Перейдите к разделу «Быстрый старт» выше. Связаться с поддержкой