API для управления пользователями и статистикой сервера v2ray-stat.
Все запросы отправляются на http://127.0.0.1:9952.
GET /api/v1/users
curl -X GET http://127.0.0.1:9952/api/v1/usersGET /api/v1/stats
Этот эндпоинт возвращает статистику по серверу и клиентам, в зависимости от конфигурации stats_columns.
curl -X GET http://127.0.0.1:9952/api/v1/statsВ файле конфигурации YAML можно указать, какие колонки выводить и по какому столбцу сортировать:
stats_columns:
server:
sort: rate DESC
columns:
- source
- rate
- uplink
- downlink
client:
sort: user ASC
columns:
- user
- last_seen
- rate
- uplink
- downlink-
Для server:
source— источник трафика (IP или hostname)rate— текущий трафик (бит/с)uplink— всего отправлено (байт)downlink— всего получено (байт)sess_uplink— отправлено в текущей сессии (байт)sess_downlink— получено в текущей сессии (байт)
-
Для client:
user— имя пользователя или идентификаторuuid— уникальный идентификаторlast_seen— время последней активностиrate— текущий трафик (бит/с)uplink— всего отправлено (байт)downlink— всего получено (байт)sess_uplink— отправлено в текущей сессии (байт)sess_downlink— получено в текущей сессии (байт)enabled— включен ли пользовательsub_end— дата окончания подпискиrenew— статус/дата продленияlim_ip— ограничение по IPips— список IP-адресовcreated— дата создания
Если поле columns не указано или пустое, соответствующая статистика не отображается.
Если поле sort не задано:
- Для
serverиспользуетсяsource ASC - Для
clientиспользуетсяuser ASC
Некорректные колонки или формат сортировки будут проигнорированы, и в логах появятся предупреждения.
stats_columns:
server:
columns: []
client:
columns:
- user
- rate
- uplink
- downlinkТакже можно переопределить сортировку для клиента через параметры запроса:
curl "http://127.0.0.1:9952/api/v1/stats?sort_by=rate&sort_order=DESC"GET /api/v1/dns_stats
- Параметры:
user: Имя пользователя, для которого запрашивается статистика DNS.count: Количество записей DNS-запросов для возврата.
curl -X GET "http://127.0.0.1:9952/api/v1/dns_stats?user=newuser&count=10"POST /api/v1/delete_dns_stats
curl -X POST http://127.0.0.1:9952/api/v1/delete_dns_statsPOST /api/v1/reset_traffic_stats
curl -X POST http://127.0.0.1:9952/api/v1/reset_traffic_statsPOST /api/v1/reset_clients_stats
curl -X POST http://127.0.0.1:9952/api/v1/reset_clients_statsPOST /api/v1/reset_traffic
curl -X POST http://127.0.0.1:9952/api/v1/reset_trafficPOST /api/v1/add_user
- Параметры:
user: Имя пользователя.credential: Идентификатор пользователя (UUID для VLESS или PASSWORD для Trojan).inboundTag: Тег входящего соединения (например,vless-inилиtrojan-in).
curl -X POST http://127.0.0.1:9952/api/v1/add_user -d "user=newuser&credential=123e4567-e89b-12d3-a456-426614174000&inboundTag=vless-in"POST /api/v1/bulk_add_users
- Параметры:
users_file: Файл с данными пользователей в форматеuser,credential,inboundTag.- Формат файла:
user,credential,inboundTag: Полный формат (например,user1,550e8400-e29b-41d4-a716-446655440000,vless-in).user,credential: БезinboundTag, используется значение по умолчанию.user: Только имя,credential(UUID) генерируется автоматически.user,,inboundTag: Имя иinboundTag,credential(UUID) генерируется автоматически.
- Формат файла:
curl -X POST "http://127.0.0.1:9952/api/v1/bulk_add_users" -F "users_file=@users.txt"- Пример файла
users.txt:
user1,550e8400-e29b-41d4-a716-446655440000,vless-in # Полный формат
user2,6ba7b810-9dad-11d1-80b4-00c04fd430c8 # Без inboundTag
user3 # Только имя, UUID будет сгенерирован
user4,,vless-in # Имя и inboundTag, UUID будет сгенерирован
DELETE /api/v1/delete_user
- Параметры:
user: Имя пользователя.inboundTag: Тег входящего соединения (например,vless-in).
curl -X DELETE "http://127.0.0.1:9952/api/v1/delete_user?user=newuser&inboundTag=vless-in"PATCH /api/v1/set_enabled
- Параметры:
user: Имя пользователя.enabled: Статус активности пользователя (true— включить,false— отключить).
curl -X PATCH http://127.0.0.1:9952/api/v1/set_enabled -d "user=newuser&enabled=false"PATCH /api/v1/update_lim_ip
- Параметры:
user: Имя пользователя.lim_ip: Ограничение на количество IP-адресов.
curl -X PATCH http://127.0.0.1:9952/api/v1/update_lim_ip -d "user=newuser&lim_ip=5"PATCH /api/v1/adjust_date
- Параметры:
user: Имя пользователя.sub_end: Смещение срока окончания подписки в формате+6d:0d,-3d,3h
curl -X PATCH http://127.0.0.1:9952/api/v1/adjust_date -d "user=newuser&sub_end=+30d13h"PATCH /api/v1/update_renew
- Параметры:
user: Имя пользователя.renew: Период автопродления в днях.
curl -X PATCH http://127.0.0.1:9952/api/v1/update_renew -d "user=newuser&renew=30"Включение API для статистики и управления в ядрах Singbox и Xray.
"experimental": {
"v2ray_api": {
"listen": "127.0.0.1:9953",
"stats": {
"enabled": true,
"inbounds": [
"trojan-in",
"vless-in"
],
"outbounds": [
"warp",
"direct",
"IPv4"
],
"users": [
"user1",
"user2"
]
}
}
}"api": {
"tag": "api",
"listen": "127.0.0.1:9953",
"services": [
"HandlerService",
"StatsService",
"ReflectionService"
]
},