Skip to main content

Node API

V2RaySocks's API uses query strings to complete verification and pull and push resources

Example:

https://yourdomain.com/web_api/?token=thisistoken&node_id=4&node_type=v2ray&act=user

Among them, token=thisistoken&node_id=4&node_type=v2ray is required. If any one of them is missing, an error will be returned

node_type

node_type indicates the type of node

Acceptable valuesCorresponding protocol
v2rayVmess, VLESS
trojantrojan
shadowsocksshadowsocks-AEAD, shadowsocks-2022
hysteria2hysteria2

act

act indicates the behavior of the node, the following values ​​are supported

config

Get the config of the node, the API returns a json data, supports ETag

In principle, a standard Xray configuration file will be returned

{
"api": {
"services": [
"HandlerService",
"StatsService"
],
"tag": "api"
},
"dns": [],
"stats": {},
"inbounds": [
{
"port": 36082,
"protocol": "vmess",
"settings": {
"clients": []
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
},
"streamSettings": {
"network": "ws",
"security": "tls",
"tlsSettings": {
"certificates": [
{
"certificateFile": "/root/.cert/server.crt",
"keyFile": "/root/.cert/server.key"
}
]
},
"wsSettings": {
"path": "/speedtest"
}
},
"tag": "proxy"
},
{
"listen": "127.0.0.1",
"port": 1,
"protocol": "dokodemo-door",
"settings": {
"address": "0.0.0.0"
},
"tag": "api"
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {
"domainStrategy": "UseIP"
}
},
{
"protocol": "blackhole",
"tag": "block"
}
],
"routing": {
"rules": [
{
"type": "field",
"inboundTag": "api",
"outboundTag": "api"
},
{
"type": "field",
"domain": [],
"outboundTag": "block"
},
{
"type": "field",
"protocol": [],
"outboundTag": "block"
}
]
},
"policy": {
"levels": {
"0": {
"handshake": 4,
"connIdle": 300,
"uplinkOnly": 5,
"downlinkOnly": 30,
"statsUserUplink": true,
"statsUserDownlink": true
}
}
}
}

The 0th of inbounds will be used as the node configuration, and the same, the 0th of the streamSettings, wsSettings, etc. (related to transport) are used as node configurations.

Please refer to XrayR , the implementation method is very simple

user

Get the user list of the node, the API returns a json data, supports ETag

v2ray and hysteria2

{
"msg": "ok",
"data": [
{
"id": 12,
"uuid": "21DE8081-81E4-4525-A226-DCA408C4D603",
"dt": 10,
"st": 1
},
{
"id": 13,
"uuid": "EAF06CBA-4047-4A01-A4B5-02E15CD5E718",
"dt": 10,
"st": 1
}
]
}

shadowsocks

{
"msg": "ok",
"data": [
{
"id": 12,
"secret": "21DE8081-81E4-4525-A226-DCA408C4D603",
"dt": 10,
"st": 1
},
{
"id": 13,
"secret": "EAF06CBA-4047-4A01-A4B5-02E15CD5E718",
"dt": 10,
"st": 1
}
]
}

trojan

{
"msg": "ok",
"data": [
{
"id": 12,
"password": "21DE8081-81E4-4525-A226-DCA408C4D603",
"dt": 10,
"st": 1
},
{
"id": 13,
"password": "EAF06CBA-4047-4A01-A4B5-02E15CD5E718",
"dt": 10,
"st": 1
}
]
}

dt indicates the device quantity limit, st indicates the speed limit (Mbps)

submit

Submit traffic usage data to V2RaySocks, accept a post request with json data

[
{
"uid": 1453,
"u": 189773,
"d": 52108028
},
{
"uid": 2122,
"u": 24518,
"d": 46877
},
{
"uid": 2379,
"u": 591,
"d": 5350
},
{
"uid": 2392,
"u": 2222,
"d": 1207
}
]

onlineusers

Submit the online user's IP to V2RaySocks, accept a post request with json data

Due to design issues, internal data can be duplicated

[
{
"uid": 1165323,
"ip": "116.202.118.150"
},
{
"uid": 1144103,
"ip": "27.45.47.47"
},
{
"uid": 1137593,
"ip": "117.61.24.234"
}
]

nodestatus

Submit node status data to V2RaySocks, accept a post request with json data

{
"cpu": "0%",
"mem": "13%",
"net": "",
"disk": "7%",
"uptime": 4183063
}

illegal

Submit users who violated the rules to access the banned domain name to V2RaySocks, accept a post request with json data

Due to design issues, internal data can be duplicated

[
{
"uid": 1165985
},
{
"uid": 1165985
},
{
"uid": 1158653
}
]

get_certificate

Get the node certificate stored in V2RaySocks

get_key

Get the node private key stored in V2RaySocks

Confirm post

All post requests will receive the following response indicating that the post has been successfully executed

{"msg":"ok","ret":200}

Or an error occurs

{"msg":"error","ret":500}