3x-ui3x-ui

Server

System status, log retrieval, certificate generators, Xray binary management, and backup/restore. All under /panel/api/server.

GET
/panel/api/openapi.json

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/openapi.json'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
GET
/panel/api/server/status

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/status'
Example Response200
{  "success": true,  "obj": {    "cpu": 12.5,    "mem": {      "current": 2147483648,      "total": 8589934592    },    "swap": {      "current": 0,      "total": 4294967296    },    "disk": {      "current": 53687091200,      "total": 268435456000    },    "netIO": {      "up": 1073741824,      "down": 2147483648    },    "xray": {      "state": "running",      "version": "v25.10.31"    },    "tcpCount": 42,    "load": {      "load1": 0.5,      "load5": 0.3,      "load15": 0.2    }  }}
GET
/panel/api/server/fail2banStatus

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/fail2banStatus'
Example Response200
{  "success": true,  "obj": {    "enabled": true,    "installed": true,    "usable": true,    "windows": false  }}
GET
/panel/api/server/cpuHistory/{bucket}

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Path Parameters

bucket*integer

Bucket size in seconds. Allowed: 2, 30, 60, 120, 180, 300.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/cpuHistory/0'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
GET
/panel/api/server/history/{metric}/{bucket}

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Path Parameters

metric*string

cpu | mem | netUp | netDown | online | load1 | load5 | load15.

bucket*integer

Bucket size in seconds. Allowed: 2, 30, 60, 120, 180, 300.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/history/string/0'
Example Response200
{  "success": true,  "obj": [    {      "t": 1700000000,      "v": 12.5    },    {      "t": 1700000002,      "v": 13.1    }  ]}
GET
/panel/api/server/xrayMetricsState

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/xrayMetricsState'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
GET
/panel/api/server/xrayMetricsHistory/{metric}/{bucket}

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Path Parameters

metric*string

xrAlloc | xrSys | xrHeapObjects | xrNumGC | xrPauseNs.

bucket*integer

Bucket size in seconds. Allowed: 2, 30, 60, 120, 180, 300.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/xrayMetricsHistory/string/0'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
GET
/panel/api/server/xrayObservatory

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/xrayObservatory'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
GET
/panel/api/server/xrayObservatoryHistory/{tag}/{bucket}

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Path Parameters

tag*string

Outbound tag from the observatory config.

bucket*integer

Bucket size in seconds. Allowed: 2, 30, 60, 120, 180, 300.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/xrayObservatoryHistory/string/0'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
GET
/panel/api/server/getXrayVersion

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/getXrayVersion'
Example Response200
{  "success": true,  "obj": [    "v25.10.31",    "v25.9.15",    "v25.8.1"  ]}
GET
/panel/api/server/getPanelUpdateInfo

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/getPanelUpdateInfo'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
GET
/panel/api/server/getUpdateStatus

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?

PanelUpdateStatus reports the outcome of the most recently launched panel self-update. RunID lets the caller confirm this status belongs to the update it started rather than a stale result left over from an earlier run; State is one of "pending", "success", or "failed". RunID is a decimal string, not a JSON number: it's a formatted UnixNano timestamp, and JavaScript's number type can't represent that precisely (it exceeds Number.MAX_SAFE_INTEGER), which would let two different runs round to the same value on the wire and defeat the whole point of this field.

Example Request
curl -X GET 'https://example.com/panel/api/server/getUpdateStatus'
Example Response200
{  "success": true,  "obj": {    "exitCode": 0,    "finishedAt": 1735689612,    "runId": "1735689600123456789",    "state": "success"  }}
GET
/panel/api/server/getConfigJson

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/getConfigJson'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
GET
/panel/api/server/getDb

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/getDb'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
GET
/panel/api/server/getMigration

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/getMigration'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
GET
/panel/api/server/getNewUUID

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?
Example Request
curl -X GET 'https://example.com/panel/api/server/getNewUUID'
Example Response200
{  "success": true,  "obj": {    "uuid": "550e8400-e29b-41d4-a716-446655440000"  }}
GET
/panel/api/server/getWebCertFiles

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/getWebCertFiles'
Example Response200
{  "success": true,  "obj": {    "webCertFile": "/root/cert/example.com/fullchain.pem",    "webKeyFile": "/root/cert/example.com/privkey.pem"  }}
GET
/panel/api/server/descendants

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/descendants'
Example Response200
{  "success": true,  "obj": [    {      "guid": "c3d4-...",      "parentGuid": "a1b2-...",      "name": "Node3",      "address": "10.0.0.3",      "status": "online"    }  ]}
GET
/panel/api/server/getNewX25519Cert

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/getNewX25519Cert'
Example Response200
{  "success": true,  "obj": {    "privateKey": "uN9qLfV3zH8w...",    "publicKey": "5v8xPqR2sM7k..."  }}
GET
/panel/api/server/getNewmldsa65

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?
Example Request
curl -X GET 'https://example.com/panel/api/server/getNewmldsa65'
Example Response200
{  "success": true,  "obj": {    "seed": "mldsa65-seed",    "verify": "mldsa65-verify"  }}
GET
/panel/api/server/getNewmlkem768

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?
Example Request
curl -X GET 'https://example.com/panel/api/server/getNewmlkem768'
Example Response200
{  "success": true,  "obj": {    "client": "mlkem768-client",    "seed": "mlkem768-seed"  }}
GET
/panel/api/server/getNewVlessEnc

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X GET 'https://example.com/panel/api/server/getNewVlessEnc'
Example Response200
{  "success": true,  "obj": {    "auths": [      {        "id": 0,        "label": "Auth #0",        "encryption": "aes-256-gcm",        "decryption": ""      }    ]  }}
POST
/panel/api/server/stopXrayService

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/stopXrayService'
Example Response
{  "success": true,  "msg": "string",  "obj": null}
POST
/panel/api/server/restartXrayService

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/restartXrayService'
Example Response
{  "success": true,  "msg": "string",  "obj": null}
POST
/panel/api/server/installXray/{version}

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Path Parameters

