Skip to content

Settings ​

Panel, subscription, host and miscellaneous settings.

32 endpoints

GET /api/admin/{name}/sub-profile ​

Read Admin Sub Profile

an admin's own subscription domain, texts and external configs

Sudo admin only

Parameters

NameInTypeRequiredDescription
namepathstringyes

Response 200 Successful Response · AdminSubProfile

Response fields
FieldTypeDescription
url_prefixstring
suffixstring
sub_pathstring
modestring
templatesAdminSubTemplates
external_enabledboolean
external_labelstring
external_self_editboolean
external_include_generalboolean
external_countinteger
examplestring
json
{
  "url_prefix": "",
  "suffix": "string",
  "sub_path": "string",
  "mode": "string",
  "templates": {
    "default_template": "",
    "expired_template": "",
    "disabled_template": "",
    "limited_template": "",
    "near_expire_template": ""
  },
  "external_enabled": true,
  "external_label": "",
  "external_self_edit": false,
  "external_include_general": true,
  "external_count": 0,
  "example": ""
}

Errors: 401 Unauthorized

bash
curl -X GET 'https://YOUR-PANEL/api/admin/<name>/sub-profile' \
  -H 'Authorization: Bearer $TOKEN'

PUT /api/admin/{name}/sub-profile ​

Update Admin Sub Profile

Set an admin's own subscription profile: domain, texts and external configs.

Sudo admin only

Parameters

NameInTypeRequiredDescription
namepathstringyes

Request body application/json · AdminSubProfile

FieldTypeRequiredDescription
url_prefixstringno
suffixstringno
sub_pathstringno
modestringno
templatesAdminSubTemplatesnoDefault: {"default_template": "", "expired_template": "", "disabled_template": "", "limited_template": "", "near_expire_template": ""}.
external_enabledbooleannoDefault: true.
external_labelstringno
external_self_editbooleannoDefault: false.
external_include_generalbooleannoDefault: true.
external_countintegernoDefault: 0.
examplestringno
json
{
  "url_prefix": "",
  "suffix": "string",
  "sub_path": "string",
  "mode": "string",
  "templates": {
    "default_template": "",
    "expired_template": "",
    "disabled_template": "",
    "limited_template": "",
    "near_expire_template": ""
  },
  "external_enabled": true,
  "external_label": "",
  "external_self_edit": false,
  "external_include_general": true,
  "external_count": 0,
  "example": ""
}

Response 200 Successful Response · AdminSubProfile

