Skip to content

External panels ​

Connect other panels (3x-ui, s-ui...).

9 endpoints

GET /api/external-panels ​

List Panels

List connected external panels (3x-ui, s-ui and similar). Passwords are never returned.

Sudo admin only

Response 200 Successful Response · ExternalPanelResponse[]

Response fields
FieldTypeDescription
idinteger
namestring
kindstring
addressstring
panel_pathstring
scopeExternalPanelScope
enabledboolean
usernamestring
has_passwordboolean
has_tokenboolean
sync_intervalinteger
liveboolean
count_trafficboolean
auto_provisionboolean
prov_configobject
last_syncstring (date-time)
last_errorstring
created_atstring (date-time)
json
[
  {
    "id": 0,
    "name": "string",
    "kind": "string",
    "address": "string",
    "panel_path": "string",
    "scope": {
      "admins": [],
      "groups": []
    },
    "enabled": false,
    "username": "",
    "has_password": false,
    "has_token": false,
    "sync_interval": 0,
    "live": false,
    "count_traffic": false,
    "auto_provision": false,
    "prov_config": {},
    "last_sync": "2026-01-01T00:00:00Z",
    "last_error": "string",
    "created_at": "2026-01-01T00:00:00Z"
  }
]

Errors: 401 Unauthorized, 403 Forbidden

bash
curl -X GET 'https://YOUR-PANEL/api/external-panels' \
  -H 'Authorization: Bearer $TOKEN'

POST /api/external-panels ​

Create Panel

Connect an external panel. Its login is stored encrypted.

Sudo admin only

Request body application/json · ExternalPanelCreate

FieldTypeRequiredDescription
namestringyes
kindstringyes
addressstringyes
panel_pathstringnoDefault: "/".
scopeExternalPanelScopenoDefault: {"admins": [], "groups": []}.
enabledbooleannoDefault: true.
sync_intervalintegernoDefault: 0.
livebooleannoDefault: false.
count_trafficbooleannoDefault: false.
usernamestringno
passwordstringno
tokenstringno
json
{
  "name": "string",
  "kind": "string",
  "address": "string",
  "panel_path": "/",
  "scope": {
    "admins": [],
    "groups": []
  },
  "enabled": true,
  "sync_interval": 0,
  "live": false,
  "count_traffic": false,
  "username": "",
  "password": "",
  "token": "string"
}

Response 200 Successful Response · ExternalPanelResponse

Response fields
FieldTypeDescription
idinteger
namestring
kindstring
addressstring
panel_pathstring
scopeExternalPanelScope
enabledboolean
usernamestring
has_passwordboolean
has_tokenboolean
sync_intervalinteger
liveboolean
count_trafficboolean
auto_provisionboolean
prov_configobject
last_syncstring (date-time)
last_errorstring
created_atstring (date-time)
json
{
  "id": 0,
  "name": "string",
  "kind": "string",
  "address": "string",
  "panel_path": "string",
  "scope": {
    "admins": [],
    "groups": []
  },
  "enabled": false,
  "username": "",
  "has_password": false,
  "has_token": false,
  "sync_interval": 0,
  "live": false,
  "count_traffic": false,
  "auto_provision": false,
  "prov_config": {},
  "last_sync": "2026-01-01T00:00:00Z",
  "last_error": "string",
  "created_at": "2026-01-01T00:00:00Z"
}

Errors: 401 Unauthorized, 403 Forbidden, 409 Conflict

bash
curl -X POST 'https://YOUR-PANEL/api/external-panels' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"name": "string", "kind": "string", "address": "string", "panel_path": "/", "scope": {"admins": [], "groups": []}, "enabled": true, "sync_interval": 0, "live": false, "count_traffic": false, "username": "", "password": "", "token": "string"}'

POST /api/external-panels/test ​

Test Unsaved

Try to log in with the given (unsaved) settings and count inbounds.

Sudo admin only

Request body application/json · ExternalPanelCreate

FieldTypeRequiredDescription
namestringyes
kindstringyes
addressstringyes
panel_pathstringnoDefault: "/".
scopeExternalPanelScopenoDefault: {"admins": [], "groups": []}.
enabledbooleannoDefault: true.
sync_intervalintegernoDefault: 0.
livebooleannoDefault: false.
count_trafficbooleannoDefault: false.
usernamestringno
passwordstringno
tokenstringno
json
{
  "name": "string",
  "kind": "string",
  "address": "string",
  "panel_path": "/",
  "scope": {
    "admins": [],
    "groups": []
  },
  "enabled": true,
  "sync_interval": 0,
  "live": false,
  "count_traffic": false,
  "username": "",
  "password": "",
  "token": "string"
}

Response 200 Successful Response

Errors: 401 Unauthorized, 403 Forbidden

bash
curl -X POST 'https://YOUR-PANEL/api/external-panels/test' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"name": "string", "kind": "string", "address": "string", "panel_path": "/", "scope": {"admins": [], "groups": []}, "enabled": true, "sync_interval": 0, "live": false, "count_traffic": false, "username": "", "password": "", "token": "string"}'

PUT /api/external-panels/{panel_id} ​

Modify Panel

Change an external panel's connection details.

Sudo admin only

Parameters

NameInTypeRequiredDescription
panel_idpathintegeryes