version*string

Xray tag (e.g. v25.10.31) or "latest".

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/installXray/string'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
POST
/panel/api/server/updatePanel

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Request Body

application/x-www-form-urlencoded
  1. body
dev?boolean

Override this run's channel. Omit to use the panel's configured channel.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/updatePanel' \  -H 'Content-Type: application/x-www-form-urlencoded' \  -d ''
Example Response200
{  "success": true,  "obj": {    "runId": "1735689600123456789"  }}
POST
/panel/api/server/setUpdateChannel

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Request Body

application/x-www-form-urlencoded
  1. body
dev*boolean

true = dev channel, false = stable.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/setUpdateChannel' \  -H 'Content-Type: application/x-www-form-urlencoded' \  -d 'dev=true'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
POST
/panel/api/server/updateGeofile

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/updateGeofile'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
POST
/panel/api/server/updateGeofile/{fileName}

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Path Parameters

fileName*string

Filename of the data file to refresh.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/updateGeofile/string'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
POST
/panel/api/server/logs/{count}

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Path Parameters

count*integer

Number of trailing log lines.

Request Body

application/x-www-form-urlencoded
  1. body
level?string

Minimum log level filter.

syslog?boolean

Read system logs instead of the panel log.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?array<string>|null
Example Request
curl -X POST 'https://example.com/panel/api/server/logs/0' \  -H 'Content-Type: application/x-www-form-urlencoded' \  -d ''
Example Response200
{  "success": true,  "obj": [    "2025/01/01 12:00:00 [INFO] Server started",    "2025/01/01 12:00:01 [INFO] Xray is running"  ]}
POST
/panel/api/server/xraylogs/{count}

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Path Parameters

count*integer

Number of trailing log lines.

Request Body

application/x-www-form-urlencoded
  1. body
filter?string

Keyword filter — only lines containing this string.

showDirect?string

"true" to include direct (freedom) traffic lines.

showBlocked?string

"true" to include blocked (blackhole) traffic lines.

showProxy?string

"true" to include proxy traffic lines.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?array<>|null
Example Request
curl -X POST 'https://example.com/panel/api/server/xraylogs/0' \  -H 'Content-Type: application/x-www-form-urlencoded' \  -d ''
Example Response200
{  "success": true,  "obj": [    {      "DateTime": "2025-01-01T12:00:00Z",      "Email": "alice@example.com",      "Event": 0,      "FromAddress": "192.0.2.10:54321",      "Inbound": "inbound-443",      "Outbound": "direct",      "ToAddress": "example.com:443"    }  ]}
POST
/panel/api/server/amneziawglogs/{count}

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Path Parameters

count*integer

Maximum peer rows and event lines to return.

Request Body

application/x-www-form-urlencoded
  1. body
filter?string

Keyword filter — only rows/lines containing this string.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?

AmneziaWGLogs is what the overview's AmneziaWG log view renders: the live per-peer activity of every running embedded interface, plus the panel's own recent AmneziaWG lifecycle log lines that explain a peer being absent from Peers at all.

Example Request
curl -X POST 'https://example.com/panel/api/server/amneziawglogs/0' \  -H 'Content-Type: application/x-www-form-urlencoded' \  -d ''
Example Response200
{  "success": true,  "obj": {    "events": [      "2025/01/01 12:00:00 amneziawg: started interface awg1 for inbound 1"    ],    "peers": [      {        "allowedIPs": "10.8.1.2/32",        "down": 4194304,        "email": "peer@example.com",        "endpoint": "203.0.113.9:51820",        "handshake": 1735732800000,        "inboundId": 1,        "interface": "awg1",        "online": true,        "tag": "inbound-51820",        "up": 1048576      }    ],    "running": true  }}
POST
/panel/api/server/importDB

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Request Body

multipart/form-data
  1. body
db*unknown

Database backup or migration file to upload.

keepHostSettings?boolean

Keep this machine's addresses, certificates and node identity. Default true.