Response fields
FieldTypeDescription
url_prefixstring
suffixstring
sub_pathstring
modestring
templatesAdminSubTemplates
external_enabledboolean
external_labelstring
external_self_editboolean
external_include_generalboolean
external_countinteger
examplestring
json
{
  "url_prefix": "",
  "suffix": "string",
  "sub_path": "string",
  "mode": "string",
  "templates": {
    "default_template": "",
    "expired_template": "",
    "disabled_template": "",
    "limited_template": "",
    "near_expire_template": ""
  },
  "external_enabled": true,
  "external_label": "",
  "external_self_edit": false,
  "external_include_general": true,
  "external_count": 0,
  "example": ""
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/admin/<name>/sub-profile' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"url_prefix": "", "suffix": "string", "sub_path": "string", "mode": "string", "templates": {"default_template": "", "expired_template": "", "disabled_template": "", "limited_template": "", "near_expire_template": ""}, "external_enabled": true, "external_label": "", "external_self_edit": false, "external_include_general": true, "external_count": 0, "example": ""}'

GET /api/admins/sub-profiles ​

Admins Sub Profiles

which admins have their own domain, texts or external configs (for the admins list)

Sudo admin only

Response 200 Successful Response

Errors: 401 Unauthorized

bash
curl -X GET 'https://YOUR-PANEL/api/admins/sub-profiles' \
  -H 'Authorization: Bearer $TOKEN'

GET /api/brand ​

Read Brand

the panel's brand (name, vendor, support). Public: the login page shows it before sign-in.

Public

Response 200 Successful Response · BrandSettings

Response fields
FieldTypeDescription
namestring
vendorstring
support_telegramstring
support_urlstring
json
{
  "name": "",
  "vendor": "",
  "support_telegram": "",
  "support_url": ""
}

Errors: 401 Unauthorized

bash
curl -X GET 'https://YOUR-PANEL/api/brand'

PUT /api/brand ​

Update Brand

Change the panel's brand: the name shown in the sidebar, footer and subscription page, the company name and the support contact.

Sudo admin only

Request body application/json · BrandSettings

FieldTypeRequiredDescription
namestringno
vendorstringno
support_telegramstringno
support_urlstringno
json
{
  "name": "",
  "vendor": "",
  "support_telegram": "",
  "support_url": ""
}

Response 200 Successful Response · BrandSettings

Response fields
FieldTypeDescription
namestring
vendorstring
support_telegramstring
support_urlstring
json
{
  "name": "",
  "vendor": "",
  "support_telegram": "",
  "support_url": ""
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/brand' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"name": "", "vendor": "", "support_telegram": "", "support_url": ""}'

GET /api/decorations ​

Get Decorations

seasonal decoration flags, readable by any admin so the UI can render them

Any admin

Response 200 Successful Response · Decorations

Response fields
FieldTypeDescription
newyearboolean
json
{
  "newyear": false
}

Errors: 401 Unauthorized

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

PUT /api/decorations ​

Set Decorations

Turn the festive decorations (for example the New Year theme) on or off for the panel and the subscription pages.

Sudo admin only

Request body application/json · Decorations

FieldTypeRequiredDescription
newyearbooleannoDefault: false.
json
{
  "newyear": false
}

Response 200 Successful Response · Decorations

Response fields
FieldTypeDescription
newyearboolean
json
{
  "newyear": false
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/decorations' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"newyear": false}'

GET /api/external-configs ​

Read External Configs

Extra config links added to every link-based subscription, and the order of links

Sudo admin only

Response 200 Successful Response · ExternalSettings-Output

Response fields
FieldTypeDescription
configsExternalConfig[]
adminsobject
generated_sortstring
external_sortstring
protocol_orderstring[]
test_urlstring
json
{
  "configs": [],
  "admins": {},
  "generated_sort": "default",
  "external_sort": "manual",
  "protocol_order": [
    "vless-reality",
    "vless-tcp",
    "vless-ws",
    "vless-grpc",
    "vless-xhttp",
    "vless-httpupgrade",
    "vmess",
    "trojan",
    "ss",
    "hysteria2",
    "tuic",
    "wireguard"
  ],
  "test_url": "https://www.gstatic.com/generate_204"
}

Errors: 401 Unauthorized

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

PUT /api/external-configs ​

Update External Configs

Set extra config links appended to every link-based subscription, and the order of links.

Sudo admin only

Request body application/json · ExternalSettings-Input

FieldTypeRequiredDescription
configsExternalConfig[]noDefault: [].
adminsobjectnoDefault: {}.
generated_sortstringnoDefault: "default".
external_sortstringnoDefault: "manual".
protocol_orderstring[]noDefault: ["vless-reality", "vless-tcp", "vless-ws", "vless-grpc", "vless-xhttp", "vless-httpupgrade", "vmess", "trojan", "ss", "hysteria2", "tuic", "wireguard"].
test_urlstringnoDefault: "https://www.gstatic.com/generate_204".
json
{
  "configs": [],
  "admins": {},
  "generated_sort": "default",
  "external_sort": "manual",
  "protocol_order": [
    "vless-reality",
    "vless-tcp",
    "vless-ws",
    "vless-grpc",
    "vless-xhttp",
    "vless-httpupgrade",
    "vmess",
    "trojan",
    "ss",
    "hysteria2",
    "tuic",
    "wireguard"
  ],
  "test_url": "https://www.gstatic.com/generate_204"
}

Response 200 Successful Response · ExternalSettings-Output

Response fields
FieldTypeDescription
configsExternalConfig[]
adminsobject
generated_sortstring
external_sortstring
protocol_orderstring[]
test_urlstring
json
{
  "configs": [],
  "admins": {},
  "generated_sort": "default",
  "external_sort": "manual",
  "protocol_order": [
    "vless-reality",
    "vless-tcp",
    "vless-ws",
    "vless-grpc",
    "vless-xhttp",
    "vless-httpupgrade",
    "vmess",
    "trojan",
    "ss",
    "hysteria2",
    "tuic",
    "wireguard"
  ],
  "test_url": "https://www.gstatic.com/generate_204"
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/external-configs' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"configs": [], "admins": {}, "generated_sort": "default", "external_sort": "manual", "protocol_order": ["vless-reality", "vless-tcp", "vless-ws", "vless-grpc", "vless-xhttp", "vless-httpupgrade", "vmess", "trojan", "ss", "hysteria2", "tuic", "wireguard"], "test_url": "https://www.gstatic.com/generate_204"}'

GET /api/external-configs/mine ​

Read Own External

an admin's own external configs (when the sudo admin lets it edit them)

Any admin

Response 200 Successful Response · OwnExternal

Response fields
FieldTypeDescription
labelstring
enabledboolean
configsExternalConfig[]
json
{
  "label": "",
  "enabled": true,
  "configs": []
}

Errors: 401 Unauthorized

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

PUT /api/external-configs/mine ​

Update Own External

Set the signed-in admin's own external configs.

Any admin

Request body application/json · OwnExternal

FieldTypeRequiredDescription
labelstringno
enabledbooleannoDefault: true.
configsExternalConfig[]noDefault: [].
json
{
  "label": "",
  "enabled": true,
  "configs": []
}

Response 200 Successful Response · OwnExternal

Response fields
FieldTypeDescription
labelstring
enabledboolean
configsExternalConfig[]
json
{
  "label": "",
  "enabled": true,
  "configs": []
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/external-configs/mine' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"label": "", "enabled": true, "configs": []}'

POST /api/external-configs/preview ​

Preview External Configs

What a user's link subscription would look like with these (unsaved) settings

Sudo admin only

Parameters

NameInTypeRequiredDescription
usernamequerystringno

Request body application/json · ExternalSettings-Input

FieldTypeRequiredDescription
configsExternalConfig[]noDefault: [].
adminsobjectnoDefault: {}.
generated_sortstringnoDefault: "default".
external_sortstringnoDefault: "manual".
protocol_orderstring[]noDefault: ["vless-reality", "vless-tcp", "vless-ws", "vless-grpc", "vless-xhttp", "vless-httpupgrade", "vmess", "trojan", "ss", "hysteria2", "tuic", "wireguard"].
test_urlstringnoDefault: "https://www.gstatic.com/generate_204".
json
{
  "configs": [],
  "admins": {},
  "generated_sort": "default",
  "external_sort": "manual",
  "protocol_order": [
    "vless-reality",
    "vless-tcp",
    "vless-ws",
    "vless-grpc",
    "vless-xhttp",
    "vless-httpupgrade",
    "vmess",
    "trojan",
    "ss",
    "hysteria2",
    "tuic",
    "wireguard"
  ],
  "test_url": "https://www.gstatic.com/generate_204"
}

Response 200 Successful Response · ExternalPreview

Response fields
FieldTypeDescription
usernamestring
itemsExternalPreviewItem[]
json
{
  "username": "string",
  "items": [
    {
      "remark": "string",
      "link": "string",
      "source": "string"
    }
  ]
}

Errors: 401 Unauthorized

bash
curl -X POST 'https://YOUR-PANEL/api/external-configs/preview' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"configs": [], "admins": {}, "generated_sort": "default", "external_sort": "manual", "protocol_order": ["vless-reality", "vless-tcp", "vless-ws", "vless-grpc", "vless-xhttp", "vless-httpupgrade", "vmess", "trojan", "ss", "hysteria2", "tuic", "wireguard"], "test_url": "https://www.gstatic.com/generate_204"}'

GET /api/external-configs/sources ​

External Sources Status

Last fetch/test result of every subscription source

Any admin

Response 200 Successful Response · SourceStatus[]

Response fields
FieldTypeDescription
idstring
runningboolean
updated_atinteger
errorstring
statsobject
itemsobject[]
json
[
  {
    "id": "string",
    "running": false,
    "updated_at": 0,
    "error": "",
    "stats": {},
    "items": []
  }
]

Errors: 401 Unauthorized

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

POST /api/external-configs/sources/{source_id}/refresh ​

Refresh External Source

Fetch, test and rename one source now (runs in the background)

Any admin

Parameters

NameInTypeRequiredDescription
source_idpathstringyes

Response 200 Successful Response

Errors: 401 Unauthorized

bash
curl -X POST 'https://YOUR-PANEL/api/external-configs/sources/<source_id>/refresh' \
  -H 'Authorization: Bearer $TOKEN'

GET /api/ip-limit-settings ​

Read Ip Limit Settings

Global IP-limit switch. Off = observe only (show connected IPs, block nothing).

Sudo admin only

Response 200 Successful Response · IPLimitSettings

Response fields
FieldTypeDescription
enabledboolean
json
{
  "enabled": true
}

Errors: 401 Unauthorized

bash
curl -X GET 'https://YOUR-PANEL/api/ip-limit-settings' \
  -H 'Authorization: Bearer $TOKEN'

PUT /api/ip-limit-settings ​

Update Ip Limit Settings

Turn the global IP limit on or off. Off = observe only (connected IPs are shown, nothing is blocked).

Sudo admin only

Request body application/json · IPLimitSettings

FieldTypeRequiredDescription
enabledbooleannoDefault: true.
json
{
  "enabled": true
}

Response 200 Successful Response · IPLimitSettings

Response fields
FieldTypeDescription
enabledboolean
json
{
  "enabled": true
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/ip-limit-settings' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"enabled": true}'

GET /api/json-sub-settings ​

Read Json Sub Settings

JSON subscription: clients, direct sites, external configs, the auto (balancer) config

Sudo admin only

Response 200 Successful Response · JsonSubSettings

Response fields
FieldTypeDescription
clientsstring[]
direct_domainsstring[]
direct_ipsstring[]
block_adsboolean
include_externalboolean
balancerboolean
balancer_externalboolean
balancer_namestring
balancer_strategystring
balancer_positionstring
probe_urlstring
probe_intervalstring
json
{
  "clients": [],
  "direct_domains": [],
  "direct_ips": [],
  "block_ads": false,
  "include_external": true,
  "balancer": false,
  "balancer_external": true,
  "balancer_name": "⚡ Auto (fastest)",
  "balancer_strategy": "leastPing",
  "balancer_position": "top",
  "probe_url": "https://www.gstatic.com/generate_204",
  "probe_interval": "1m"
}

Errors: 401 Unauthorized

bash
curl -X GET 'https://YOUR-PANEL/api/json-sub-settings' \
  -H 'Authorization: Bearer $TOKEN'

PUT /api/json-sub-settings ​

Update Json Sub Settings

Change JSON subscription settings: clients, direct sites, external configs and the auto (balancer) config.

Sudo admin only

Request body application/json · JsonSubSettings

FieldTypeRequiredDescription
clientsstring[]noDefault: [].
direct_domainsstring[]noDefault: [].
direct_ipsstring[]noDefault: [].
block_adsbooleannoDefault: false.
include_externalbooleannoDefault: true.
balancerbooleannoDefault: false.
balancer_externalbooleannoDefault: true.
balancer_namestringnoDefault: "\u26a1 Auto (fastest)".
balancer_strategystringnoDefault: "leastPing".
balancer_positionstringnoDefault: "top".
probe_urlstringnoDefault: "https://www.gstatic.com/generate_204".
probe_intervalstringnoDefault: "1m".
json
{
  "clients": [],
  "direct_domains": [],
  "direct_ips": [],
  "block_ads": false,
  "include_external": true,
  "balancer": false,
  "balancer_external": true,
  "balancer_name": "⚡ Auto (fastest)",
  "balancer_strategy": "leastPing",
  "balancer_position": "top",
  "probe_url": "https://www.gstatic.com/generate_204",
  "probe_interval": "1m"
}

Response 200 Successful Response · JsonSubSettings

Response fields
FieldTypeDescription
clientsstring[]
direct_domainsstring[]
direct_ipsstring[]
block_adsboolean
include_externalboolean
balancerboolean
balancer_externalboolean
balancer_namestring
balancer_strategystring
balancer_positionstring
probe_urlstring
probe_intervalstring
json
{
  "clients": [],
  "direct_domains": [],
  "direct_ips": [],
  "block_ads": false,
  "include_external": true,
  "balancer": false,
  "balancer_external": true,
  "balancer_name": "⚡ Auto (fastest)",
  "balancer_strategy": "leastPing",
  "balancer_position": "top",
  "probe_url": "https://www.gstatic.com/generate_204",
  "probe_interval": "1m"
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/json-sub-settings' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"clients": [], "direct_domains": [], "direct_ips": [], "block_ads": false, "include_external": true, "balancer": false, "balancer_external": true, "balancer_name": "⚡ Auto (fastest)", "balancer_strategy": "leastPing", "balancer_position": "top", "probe_url": "https://www.gstatic.com/generate_204", "probe_interval": "1m"}'

GET /api/sub-domain ​

Read Sub Domain

Which address, path and last part the subscription links use

Sudo admin only

Response 200 Successful Response · DomainState

Response fields
FieldTypeDescription
settingsDomainSettings
env_url_prefixstring
env_pathstring
examplestring
json
{
  "settings": {
    "url_prefix": "",
    "path": "",
    "suffix": "",
    "mode": "normal",
    "admins": {}
  },
  "env_url_prefix": "string",
  "env_path": "string",
  "example": "string"
}

Errors: 401 Unauthorized

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

PUT /api/sub-domain ​

Update Sub Domain

Change the address, path and last part used in subscription links.

Sudo admin only

Request body application/json · DomainSettings

FieldTypeRequiredDescription
url_prefixstringno
pathstringno
suffixstringno
modestringnoDefault: "normal".
adminsobjectnoDefault: {}.
json
{
  "url_prefix": "",
  "path": "",
  "suffix": "",
  "mode": "normal",
  "admins": {}
}

Response 200 Successful Response · DomainState

Response fields
FieldTypeDescription
settingsDomainSettings
env_url_prefixstring
env_pathstring
examplestring
json
{
  "settings": {
    "url_prefix": "",
    "path": "",
    "suffix": "",
    "mode": "normal",
    "admins": {}
  },
  "env_url_prefix": "string",
  "env_path": "string",
  "example": "string"
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/sub-domain' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"url_prefix": "", "path": "", "suffix": "", "mode": "normal", "admins": {}}'

POST /api/sub-domain/example ​

Example Sub Domain

the link a user would get with these (unsaved) settings

Sudo admin only

Request body application/json · DomainSettings

FieldTypeRequiredDescription
url_prefixstringno
pathstringno
suffixstringno
modestringnoDefault: "normal".
adminsobjectnoDefault: {}.
json
{
  "url_prefix": "",
  "path": "",
  "suffix": "",
  "mode": "normal",
  "admins": {}
}

Response 200 Successful Response · DomainState

Response fields
FieldTypeDescription
settingsDomainSettings
env_url_prefixstring
env_pathstring
examplestring
json
{
  "settings": {
    "url_prefix": "",
    "path": "",
    "suffix": "",
    "mode": "normal",
    "admins": {}
  },
  "env_url_prefix": "string",
  "env_path": "string",
  "example": "string"
}

Errors: 401 Unauthorized

bash
curl -X POST 'https://YOUR-PANEL/api/sub-domain/example' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"url_prefix": "", "path": "", "suffix": "", "mode": "normal", "admins": {}}'

GET /api/sub-settings ​

Read Sub Settings

Subscription page settings: announcement, profile title and per-state metadata

Sudo admin only

Response 200 Successful Response · SubscriptionSettings

Response fields
FieldTypeDescription
default_templatestring
expired_templatestring
disabled_templatestring
limited_templatestring
near_expire_templatestring
near_expire_daysinteger
update_intervalinteger
device_limit_messagestring
sub_rate_limitinteger
fingerprint_devicesboolean
adminsobject
json
{
  "default_template": "",
  "expired_template": "",
  "disabled_template": "",
  "limited_template": "",
  "near_expire_template": "",
  "near_expire_days": 1,
  "update_interval": 0,
  "device_limit_message": "",
  "sub_rate_limit": 0,
  "fingerprint_devices": false,
  "admins": {}
}

Errors: 401 Unauthorized

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

PUT /api/sub-settings ​

Update Sub Settings

Change subscription settings (update interval, support/announce texts, rate limit and similar).

Sudo admin only

Request body application/json · SubscriptionSettings

FieldTypeRequiredDescription
default_templatestringno
expired_templatestringno
disabled_templatestringno
limited_templatestringno
near_expire_templatestringno
near_expire_daysintegernoDefault: 1.
update_intervalintegerno
device_limit_messagestringno
sub_rate_limitintegernoDefault: 0.
fingerprint_devicesbooleannoDefault: false.
adminsobjectnoDefault: {}.
json
{
  "default_template": "",
  "expired_template": "",
  "disabled_template": "",
  "limited_template": "",
  "near_expire_template": "",
  "near_expire_days": 1,
  "update_interval": 0,
  "device_limit_message": "",
  "sub_rate_limit": 0,
  "fingerprint_devices": false,
  "admins": {}
}

Response 200 Successful Response · SubscriptionSettings

Response fields
FieldTypeDescription
default_templatestring
expired_templatestring
disabled_templatestring
limited_templatestring
near_expire_templatestring
near_expire_daysinteger
update_intervalinteger
device_limit_messagestring
sub_rate_limitinteger
fingerprint_devicesboolean
adminsobject
json
{
  "default_template": "",
  "expired_template": "",
  "disabled_template": "",
  "limited_template": "",
  "near_expire_template": "",
  "near_expire_days": 1,
  "update_interval": 0,
  "device_limit_message": "",
  "sub_rate_limit": 0,
  "fingerprint_devices": false,
  "admins": {}
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/sub-settings' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"default_template": "", "expired_template": "", "disabled_template": "", "limited_template": "", "near_expire_template": "", "near_expire_days": 1, "update_interval": 0, "device_limit_message": "", "sub_rate_limit": 0, "fingerprint_devices": false, "admins": {}}'

GET /api/sub-webpage ​

Read Sub Webpage

What users see when they open their subscription link in a browser

Sudo admin only

Response 200 Successful Response · WebPageSettings-Output

Response fields
FieldTypeDescription
enabledboolean
titlestring
logo_urlstring
support_urlstring
accentstring
themestring
stylestring
default_langstring
languagesstring[]
happ_cryptboolean
show_linksboolean
show_qrboolean
sectionsSection[]
introobject
footerobject
textsobject
custom_cssstring
link_domainstring
show_devicesboolean
lock_on_device_limitboolean
appsobject
json
{
  "enabled": true,
  "title": "",
  "logo_url": "",
  "support_url": "",
  "accent": "#5b7cfa",
  "theme": "auto",
  "style": "soft",
  "default_lang": "auto",
  "languages": [
    "en",
    "tr",
    "tk",
    "ru",
    "fa",
    "zh"
  ],
  "happ_crypt": true,
  "show_links": true,
  "show_qr": true,
  "sections": [
    {
      "id": "announce",
      "enabled": true
    },
    {
      "id": "intro",
      "enabled": true
    },
    {
      "id": "user",
      "enabled": true
    },
    {
      "id": "devices",
      "enabled": true
    },
    {
      "id": "install",
      "enabled": true
    },
    {
      "id": "vpn",
      "enabled": true
    },
    {
      "id": "link",
      "enabled": true
    },
    {
      "id": "configs",
      "enabled": true
    }
  ],
  "intro": {},
  "footer": {},
  "texts": {},
  "custom_css": "",
  "link_domain": "",
  "show_devices": true,
  "lock_on_device_limit": true,
  "apps": {
    "key": [
      {
        "id": null,
        "name": null,
        "featured": null,
        "deeplink": null,
        "crypt": null,
        "install": null,
        "note": null
      }
    ]
  }
}

Errors: 401 Unauthorized

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

PUT /api/sub-webpage ​

Update Sub Webpage

Change what users see when they open their subscription link in a browser.

Sudo admin only

Request body application/json · WebPageSettings-Input

FieldTypeRequiredDescription
enabledbooleannoDefault: true.
titlestringno
logo_urlstringno
support_urlstringno
accentstringnoDefault: "#5b7cfa".
themestringnoDefault: "auto".
stylestringnoDefault: "soft".
default_langstringnoDefault: "auto".
languagesstring[]noDefault: ["en", "tr", "tk", "ru", "fa", "zh"].
happ_cryptbooleannoDefault: true.
show_linksbooleannoDefault: true.
show_qrbooleannoDefault: true.
sectionsSection[]noDefault: [{"id": "announce", "enabled": true}, {"id": "intro", "enabled": true}, {"id": "user", "enabled": true}, {"id": "devices", "enabled": true}, {"id": "install", "enabled": true}, {"id": "vpn", "enabled": true}, {"id": "link", "enabled": true}, {"id": "configs", "enabled": true}].
introobjectnoDefault: {}.
footerobjectnoDefault: {}.
textsobjectnoDefault: {}.
custom_cssstringno
link_domainstringno
show_devicesbooleannoDefault: true.
lock_on_device_limitbooleannoDefault: true.
appsobjectno
json
{
  "enabled": true,
  "title": "",
  "logo_url": "",
  "support_url": "",
  "accent": "#5b7cfa",
  "theme": "auto",
  "style": "soft",
  "default_lang": "auto",
  "languages": [
    "en",
    "tr",
    "tk",
    "ru",
    "fa",
    "zh"
  ],
  "happ_crypt": true,
  "show_links": true,
  "show_qr": true,
  "sections": [
    {
      "id": "announce",
      "enabled": true
    },
    {
      "id": "intro",
      "enabled": true
    },
    {
      "id": "user",
      "enabled": true
    },
    {
      "id": "devices",
      "enabled": true
    },
    {
      "id": "install",
      "enabled": true
    },
    {
      "id": "vpn",
      "enabled": true
    },
    {
      "id": "link",
      "enabled": true
    },
    {
      "id": "configs",
      "enabled": true
    }
  ],
  "intro": {},
  "footer": {},
  "texts": {},
  "custom_css": "",
  "link_domain": "",
  "show_devices": true,
  "lock_on_device_limit": true,
  "apps": {
    "key": [
      {
        "id": null,
        "name": null,
        "featured": null,
        "deeplink": null,
        "crypt": null,
        "install": null,
        "note": null
      }
    ]
  }
}

Response 200 Successful Response · WebPageSettings-Output

Response fields
FieldTypeDescription
enabledboolean
titlestring
logo_urlstring
support_urlstring
accentstring
themestring
stylestring
default_langstring
languagesstring[]
happ_cryptboolean
show_linksboolean
show_qrboolean
sectionsSection[]
introobject
footerobject
textsobject
custom_cssstring
link_domainstring
show_devicesboolean
lock_on_device_limitboolean
appsobject
json
{
  "enabled": true,
  "title": "",
  "logo_url": "",
  "support_url": "",
  "accent": "#5b7cfa",
  "theme": "auto",
  "style": "soft",
  "default_lang": "auto",
  "languages": [
    "en",
    "tr",
    "tk",
    "ru",
    "fa",
    "zh"
  ],
  "happ_crypt": true,
  "show_links": true,
  "show_qr": true,
  "sections": [
    {
      "id": "announce",
      "enabled": true
    },
    {
      "id": "intro",
      "enabled": true
    },
    {
      "id": "user",
      "enabled": true
    },
    {
      "id": "devices",
      "enabled": true
    },
    {
      "id": "install",
      "enabled": true
    },
    {
      "id": "vpn",
      "enabled": true
    },
    {
      "id": "link",
      "enabled": true
    },
    {
      "id": "configs",
      "enabled": true
    }
  ],
  "intro": {},
  "footer": {},
  "texts": {},
  "custom_css": "",
  "link_domain": "",
  "show_devices": true,
  "lock_on_device_limit": true,
  "apps": {
    "key": [
      {
        "id": null,
        "name": null,
        "featured": null,
        "deeplink": null,
        "crypt": null,
        "install": null,
        "note": null
      }
    ]
  }
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/sub-webpage' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{ ... }'

GET /api/sub-webpage/default-apps ​

Read Sub Webpage Default Apps

the built-in app catalog, per platform

Sudo admin only

Response 200 Successful Response

Errors: 401 Unauthorized

bash
curl -X GET 'https://YOUR-PANEL/api/sub-webpage/default-apps' \
  -H 'Authorization: Bearer $TOKEN'

GET /api/sub-webpage/defaults ​

Read Sub Webpage Defaults

the built-in app catalog and the page's own texts per language

Sudo admin only

Response 200 Successful Response

Errors: 401 Unauthorized

bash
curl -X GET 'https://YOUR-PANEL/api/sub-webpage/defaults' \
  -H 'Authorization: Bearer $TOKEN'

POST /api/sub-webpage/preview ​

Preview Sub Webpage

the page as a user would see it, with settings that aren't saved yet

Sudo admin only

Request body application/json · WebPagePreview

FieldTypeRequiredDescription
settingsWebPageSettings-Inputyes
usernamestringno
json
{
  "settings": {
    "enabled": true,
    "title": "",
    "logo_url": "",
    "support_url": "",
    "accent": "#5b7cfa",
    "theme": "auto",
    "style": "soft",
    "default_lang": "auto",
    "languages": [
      "en",
      "tr",
      "tk",
      "ru",
      "fa",
      "zh"
    ],
    "happ_crypt": true,
    "show_links": true,
    "show_qr": true,
    "sections": [
      {
        "id": "announce",
        "enabled": true
      },
      {
        "id": "intro",
        "enabled": true
      },
      {
        "id": "user",
        "enabled": true
      },
      {
        "id": "devices",
        "enabled": true
      },
      {
        "id": "install",
        "enabled": true
      },
      {
        "id": "vpn",
        "enabled": true
      },
      {
        "id": "link",
        "enabled": true
      },
      {
        "id": "configs",
        "enabled": true
      }
    ],
    "intro": {},
    "footer": {},
    "texts": {},
    "custom_css": "",
    "link_domain": "",
    "show_devices": true,
    "lock_on_device_limit": true,
    "apps": {
      "key": []
    }
  },
  "username": "string"
}

Response 200 Successful Response

Errors: 401 Unauthorized

bash
curl -X POST 'https://YOUR-PANEL/api/sub-webpage/preview' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{ ... }'

GET /api/user-cleanup ​

Read User Cleanup

Auto-delete settings for expired users.

Sudo admin only

Response 200 Successful Response · UserCleanupSettings

Response fields
FieldTypeDescription
auto_delete_enabledboolean
auto_delete_hoursinteger
include_limitedboolean
include_disabledboolean
json
{
  "auto_delete_enabled": false,
  "auto_delete_hours": 24,
  "include_limited": false,
  "include_disabled": false
}

Errors: 401 Unauthorized

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

PUT /api/user-cleanup ​

Update User Cleanup

Change the auto-delete rules for expired users.

Sudo admin only

Request body application/json · UserCleanupSettings

FieldTypeRequiredDescription
auto_delete_enabledbooleannoDefault: false.
auto_delete_hoursintegernoDefault: 24.
include_limitedbooleannoDefault: false.
include_disabledbooleannoDefault: false.
json
{
  "auto_delete_enabled": false,
  "auto_delete_hours": 24,
  "include_limited": false,
  "include_disabled": false
}

Response 200 Successful Response · UserCleanupSettings

Response fields
FieldTypeDescription
auto_delete_enabledboolean
auto_delete_hoursinteger
include_limitedboolean
include_disabledboolean
json
{
  "auto_delete_enabled": false,
  "auto_delete_hours": 24,
  "include_limited": false,
  "include_disabled": false
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/user-cleanup' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"auto_delete_enabled": false, "auto_delete_hours": 24, "include_limited": false, "include_disabled": false}'

GET /api/weather-location ​

Get Weather Location

the current admin's own weather location (the widget calls Open-Meteo itself with these)

Any admin

Response 200 Successful Response · WeatherLocation

Response fields
FieldTypeDescription
namestring
latnumber
lonnumber
json
{
  "name": "",
  "lat": 0,
  "lon": 0
}

Errors: 401 Unauthorized

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

PUT /api/weather-location ​

Set Weather Location

set (or clear, by sending empty coordinates) the current admin's weather location

Any admin

Request body application/json · WeatherLocation

FieldTypeRequiredDescription
namestringno
latnumberno
lonnumberno
json
{
  "name": "",
  "lat": 0,
  "lon": 0
}

Response 200 Successful Response · WeatherLocation

Response fields
FieldTypeDescription
namestring
latnumber
lonnumber
json
{
  "name": "",
  "lat": 0,
  "lon": 0
}

Errors: 401 Unauthorized

bash
curl -X PUT 'https://YOUR-PANEL/api/weather-location' \
  -H 'Authorization: Bearer $TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"name": "", "lat": 0, "lon": 0}'

Alexen v2.3.14 · 204 API endpoints