API
У панели есть REST API для ботов, биллинга и мониторинга. Документация к нему встроена в саму панель.
Где документация
Заголовок раздела «Где документация»Настройки → Безопасность → API → Открыть. На странице:
- адрес API и ключи;
- список всех методов с параметрами, ответами и примерами curl, кнопка «Попробовать» для GET-запросов;
- «Скачать OpenAPI»: файл
mikan-openapi.json, в котором уже прописан адрес вашей панели. Подходит для Postman, Insomnia, Swagger UI и генераторов клиентов.
Адрес API: https://<адрес панели>:<порт>/<секретный путь>/api/v1.
На странице API кнопка Новый ключ:
- Название.
- Права: «Чтение» или «Полный доступ».
- Срок: пока не отзовёте, 30, 90 или 365 дней.
- Пароль администратора и код 2FA, если она включена.
Ключ показывается один раз, панель хранит только его хеш. Ключи создаются и отзываются только из панели, не через API. При смене пароля ключи администратора можно отозвать галочкой, а mikan reset-password отзывает их всегда.
| Права | Что можно |
|---|---|
| Чтение | только GET: пользователи, статистика, настройки, метрики. Ссылок подписок и секретных адресов в ответах нет |
| Полный доступ | создавать и продлевать пользователей, менять тарифы и подключения. Без входа, сессий, ключей, журнала аудита, платежей, бота, сертификатов, обновлений и адресов панели: это только из панели |
Ключ передаётся в заголовке:
Authorization: Bearer mk_...Ошибки приходят в формате RFC 9457 (application/problem+json), код ошибки в поле detail.
Примеры
Заголовок раздела «Примеры»BASE="https://vpn.example.com:PORT/СЕКРЕТНЫЙ-ПУТЬ/api/v1"KEY="mk_..."Список активных пользователей:
curl -H "Authorization: Bearer $KEY" "$BASE/users?state=active&limit=10"Создать пользователя на тарифе 2:
curl -X POST "$BASE/users" \ -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \ -d '{"name": "Anna", "tariff_id": 2, "contact": "@anna"}'В ответе пользователь с id и ссылкой на подписку sub_url.
Продлить на 30 дней или на месяц (нужно одно из двух):
curl -X POST "$BASE/users/42/extend" \ -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \ -d '{"days": 30}'Начислить 10 ГБ, которые действуют до расхода:
curl -X POST "$BASE/users/42/grants" \ -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \ -d '{"bytes": 10737418240, "lifetime": "used"}'Основные методы
Заголовок раздела «Основные методы»| Метод | Путь | Что делает |
|---|---|---|
| GET | /users |
список: state, q, limit, offset |
| POST | /users |
создать пользователя по тарифу |
| GET, PATCH | /users/{id} |
пользователь, изменить |
| POST | /users/{id}/extend |
продлить: days или months |
| POST | /users/{id}/reset-traffic |
сбросить трафик |
| POST | /users/{id}/reissue |
перевыпустить ссылку |
| POST | /users/{id}/grants |
начислить трафик |
| POST | /users/bulk |
действие над группой: extend, reset, disable, enable, delete |
| GET | /tariffs |
тарифы |
| GET | /inbounds |
подключения |
| GET | /nodes |
ноды |
| GET | /stats/overview |
цифры обзора |
| GET | /stats/traffic |
трафик сервера: range 24h, 7d или 30d |
| GET | /metrics |
метрики Prometheus |
Полный список с телами запросов и ответов смотрите на странице API в панели.