Defaulttrue

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/importDB' \  -F 'db=null'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
POST
/panel/api/server/getNewEchCert

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Request Body

application/x-www-form-urlencoded
  1. body
sni*string

Server Name Indication to generate the ECH config for.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/getNewEchCert' \  -H 'Content-Type: application/x-www-form-urlencoded' \  -d 'sni=string'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}
POST
/panel/api/server/getCertHash

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Request Body

application/x-www-form-urlencoded
  1. body
certFile*string

Path to a certificate file on the server. Takes precedence over certContent.

Match.*\S.*
certContent?string

Inline PEM (or DER) certificate content, used when certFile is empty.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/getCertHash' \  -H 'Content-Type: application/x-www-form-urlencoded' \  -d 'certFile=string'
Example Response200
{  "success": true,  "obj": [    "e8e2d3..."  ]}
POST
/panel/api/server/getRemoteCertHash

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Request Body

application/x-www-form-urlencoded
  1. body
server*string

Remote server as domain or domain:port (default port 443), e.g. cloudflare-dns.com.

allowPrivate?boolean

Ping a private/internal/loopback server (LAN, Docker service name). Default false (SSRF guard blocks it and the error response sets obj.privateTarget=true).

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/getRemoteCertHash' \  -H 'Content-Type: application/x-www-form-urlencoded' \  -d 'server=string'
Example Response200
{  "success": true,  "obj": [    "e8e2d3..."  ]}
POST
/panel/api/server/scanRealityTarget

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Request Body

application/x-www-form-urlencoded
  1. body
target*string

Candidate target as host or host:port (default port 443), e.g. www.cloudflare.com:443.

sni?string

SNI the handshake sends and the certificate is verified against (the inbound serverNames). Defaults to the target host, which a fronting proxy answers with its default certificate.

xver?integer

PROXY protocol version the target expects (matches the inbound xver). 0 = none.

allowPrivate?boolean

Probe a private/internal/loopback target (LAN, Docker service name). Default false (SSRF guard blocks it and the response sets privateTarget=true).

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?
Example Request
curl -X POST 'https://example.com/panel/api/server/scanRealityTarget' \  -H 'Content-Type: application/x-www-form-urlencoded' \  -d 'target=string'
Example Response200
{  "success": true,  "obj": {    "alpn": "h2",    "certChainBytes": 3427,    "certChainValid": true,    "certIssuer": "Google Trust Services",    "certSubject": "cloudflare.com",    "certValid": true,    "curveID": "X25519",    "feasible": true,    "h2": true,    "host": "www.cloudflare.com",    "ip": "104.16.124.96",    "latencyMs": 180,    "notAfter": "2026-08-01T00:00:00Z",    "port": 443,    "privateTarget": false,    "reason": "",    "serverNames": [      ""    ],    "target": "www.cloudflare.com:443",    "tls13": true,    "tlsVersion": "1.3",    "x25519": true  }}
POST
/panel/api/server/scanRealityTargets

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Request Body

application/x-www-form-urlencoded
  1. body
targets?string

Optional comma-separated tokens: domain[:port], IP[:port], or CIDR (e.g. 104.16.0.0/24). When omitted, the realityScanCandidates setting is probed (the built-in seed list if that setting is empty).

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?array<>
Example Request
curl -X POST 'https://example.com/panel/api/server/scanRealityTargets' \  -H 'Content-Type: application/x-www-form-urlencoded' \  -d ''
Example Response200
{  "success": true,  "obj": [    {      "alpn": "h2",      "certChainBytes": 3427,      "certChainValid": true,      "certIssuer": "Google Trust Services",      "certSubject": "cloudflare.com",      "certValid": true,      "curveID": "X25519",      "feasible": true,      "h2": true,      "host": "www.cloudflare.com",      "ip": "104.16.124.96",      "latencyMs": 180,      "notAfter": "2026-08-01T00:00:00Z",      "port": 443,      "privateTarget": false,      "reason": "",      "serverNames": [        ""      ],      "target": "www.cloudflare.com:443",      "tls13": true,      "tlsVersion": "1.3",      "x25519": true    }  ]}
GET
/panel/api/server/clientIps

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?array<>
Example Request
curl -X GET 'https://example.com/panel/api/server/clientIps'
Example Response200
{  "success": true,  "obj": [    {      "clientEmail": "",      "id": 0,      "ips": null    }  ]}
POST
/panel/api/server/clientIps

Authorization

headerAuthorizationBearer <token>

Scoped API token from Settings → Security → API Token. Send as Authorization: Bearer <token>.

Request Body

application/json
  1. body
[index: integer]?

Response Body

Successful response

application/json
  1. response
success?boolean
msg?string
obj?unknown
Example Request
curl -X POST 'https://example.com/panel/api/server/clientIps' \  -H 'Content-Type: application/json' \  -d '[  {    "clientEmail": "string",    "ips": [      {        "ip": "string",        "timestamp": 0      }    ]  }]'
Example Response200
{  "success": true,  "msg": "string",  "obj": null}