Request body application/json · ExternalPanelModify

FieldTypeRequiredDescription
namestringno
kindstringno
addressstringno
panel_pathstringno
scopeExternalPanelScopeno
enabledbooleanno
usernamestringno
passwordstringno
tokenstringno
sync_intervalintegerno
livebooleanno
count_trafficbooleanno
json
{
  "name": "string",
  "kind": "string",
  "address": "string",
  "panel_path": "string",
  "scope": {
    "admins": [],
    "groups": []
  },
  "enabled": false,
  "username": "string",
  "password": "string",
  "token": "string",
  "sync_interval": 0,
  "live": false,
  "count_traffic": false
}

Response 200 Successful Response · ExternalPanelResponse

Response fields
FieldTypeDescription
idinteger
namestring
kindstring
addressstring
panel_pathstring
scopeExternalPanelScope
enabledboolean
usernamestring
has_passwordboolean
has_tokenboolean
sync_intervalinteger
liveboolean
count_trafficboolean
auto_provisionboolean
prov_configobject
last_syncstring (date-time)
last_errorstring
created_atstring (date-time)
json
{
  "id": 0,
  "name": "string",
  "kind": "string",
  "address": "string",
  "panel_path": "string",
  "scope": {
    "admins": [],
    "groups": []
  },
  "enabled": false,
  "username": "",
  "has_password": false,
  "has_token": false,
  "sync_interval": 0,
  "live": false,
  "count_traffic": false,
  "auto_provision": false,
  "prov_config": {},
  "last_sync": "2026-01-01T00:00:00Z",
  "last_error": "string",
  "created_at": "2026-01-01T00:00:00Z"
}

Errors: 401 Unauthorized, 403 Forbidden

bash
curl -X PUT 'https://YOUR-PANEL/api/external-panels/<panel_id>' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"name": "string", "kind": "string", "address": "string", "panel_path": "string", "scope": {"admins": [], "groups": []}, "enabled": false, "username": "string", "password": "string", "token": "string", "sync_interval": 0, "live": false, "count_traffic": false}'

DELETE /api/external-panels/{panel_id} ​

Delete Panel

Remove an external panel connection.

Sudo admin only

Parameters

NameInTypeRequiredDescription
panel_idpathintegeryes

Response 200 Successful Response

Errors: 401 Unauthorized, 403 Forbidden

bash
curl -X DELETE 'https://YOUR-PANEL/api/external-panels/<panel_id>' \
  -H 'Authorization: Bearer $TOKEN'

GET /api/external-panels/{panel_id}/inbounds ​

Panel Inbounds

List the inbounds of an external panel.

Sudo admin only

Parameters

NameInTypeRequiredDescription
panel_idpathintegeryes

Response 200 Successful Response

Errors: 401 Unauthorized, 403 Forbidden

bash
curl -X GET 'https://YOUR-PANEL/api/external-panels/<panel_id>/inbounds' \
  -H 'Authorization: Bearer $TOKEN'

POST /api/external-panels/{panel_id}/provision ​

Provision Users

Create the scoped Alexen users AS CLIENTS on the external panel's chosen inbound(s). We let the panel assign the uuids and give each client a deterministic subId; the user's subscription then pulls the panel's OWN share links for that subId (always valid).

Sudo admin only

Parameters

NameInTypeRequiredDescription
panel_idpathintegeryes

Request body application/json · ProvisionOptions

FieldTypeRequiredDescription
inbound_idsobject[]noDefault: [].
scope_allbooleannoDefault: false.
scope_adminsobject[]noDefault: [].
name_modestringnoDefault: "original".
name_templatestringno
autobooleannoDefault: false.
port_mapobjectnoDefault: {}.
host_overstringno
json
{
  "inbound_ids": [],
  "scope_all": false,
  "scope_admins": [],
  "name_mode": "original",
  "name_template": "",
  "auto": false,
  "port_map": {},
  "host_over": ""
}

Response 200 Successful Response

Errors: 401 Unauthorized, 403 Forbidden

bash
curl -X POST 'https://YOUR-PANEL/api/external-panels/<panel_id>/provision' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"inbound_ids": [], "scope_all": false, "scope_admins": [], "name_mode": "original", "name_template": "", "auto": false, "port_map": {}, "host_over": ""}'

GET /api/external-panels/{panel_id}/stats ​

Panel Stats

Live traffic / online for the panel (poll this for near-real-time display).

Sudo admin only

Parameters

NameInTypeRequiredDescription
panel_idpathintegeryes

Response 200 Successful Response

Errors: 401 Unauthorized, 403 Forbidden

bash
curl -X GET 'https://YOUR-PANEL/api/external-panels/<panel_id>/stats' \
  -H 'Authorization: Bearer $TOKEN'

POST /api/external-panels/{panel_id}/test ​

Test Panel

Test the connection to an external panel.

Sudo admin only

Parameters

NameInTypeRequiredDescription
panel_idpathintegeryes

Response 200 Successful Response

Errors: 401 Unauthorized, 403 Forbidden

bash
curl -X POST 'https://YOUR-PANEL/api/external-panels/<panel_id>/test' \
  -H 'Authorization: Bearer $TOKEN'

Alexen v2.3.14 · 204 API endpoints