Reseller API
Reseller API documents delegated automation for reseller-owned accounts, approved packages, feature policy, and related support workflows.
Where to find it: Documentation > Hosting Manager > API > Reseller API.
Available to: Root and reseller API identities inside delegated scope.
What this page does
This page lists public endpoints delegated to root and reseller roles but not directly to account users. Shared account endpoints appear under User API. It contains 23 endpoints from the current SHM public catalog.
Before you start
Use a dedicated API identity, protect the key, restrict source addresses where available, and discover current ids before a write. Every example uses the direct SHM Engine origin https://panel.example.com:882. Placeholders are documentation, not permission to run a production mutation.
Authentication
Send X-Api-User and X-Api-Key to the SHM Engine on port 882. JSON requests also send Content-Type: application/json. Role, account ownership, source policy, feature access, and resource identifiers are checked for every request.
How to read each endpoint
The parameter cards and complete request template are exhaustive: every current key is shown with its accepted location, required or optional status, type, values, constraints, and an example. The runnable workflow example is deliberately narrower when an endpoint contains mutually exclusive actions or conditional branches.
Reseller API endpoint reference (23)
Account Packages
GET/v1/account-packagesroot resellerList account packages visible to current role.
What this endpoint does
List account packages visible to current role.
Endpoint
GET /v1/account-packages
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (0)
This endpoint accepts no path, query, or JSON parameters.
Complete request template
This reference template contains all 0 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {},
"query_parameters": {},
"json_body": {},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X GET 'https://panel.example.com:882/v1/account-packages' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY'
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Example request
{
"path_parameters": {},
"query_parameters": {},
"json_body": {}
}Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "access_denied",
"message": "The API key is not authorized for this endpoint, resource, role, or source IP."
}
Operational note
This endpoint reads state. Use its current identifiers and result before calling a related create, update, delete, repair, or restore operation.
POST/v1/account-packagesroot resellerCreate an account package/hosting plan. Use this for root/reseller package administration; unlimited packages use -1 for each numeric limit field.
What this endpoint does
Create an account package/hosting plan. Use this for root/reseller package administration; unlimited packages use -1 for each numeric limit field.
Operational guidance: Create an account package/hosting plan for future account provisioning. Root can create unlimited packages by sending -1 for every numeric limit field. When the user asks for "unlimited limits", "no limits", "fara limite", or similar wording, use the requested package name as packagename, set featureprofile=1 unless the user specified another feature profile, set every numeric limit field to -1, set dedicatedip=0, and set shell=0 unless shell access was explicitly requested. This is a normal non-destructive create operation for root/reseller package administration; do not refuse it as unavailable when this endpoint is returned by the AI catalog.
Endpoint
POST /v1/account-packages
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (19)
packagenameRequired- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
Starter
Package name. Package display name (1–64 chars; letters, numbers, spaces, hyphens, and underscores).
Validation and use: Required Send this parameter as a JSON body property.
addondomainsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Addon domains limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
databasesOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Databases limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
dedicatedipOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
0
Dedicated IP toggle. 1 to require dedicated IP for accounts using this package.
Validation and use: Optional Send this parameter as a JSON body property.
diskspacequotaOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Disk quota (MB). -1 unlimited (if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
emailaccountsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Email accounts limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
feature_profileOptional- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
1
Feature profile selection. Alias of featureprofile. Prefer featureprofile.
Validation and use: Optional Send this parameter as a JSON body property.
featureprofileOptional- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
1
Feature profile id. Alias: feature_profile.
Validation and use: Optional Send this parameter as a JSON body property.
ftpaccountsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
FTP accounts limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxcpuusageOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
CPU limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxemailsperhourOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Max emails per hour (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxinodeslimitOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Inode limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxiodiskbandwidthOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
IO bandwidth limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxiopslimitsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
IOPS limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxmemorysizeOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Memory limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxuserprocessesOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Process limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
parkeddomainsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Parked domains limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
shellOptional- Send in
- JSON body
- Type
enum- Accepted values
- 0, 1, 2
- Example
0
Shell mode: 0 disabled, 1 bash, 2 jail. Allowed values: 0, 1, 2.
Validation and use: Optional Send this parameter as a JSON body property.
subdomainsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Subdomains limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 19 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"packagename": "Starter",
"addondomains": "-1",
"databases": "-1",
"dedicatedip": "0",
"diskspacequota": "-1",
"emailaccounts": "-1",
"feature_profile": 1,
"featureprofile": "1",
"ftpaccounts": "-1",
"maxcpuusage": "-1",
"maxemailsperhour": "-1",
"maxinodeslimit": "-1",
"maxiodiskbandwidth": "-1",
"maxiopslimits": "-1",
"maxmemorysize": "-1",
"maxuserprocesses": "-1",
"parkeddomains": "-1",
"shell": "0",
"subdomains": "-1"
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X POST 'https://panel.example.com:882/v1/account-packages' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"packagename":"Starter","featureprofile":"1","diskspacequota":"-1","addondomains":"-1","parkeddomains":"-1","subdomains":"-1","databases":"-1","emailaccounts":"-1","maxemailsperhour":"-1","ftpaccounts":"-1","maxcpuusage":"-1","maxmemorysize":"-1","maxuserprocesses":"-1","maxinodeslimit":"-1","maxiodiskbandwidth":"-1","maxiopslimits":"-1","shell":"0","dedicatedip":"0"}'
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Create unlimited account package
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"packagename": "Starter",
"featureprofile": "1",
"diskspacequota": "-1",
"addondomains": "-1",
"parkeddomains": "-1",
"subdomains": "-1",
"databases": "-1",
"emailaccounts": "-1",
"maxemailsperhour": "-1",
"ftpaccounts": "-1",
"maxcpuusage": "-1",
"maxmemorysize": "-1",
"maxuserprocesses": "-1",
"maxinodeslimit": "-1",
"maxiodiskbandwidth": "-1",
"maxiopslimits": "-1",
"shell": "0",
"dedicatedip": "0"
}
}Create limited account package
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"packagename": "Starter",
"featureprofile": "1",
"diskspacequota": "10240",
"addondomains": "10",
"parkeddomains": "10",
"subdomains": "50",
"databases": "20",
"emailaccounts": "50",
"maxemailsperhour": "500",
"ftpaccounts": "10",
"maxcpuusage": "100",
"maxmemorysize": "1024",
"maxuserprocesses": "100",
"maxinodeslimit": "100000",
"maxiodiskbandwidth": "0",
"maxiopslimits": "0",
"shell": "0",
"dedicatedip": "0"
}
}Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
DELETE/v1/account-packages/{id}root resellerDelete account package (if unused).
What this endpoint does
Delete account package (if unused).
Endpoint
DELETE /v1/account-packages/{id}
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (1)
idRequired- Send in
- URL path
- Type
int- Accepted values
- Any value matching int
- Example
1
Exact resource identifier returned by the related list or context endpoint. Do not guess ids from table position.
Validation and use: Required Replace this placeholder directly in the URL path. Use the corresponding list endpoint for this resource and copy the returned id value.
Complete request template
This reference template contains all 1 current parameter key. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"id": 1
},
"query_parameters": {},
"json_body": {},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X DELETE 'https://panel.example.com:882/v1/account-packages/1' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY'Example note: Requires a value returned by another endpoint before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Example request
{
"path_parameters": {
"id": 1
},
"query_parameters": {},
"json_body": {}
}Requires a value returned by another endpoint before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
GET/v1/account-packages/{id}root resellerGet account package by id.
What this endpoint does
Get account package by id.
Endpoint
GET /v1/account-packages/{id}
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (1)
idRequired- Send in
- URL path
- Type
int- Accepted values
- Any value matching int
- Example
1
Exact resource identifier returned by the related list or context endpoint. Do not guess ids from table position.
Validation and use: Required Replace this placeholder directly in the URL path. Use the corresponding list endpoint for this resource and copy the returned id value.
Complete request template
This reference template contains all 1 current parameter key. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"id": 1
},
"query_parameters": {},
"json_body": {},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X GET 'https://panel.example.com:882/v1/account-packages/1' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY'Example note: Requires a value returned by another endpoint before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Example request
{
"path_parameters": {
"id": 1
},
"query_parameters": {},
"json_body": {}
}Requires a value returned by another endpoint before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint reads state. Use its current identifiers and result before calling a related create, update, delete, repair, or restore operation.
PATCH/v1/account-packages/{id}root resellerEdit account package definition.
What this endpoint does
Edit account package definition.
Operational guidance: Edit account package definition. PATCH is partial: send only fields that must change.
Endpoint
PATCH /v1/account-packages/{id}
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (21)
idRequired- Send in
- URL path
- Type
int- Accepted values
- Any value matching int
- Example
1
Exact resource identifier returned by the related list or context endpoint. Do not guess ids from table position.
Validation and use: Required Replace this placeholder directly in the URL path. Use the corresponding list endpoint for this resource and copy the returned id value.
addondomainsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Addon domains limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
apply_to_accountsOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Apply the package changes to accounts that currently use this package, in addition to updating the reusable package definition.
Validation and use: Optional Send this parameter as a JSON body property.
databasesOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Databases limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
dedicatedipOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Dedicated IP toggle. 1 to require dedicated IP for accounts using this package.
Validation and use: Optional Send this parameter as a JSON body property.
diskspacequotaOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
100
Disk quota (MB). -1 unlimited (if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
emailaccountsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Email accounts limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
feature_profileOptional- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
1
Feature profile selection. Alias of featureprofile. Prefer featureprofile.
Validation and use: Optional Send this parameter as a JSON body property.
featureprofileOptional- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
1
Feature profile id. Alias: feature_profile.
Validation and use: Optional Send this parameter as a JSON body property.
ftpaccountsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
FTP accounts limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxcpuusageOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
CPU limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxemailsperhourOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Max emails per hour (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxinodeslimitOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Inode limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxiodiskbandwidthOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
IO bandwidth limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxiopslimitsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
IOPS limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxmemorysizeOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Memory limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
maxuserprocessesOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Process limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
packagenameOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
Starter
Package name. Package display name (1–64 chars; letters, numbers, spaces, hyphens, and underscores).
Validation and use: Optional Send this parameter as a JSON body property.
parkeddomainsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Parked domains limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
shellOptional- Send in
- JSON body
- Type
enum- Accepted values
- 0, 1, 2
- Example
0
Shell mode: 0 disabled, 1 bash, 2 jail. Allowed values: 0, 1, 2.
Validation and use: Optional Send this parameter as a JSON body property.
subdomainsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Subdomains limit (-1 unlimited if allowed).
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 21 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"id": 1
},
"query_parameters": {},
"json_body": {
"addondomains": -1,
"apply_to_accounts": 1,
"databases": -1,
"dedicatedip": 1,
"diskspacequota": 100,
"emailaccounts": -1,
"feature_profile": 1,
"featureprofile": 1,
"ftpaccounts": -1,
"maxcpuusage": -1,
"maxemailsperhour": -1,
"maxinodeslimit": -1,
"maxiodiskbandwidth": -1,
"maxiopslimits": -1,
"maxmemorysize": -1,
"maxuserprocesses": -1,
"packagename": "Starter",
"parkeddomains": -1,
"shell": 0,
"subdomains": -1
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/account-packages/1' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"packagename":"Starter","featureprofile":1,"feature_profile":1,"shell":0}'Example note: Requires a value returned by another endpoint before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Example request
{
"path_parameters": {
"id": 1
},
"query_parameters": {},
"json_body": {
"packagename": "Starter",
"featureprofile": 1,
"feature_profile": 1,
"shell": 0
}
}Requires a value returned by another endpoint before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Accounts
POST/v1/accountsroot resellerCreate hosting account. For default/shared server IP, omit `select_account_ip` or send `select_account_ip=shared` with `force_shared_ip=1`; SHM resolves the configured shared IP.
What this endpoint does
Create hosting account. For default/shared server IP, omit `select_account_ip` or send `select_account_ip=shared` with `force_shared_ip=1`; SHM resolves the configured shared IP.
Operational guidance: Create a hosting account. For default/shared server IP, omit select_account_ip or send select_account_ip="shared" with force_shared_ip=1; the engine resolves the configured shared IP. When the user asks for a demo/test/random domain, generate a valid random FQDN such as customer.example and derive account_username/account_email from it. Migration/import fields are root-only advanced options.
Endpoint
POST /v1/accounts
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (45)
account_domainRequired- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
example.test
Primary account domain. Primary domain name. Primary domain (FQDN). Punycode accepted.
Validation and use: Required Send this parameter as a JSON body property.
account_emailRequired- Send in
- JSON body
- Type
string|email- Accepted values
- Any value matching string|email
- Example
admin@example.test
Account contact email address. Contact email for the account.
Validation and use: Required Send this parameter as a JSON body property.
account_passwordRequired- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
STRONG_PASSWORD
Account or mailbox password. Initial account password. Generate a strong password when the user did not provide one. Initial account password (min 8 chars).
Validation and use: Required Send this parameter as a JSON body property.
account_usernameRequired- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
exampleacct
Account username. System username to create. System username to create (2–30 chars; letters/numbers only; no hyphen, underscore, dot, or spaces; not all digits).
Validation and use: Required Send this parameter as a JSON body property. Minimum length 2. Maximum length 30. Pattern: ^(?=.*[A-Za-z])[A-Za-z0-9]{2,30}$. Generate lowercase letters and digits only, for example testhost8k3m2p. Do not use hyphen, underscore, dot, or spaces.
select_account_ownerRequired- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
0
Account owner selection. Owner identifier. Use `0` or omit for root-owned accounts. Use 0 or root for root-owned accounts. For reseller ownership, use an existing reseller username or positive id only when the user explicitly requests that owner. Never send -1.
Validation and use: Required Send this parameter as a JSON body property. Pattern: ^(0|root|[A-Za-z][A-Za-z0-9]{1,29}|[1-9][0-9]*)$. Use 0 or root for root-owned accounts. Use an existing reseller username or positive reseller/account id only when ownership is explicitly requested. Never send -1.
select_account_packageRequired- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
1
Account package selection. Account package id. Use `1` for the protected default package when no other package is requested. Account package id to apply. Use 1 for the protected default package when no package is specified. Never send -1 or the word default.
Validation and use: Required Send this parameter as a JSON body property. Minimum 1. Pattern: ^[1-9][0-9]*$. Use package id 1 for the protected default package when no package is specified. Send a positive numeric package id; never send -1 or the word default.
addondomainsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for addon-domain limit. Override addon domains limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
conflict_dns_policyOptional- Send in
- JSON body
- Type
enum- Accepted values
- keep_existing, overwrite
- Example
keep_existing
Alias of migration_conflict_dns_policy. Prefer migration_conflict_dns_policy. Allowed values: keep_existing, overwrite.
Validation and use: Optional Send this parameter as a JSON body property.
databasesOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for MySQL database limit. Override databases limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
diskspacequotaOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
100
Root-only migration override for disk quota in MB; -1 is unlimited. Override disk quota MB for this account at creation time (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
emailaccountsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for email account limit. Override email accounts limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
force_shared_ipOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Set to `1` when the user requests default/shared server IP. Set to 1 when the user asks for the default/shared server IP, even if the selected package requires a dedicated IP.
Validation and use: Optional Send this parameter as a JSON body property.
ftpaccountsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for FTP account limit. Override FTP accounts limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
maxcpuusageOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for CPU limit. Override CPU limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
maxemailsperhourOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for outbound messages per hour. Override max emails per hour (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
maxinodeslimitOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for inode limit. Override inode limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
maxiodiskbandwidthOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for disk bandwidth limit. Override IO bandwidth limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
maxiopslimitsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for IOPS limit. Override IOPS limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
maxmemorysizeOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for memory limit. Override memory limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
maxuserprocessesOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for process limit. Override max user processes (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
migrationOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Root-only migration mode flag. Omit it for normal account creation. Root-only migration mode helper.
Validation and use: Optional Send this parameter as a JSON body property.
migration_conflict_account_policyOptional- Send in
- JSON body
- Type
enum- Accepted values
- skip, overwrite
- Example
skip
Root-only migration conflict policy for existing accounts: `skip` or `overwrite`. Root-only migration conflict policy when an account already exists: skip|overwrite. Allowed values: skip, overwrite.
Validation and use: Optional Send this parameter as a JSON body property.
migration_conflict_dns_policyOptional- Send in
- JSON body
- Type
enum- Accepted values
- keep_existing, overwrite
- Example
keep_existing
Migration conflict dns policy request field. Allowed values: keep_existing, overwrite. Root-only migration DNS zone conflict policy: `keep_existing` or `overwrite`. Use `overwrite` only when the migration should replace existing local/cluster DNS zones. Root-only migration DNS zone conflict policy: keep_existing|overwrite. overwrite allows replacing existing local or DNS Cluster zones during migration.
Validation and use: Optional Send this parameter as a JSON body property.
migration_conflict_domain_policyOptional- Send in
- JSON body
- Type
enum- Accepted values
- skip_account, skip_domain
- Example
skip_account
Root-only migration conflict policy for domains: `skip_account` or `skip_domain`. Root-only migration conflict policy for domain collisions: skip_account|skip_domain. Allowed values: skip_account, skip_domain.
Validation and use: Optional Send this parameter as a JSON body property.
migration_existing_account_userOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
demo
Root-only migration override: existing local account username to reuse when overwrite is allowed. Root-only migration override: existing local account username to reuse when migration_conflict_account_policy=overwrite.
Validation and use: Optional Send this parameter as a JSON body property.
migration_source_platformOptional- Send in
- JSON body
- Type
enum- Accepted values
- plesk, directadmin
- Example
plesk
Migration source platform request field. Allowed values: plesk, directadmin. Root-only migration source hint (for example `plesk` or `directadmin`). Root-only migration source hint, for example "plesk" or "directadmin".
Validation and use: Optional Send this parameter as a JSON body property.
opcacheOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Initial OPcache state.
Validation and use: Optional Send this parameter as a JSON body property.
parkeddomainsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for parked-domain limit. Override parked domains limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
phpversionOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
php83
Initial installed PHP runtime token, for example php83.
Validation and use: Optional Send this parameter as a JSON body property.
postgres_databasesOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for PostgreSQL database limit. Override PostgreSQL databases limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
postgres_usersOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
1
Root-only migration override for PostgreSQL user limit. Override PostgreSQL users limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
progress_taskOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
create_account_root_0123456789abcdef0123456789abcdef
Optional live progress id. Use create_account_<caller>_<32 hexadecimal characters>, then poll GET /v1/progress/{task}. Root uses caller root; a reseller must use its own username. Live progress id in the form create_account_<caller>_<32 hexadecimal characters>. Root uses caller root; a reseller uses its own username. Poll GET /v1/progress/{task}.
Validation and use: Optional Send this parameter as a JSON body property.
resellermaxaccountsOptional- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
-1
Maximum reseller accounts limit. Root-only migration override for the created reseller maximum account count. Reseller max accounts (advanced; reseller accounts only).
Validation and use: Optional Send this parameter as a JSON body property.
resellermaxdiskspaceOptional- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
-1
Maximum reseller disk space. Root-only migration override for the created reseller disk pool in MB. Reseller max disk space in MB (advanced; reseller accounts only).
Validation and use: Optional Send this parameter as a JSON body property.
resellerprivilegesOptional- Send in
- JSON body
- Type
enum- Accepted values
- yes
- Example
yes
Reseller privilege toggle. Set to `yes` to create a reseller account (root-only). Set to "yes" to create a reseller account (root-only).
Validation and use: Optional Send this parameter as a JSON body property. Send yes only when creating a reseller account. Omit this field for normal hosting accounts.
select_account_ipOptional- Send in
- JSON body
- Type
enum- Accepted values
- shared, sharedip, shared_ip, default, server_default, server_shared
- Example
shared
Account IP selection. Allowed values: shared, sharedip, shared_ip, default, server_default, server_shared. Optional. Use `shared`, `default`, or omit for the configured shared server IP. Use "shared", "default", or omit it for the configured shared server IP; the engine may override with shared/dedicated IP based on policy.
Validation and use: Optional Send this parameter as a JSON body property.
selectreselleripsOptional- Send in
- JSON body
- Type
array|string|string[]- Accepted values
- Any value matching array|string|string[]
- Example
192.0.2.10
Selected reseller IP addresses. Optional reseller IP allow-list. Omit for default/shared IP. Reseller IP allow-list (array of IPv4 strings). Used when creating reseller accounts.
Validation and use: Optional Send this parameter as a JSON body property.
selectresellerpackageOptional- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
1
Selected reseller package. Reseller package id when creating a reseller account. Use `1` for the protected default reseller package when no other package is requested. Reseller package id (required when resellerprivileges="yes").
Validation and use: Optional Send this parameter as a JSON body property.
setopcacheOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Alias of opcache. Prefer opcache.
Validation and use: Optional Send this parameter as a JSON body property.
setphpversionOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
php83
Alias of phpversion. Prefer phpversion.
Validation and use: Optional Send this parameter as a JSON body property.
shadowOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
PASSWORD_HASH_FROM_SOURCE
Root-only migration password hash for the created system account. Root-only migration password hash to store for the system account (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
shellOptional- Send in
- JSON body
- Type
enum- Accepted values
- 0, 1, 2
- Example
0
Root-only migration shell override: 0 disabled, 1 bash, 2 jail. Override shell setting (advanced): 0=disabled, 1=bash, 2=jail. Allowed values: 0, 1, 2.
Validation and use: Optional Send this parameter as a JSON body property.
subdomainsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Root-only migration override for subdomain limit. Override subdomains limit (advanced).
Validation and use: Optional Send this parameter as a JSON body property.
suspend_reasonOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
true
Suspend reason. Optional suspension reason used when suspended is true. Suspend reason shown in UI (if suspended=1).
Validation and use: Optional Send this parameter as a JSON body property.
suspendedOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Create the account suspended when true. Set to 1 to create the account suspended.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 45 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"account_domain": "example.test",
"account_email": "admin@example.test",
"account_password": "STRONG_PASSWORD",
"account_username": "exampleacct",
"select_account_owner": 0,
"select_account_package": 1,
"addondomains": -1,
"conflict_dns_policy": "keep_existing",
"databases": -1,
"diskspacequota": 100,
"emailaccounts": -1,
"force_shared_ip": 1,
"ftpaccounts": -1,
"maxcpuusage": -1,
"maxemailsperhour": -1,
"maxinodeslimit": -1,
"maxiodiskbandwidth": -1,
"maxiopslimits": -1,
"maxmemorysize": -1,
"maxuserprocesses": -1,
"migration": 1,
"migration_conflict_account_policy": "skip",
"migration_conflict_dns_policy": "keep_existing",
"migration_conflict_domain_policy": "skip_account",
"migration_existing_account_user": "demo",
"migration_source_platform": "plesk",
"opcache": 1,
"parkeddomains": -1,
"phpversion": "php83",
"postgres_databases": -1,
"postgres_users": 1,
"progress_task": "create_account_root_0123456789abcdef0123456789abcdef",
"resellermaxaccounts": -1,
"resellermaxdiskspace": -1,
"resellerprivileges": "yes",
"select_account_ip": "shared",
"selectresellerips": "192.0.2.10",
"selectresellerpackage": 1,
"setopcache": 1,
"setphpversion": "php83",
"shadow": "PASSWORD_HASH_FROM_SOURCE",
"shell": 0,
"subdomains": -1,
"suspend_reason": true,
"suspended": 1
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X POST 'https://panel.example.com:882/v1/accounts' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"account_domain":"example.test","account_username":"exampleacct","select_account_package":1,"account_password":"STRONG_PASSWORD","account_email":"admin@example.test","select_account_owner":0,"select_account_ip":"shared","force_shared_ip":1,"progress_task":"create_account_root_0123456789abcdef0123456789abcdef"}'
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Create a root-owned account with progress
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"account_domain": "example.test",
"account_username": "exampleacct",
"select_account_package": 1,
"account_password": "STRONG_PASSWORD",
"account_email": "admin@example.test",
"select_account_owner": 0,
"select_account_ip": "shared",
"force_shared_ip": 1,
"progress_task": "create_account_root_0123456789abcdef0123456789abcdef"
}
}Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
DELETE/v1/accounts/{username}root resellerDelete account and associated resources.
What this endpoint does
Delete account and associated resources.
Operational guidance: Deletes a hosting account. Path {username} identifies the account. Optional keepdns=on keeps the DNS zone on the server.
Endpoint
DELETE /v1/accounts/{username}
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI and Account AI when the authenticated role, account ownership, feature policy, and parameters permit it.
Parameters (4)
usernameRequired- Send in
- URL path
- Type
string- Accepted values
- Any value matching string
- Example
demo
Target SHM account username. Root may target any authorized account, a reseller only an owned account, and a user only their own account.
Validation and use: Required Replace this placeholder directly in the URL path.
account_usernameOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
demo
Account username.
Validation and use: Optional Send this parameter as a JSON body property.
keepdnsOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
off
Keep DNS records after delete. Set to 1/true/on/yes to keep DNS zone records. Default: off.
Validation and use: Optional Send this parameter as a JSON body property.
progress_taskOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
provision-account-01
Optional task identifier used to publish or correlate progress for this operation.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 4 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"account_username": "demo",
"keepdns": "off",
"progress_task": "provision-account-01"
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X DELETE 'https://panel.example.com:882/v1/accounts/demo' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"keepdns":"off"}'Example note: Requires a documented runtime value before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Delete account (remove DNS)
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"keepdns": "off"
}
}Requires a documented runtime value before QA can execute this request.
Delete account (keep DNS)
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"keepdns": "on"
}
}Requires a documented runtime value before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Core
PATCH/v1/accounts/{username}/feature-flagsroot resellerUpdate SHM account feature flags
What this endpoint does
Update SHM account feature flags
Operational guidance: Updates one or more account-level feature flags. Root and the owning reseller may call this endpoint. Enabling a flag requires the account package Feature Profile to grant it. podman_cli controls only interactive Podman CLI exposure inside JailShell; it does not disable the Account Podman Manager.
Endpoint
PATCH /v1/accounts/{username}/feature-flags
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI and Account AI when the authenticated role, account ownership, feature policy, and parameters permit it.
Parameters (4)
usernameRequired- Send in
- URL path
- Type
string- Accepted values
- Any value matching string
- Example
demo
Target SHM account username. Root may target any authorized account, a reseller only an owned account, and a user only their own account.
Validation and use: Required Replace this placeholder directly in the URL path.
aiOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Enable or disable AI Assistant access for this account.
Validation and use: Optional Send this parameter as a JSON body property.
cloudflare_dnsOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
0
Enable or disable Cloudflare DNS access for this account.
Validation and use: Optional Send this parameter as a JSON body property.
podman_cliOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Enable or disable the isolated Podman CLI mounts and socket inside this account JailShell. The account must use shell=2 for runtime exposure.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 4 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"ai": 1,
"cloudflare_dns": 0,
"podman_cli": 1
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/accounts/demo/feature-flags' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"podman_cli":1}'
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Enable Podman CLI in JailShell
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"podman_cli": 1
}
}Disable Podman CLI without disabling Podman Manager
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"podman_cli": 0
}
}Update multiple feature flags
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"ai": 1,
"cloudflare_dns": 0,
"podman_cli": 1
}
}Enable Podman CLI in JailShell
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"podman_cli": 1
}
}Disable Podman CLI without disabling Podman Manager
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"podman_cli": 0
}
}Update multiple feature flags
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"ai": 1,
"cloudflare_dns": 0,
"podman_cli": 1
}
}Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Domain
PATCH/v1/accounts/{username}/domainroot resellerRename primary account domain.
What this endpoint does
Rename primary account domain.
Operational guidance: Renames the primary domain of the account.
Endpoint
PATCH /v1/accounts/{username}/domain
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI and Account AI when the authenticated role, account ownership, feature policy, and parameters permit it.
Parameters (3)
usernameRequired- Send in
- URL path
- Type
string- Accepted values
- Any value matching string
- Example
demo
Target SHM account username. Root may target any authorized account, a reseller only an owned account, and a user only their own account.
Validation and use: Required Replace this placeholder directly in the URL path.
new_domainRequired- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
example.net
New primary domain. Alias: domain.
Validation and use: Required Send this parameter as a JSON body property.
domainOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
example.com
Domain name. Alias of `new_domain`. Alias of new_domain. Prefer new_domain.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 3 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"new_domain": "example.net",
"domain": "example.com"
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/accounts/demo/domain' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"new_domain":"example.net"}'Example note: Requires a documented runtime value before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Rename primary domain
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"new_domain": "example.net"
}
}Requires a documented runtime value before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Feature Profiles
GET/v1/feature-profilesroot resellerList feature profiles visible to current role.
What this endpoint does
List feature profiles visible to current role.
Endpoint
GET /v1/feature-profiles
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (0)
This endpoint accepts no path, query, or JSON parameters.
Complete request template
This reference template contains all 0 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {},
"query_parameters": {},
"json_body": {},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X GET 'https://panel.example.com:882/v1/feature-profiles' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY'
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Example request
{
"path_parameters": {},
"query_parameters": {},
"json_body": {}
}Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "access_denied",
"message": "The API key is not authorized for this endpoint, resource, role, or source IP."
}
Operational note
This endpoint reads state. Use its current identifiers and result before calling a related create, update, delete, repair, or restore operation.
POST/v1/feature-profilesroot resellerCreate feature profile.
What this endpoint does
Create feature profile.
Operational guidance: Create a feature profile. Use GET /v1/feature-profiles/catalog to list available feature keys. By default allow_all=1 (all features allowed).
Endpoint
POST /v1/feature-profiles
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (6)
nameRequired- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
All Features
Profile name (1–64 chars; letters/numbers/spaces). Alias: profile_name.
Validation and use: Required Send this parameter as a JSON body property.
allow_allOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Allow all available feature keys. 1 to allow all features (default). Alias: allowall.
Validation and use: Optional Send this parameter as a JSON body property.
allowallOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Allow all available feature keys. Alias of allow_all. Prefer allow_all.
Validation and use: Optional Send this parameter as a JSON body property.
feature_keysOptional- Send in
- JSON body
- Type
array|string- Accepted values
- Any value matching array|string
- Example
[]
Feature key list. Alias of features. Prefer features.
Validation and use: Optional Send this parameter as a JSON body property.
featuresOptional- Send in
- JSON body
- Type
array|string- Accepted values
- Any value matching array|string
- Example
["email","dns","ftp"]
Feature key list. When allow_all=0: array of feature keys, or comma-separated string. Alias: feature_keys.
Validation and use: Optional Send this parameter as a JSON body property.
profile_nameOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
Default
Profile name. Alias of name. Prefer name.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 6 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"name": "All Features",
"allow_all": 1,
"allowall": 1,
"feature_keys": [],
"features": [
"email",
"dns",
"ftp"
],
"profile_name": "Default"
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X POST 'https://panel.example.com:882/v1/feature-profiles' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"name":"All Features","allow_all":1}'
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Allow all features
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"name": "All Features",
"allow_all": 1
}
}Allow selected features
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"name": "Starter",
"allow_all": 0,
"features": [
"email",
"dns",
"ftp"
]
}
}Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
DELETE/v1/feature-profiles/{id}root resellerDelete feature profile (if unused).
What this endpoint does
Delete feature profile (if unused).
Operational guidance: Delete one unused feature profile. The default/system profile and profiles assigned to packages cannot be deleted.
Endpoint
DELETE /v1/feature-profiles/{id}
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (2)
idRequired- Send in
- URL path
- Type
int|integer|string- Accepted values
- Any value matching int|integer|string
- Example
2
Exact resource identifier returned by the related list or context endpoint. Do not guess ids from table position.
Validation and use: Required Replace this placeholder directly in the URL path. Use the corresponding list endpoint for this resource and copy the returned id value.
featureprofile_idOptional- Send in
- JSON body
- Type
int|string|integer- Accepted values
- Any value matching int|string|integer
- Example
1
Feature profile ID. Optional alias of path `{id}`. Compatibility alias for id. Prefer the path id.
Validation and use: Optional Send this parameter as a JSON body property. Use the corresponding list endpoint for this resource and copy the returned featureprofile_id value.
Complete request template
This reference template contains all 2 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"id": 2
},
"query_parameters": {},
"json_body": {
"featureprofile_id": 1
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X DELETE 'https://panel.example.com:882/v1/feature-profiles/2' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY'Example note: Requires a value returned by another endpoint before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Delete profile
{
"path_parameters": {
"id": 2
},
"query_parameters": {},
"json_body": {}
}Requires a value returned by another endpoint before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
GET/v1/feature-profiles/{id}root resellerGet feature profile by id.
What this endpoint does
Get feature profile by id.
Operational guidance: Fetch one feature profile. The profile id is the path parameter returned by GET /v1/feature-profiles or POST /v1/feature-profiles.
Endpoint
GET /v1/feature-profiles/{id}
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (2)
idRequired- Send in
- URL path
- Type
int|integer|string- Accepted values
- Any value matching int|integer|string
- Example
2
Exact resource identifier returned by the related list or context endpoint. Do not guess ids from table position.
Validation and use: Required Replace this placeholder directly in the URL path. Use the corresponding list endpoint for this resource and copy the returned id value.
featureprofile_idOptional- Send in
- Query string
- Type
int|string|integer- Accepted values
- Any value matching int|string|integer
- Example
1
Feature profile ID. Optional alias of path `{id}`. Compatibility alias for id. Prefer the path id.
Validation and use: Optional Send this parameter in the query string. Use the corresponding list endpoint for this resource and copy the returned featureprofile_id value.
Complete request template
This reference template contains all 2 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"id": 2
},
"query_parameters": {
"featureprofile_id": 1
},
"json_body": {},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X GET 'https://panel.example.com:882/v1/feature-profiles/2' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY'Example note: Requires a value returned by another endpoint before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Fetch profile
{
"path_parameters": {
"id": 2
},
"query_parameters": {},
"json_body": {}
}Requires a value returned by another endpoint before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint reads state. Use its current identifiers and result before calling a related create, update, delete, repair, or restore operation.
PATCH/v1/feature-profiles/{id}root resellerEdit feature profile.
What this endpoint does
Edit feature profile.
Operational guidance: Edit a feature profile. PATCH is partial: send only fields that must change. Default/system profiles may be protected from edit for non-root roles.
Endpoint
PATCH /v1/feature-profiles/{id}
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (8)
idRequired- Send in
- URL path
- Type
int|integer|string- Accepted values
- Any value matching int|integer|string
- Example
1
Exact resource identifier returned by the related list or context endpoint. Do not guess ids from table position.
Validation and use: Required Replace this placeholder directly in the URL path. Use the corresponding list endpoint for this resource and copy the returned id value.
allow_allOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Allow all available feature keys. 1 to allow all features. Alias: allowall.
Validation and use: Optional Send this parameter as a JSON body property.
allowallOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 0, true, false, yes, no, on, off
- Example
1
Allow all available feature keys. Alias of allow_all. Prefer allow_all.
Validation and use: Optional Send this parameter as a JSON body property.
feature_keysOptional- Send in
- JSON body
- Type
array|string- Accepted values
- Any value matching array|string
- Example
[]
Feature key list. Alias of features. Prefer features.
Validation and use: Optional Send this parameter as a JSON body property.
featureprofile_idOptional- Send in
- JSON body
- Type
int|string|integer- Accepted values
- Any value matching int|string|integer
- Example
1
Feature profile ID. Optional alias of path `{id}`. Compatibility alias for id. Prefer the path id.
Validation and use: Optional Send this parameter as a JSON body property. Use the corresponding list endpoint for this resource and copy the returned featureprofile_id value.
featuresOptional- Send in
- JSON body
- Type
array|string- Accepted values
- Any value matching array|string
- Example
["email","dns"]
Feature key list. When allow_all=0: array of feature keys, or comma-separated string. Alias: feature_keys.
Validation and use: Optional Send this parameter as a JSON body property.
nameOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
Starter v2
Profile name (1–64 chars; letters/numbers/spaces). Alias: profile_name.
Validation and use: Optional Send this parameter as a JSON body property.
profile_nameOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
Default
Alias of name. Prefer name.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 8 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"id": 1
},
"query_parameters": {},
"json_body": {
"allow_all": 1,
"allowall": 1,
"feature_keys": [],
"featureprofile_id": 1,
"features": [
"email",
"dns"
],
"name": "Starter v2",
"profile_name": "Default"
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/feature-profiles/1' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"name":"Starter v2"}'Example note: Requires a documented runtime value before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Rename profile
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"name": "Starter v2"
}
}Requires a documented runtime value before QA can execute this request.
Switch to allow_all
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"allow_all": 1
}
}Requires a documented runtime value before QA can execute this request.
Switch to allowlist
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"allow_all": 0,
"features": [
"email",
"dns"
]
}
}Requires a documented runtime value before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
GET/v1/feature-profiles/catalogroot resellerList available account feature keys for feature profiles.
What this endpoint does
List available account feature keys for feature profiles.
Endpoint
GET /v1/feature-profiles/catalog
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI for an authorized root or reseller role. It is not part of the account-chat surface.
Parameters (0)
This endpoint accepts no path, query, or JSON parameters.
Complete request template
This reference template contains all 0 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {},
"query_parameters": {},
"json_body": {},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X GET 'https://panel.example.com:882/v1/feature-profiles/catalog' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY'
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Example request
{
"path_parameters": {},
"query_parameters": {},
"json_body": {}
}Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "access_denied",
"message": "The API key is not authorized for this endpoint, resource, role, or source IP."
}
Operational note
This endpoint reads state. Use its current identifiers and result before calling a related create, update, delete, repair, or restore operation.
Ip
PATCH/v1/accounts/{username}/iproot resellerChange account IPv4 address.
What this endpoint does
Change account IPv4 address.
Operational guidance: Updates account IPv4 address. Path {username} identifies the account; body does not need account_user.
Endpoint
PATCH /v1/accounts/{username}/ip
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI and Account AI when the authenticated role, account ownership, feature policy, and parameters permit it.
Parameters (3)
usernameRequired- Send in
- URL path
- Type
string- Accepted values
- Any value matching string
- Example
demo
Target SHM account username. Root may target any authorized account, a reseller only an owned account, and a user only their own account.
Validation and use: Required Replace this placeholder directly in the URL path.
ipRequired- Send in
- JSON body
- Type
string|ipv4- Accepted values
- Any value matching string|ipv4
- Example
192.168.0.1
IPv4 address. New IPv4 address for the account. Alias: "new_ip".
Validation and use: Required Send this parameter as a JSON body property.
new_ipOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
203.0.113.10
New IP address.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 3 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"ip": "192.168.0.1",
"new_ip": "203.0.113.10"
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/accounts/demo/ip' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"ip":"192.168.0.1"}'Example note: Requires a documented runtime value before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Set dedicated IPv4
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"ip": "192.168.0.1"
}
}Requires a documented runtime value before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Max Emails Per Hour
PATCH/v1/accounts/{username}/max-emails-per-hourroot resellerUpdate Exim outbound rate limit for account user (-1 for unlimited).
What this endpoint does
Update Exim outbound rate limit for account user (-1 for unlimited).
Operational guidance: Updates Exim outbound rate limit for the account (messages per hour).
Endpoint
PATCH /v1/accounts/{username}/max-emails-per-hour
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI and Account AI when the authenticated role, account ownership, feature policy, and parameters permit it.
Parameters (3)
usernameRequired- Send in
- URL path
- Type
string- Accepted values
- Any value matching string
- Example
demo
Target SHM account username. Root may target any authorized account, a reseller only an owned account, and a user only their own account.
Validation and use: Required Replace this placeholder directly in the URL path.
maxemailsperhourRequired- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
500
Maximum outgoing emails per hour. Outbound email limit per hour. Use -1 for unlimited. Integer greater than or equal to -1. Alias: value.
Validation and use: Required Send this parameter as a JSON body property.
valueOptional- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
1
Value payload. Alias of `maxemailsperhour`. Alias of maxemailsperhour. Prefer maxemailsperhour.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 3 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"maxemailsperhour": "500",
"value": 1
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/accounts/demo/max-emails-per-hour' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"maxemailsperhour":"500"}'Example note: Requires a documented runtime value before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Set rate limit
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"maxemailsperhour": "500"
}
}Requires a documented runtime value before QA can execute this request.
Set unlimited
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"maxemailsperhour": "-1"
}
}Requires a documented runtime value before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Package
PATCH/v1/accounts/{username}/packageroot resellerApply package limits/settings to account.
What this endpoint does
Apply package limits/settings to account.
Operational guidance: Applies an account package to the account and syncs its limits.
Endpoint
PATCH /v1/accounts/{username}/package
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI and Account AI when the authenticated role, account ownership, feature policy, and parameters permit it.
Parameters (3)
usernameRequired- Send in
- URL path
- Type
string- Accepted values
- Any value matching string
- Example
demo
Target SHM account username. Root may target any authorized account, a reseller only an owned account, and a user only their own account.
Validation and use: Required Replace this placeholder directly in the URL path.
package_idRequired- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
2
Account package id to apply.
Validation and use: Required Send this parameter as a JSON body property. Use the corresponding list endpoint for this resource and copy the returned package_id value.
select_account_packageOptional- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
1
Account package selection.
Validation and use: Optional Send this parameter as a JSON body property. Minimum 1. Pattern: ^[1-9][0-9]*$. Use package id 1 for the protected default package when no package is specified. Send a positive numeric package id; never send -1 or the word default.
Complete request template
This reference template contains all 3 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"package_id": 2,
"select_account_package": 1
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/accounts/demo/package' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"package_id":2}'Example note: Requires a value returned by another endpoint before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Apply package id 2
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"package_id": 2
}
}Requires a value returned by another endpoint before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Quota
PATCH/v1/accounts/{username}/quotaroot resellerUpdate account disk quota.
What this endpoint does
Update account disk quota.
Operational guidance: Updates disk quota for the account (in MB).
Endpoint
PATCH /v1/accounts/{username}/quota
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI and Account AI when the authenticated role, account ownership, feature policy, and parameters permit it.
Parameters (3)
usernameRequired- Send in
- URL path
- Type
string- Accepted values
- Any value matching string
- Example
demo
Target SHM account username. Root may target any authorized account, a reseller only an owned account, and a user only their own account.
Validation and use: Required Replace this placeholder directly in the URL path.
diskspacequotaRequired- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
10240
New disk quota in MB (`-1` for unlimited). Disk quota in MB. Use -1 for unlimited. Alias: quota.
Validation and use: Required Send this parameter as a JSON body property.
quotaOptional- Send in
- JSON body
- Type
string|integer- Accepted values
- Any value matching string|integer
- Example
100
Alias of `diskspacequota`. Alias of diskspacequota. Prefer diskspacequota.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 3 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"diskspacequota": "10240",
"quota": 100
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/accounts/demo/quota' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"diskspacequota":"10240"}'Example note: Requires a documented runtime value before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Set 10GB quota
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"diskspacequota": "10240"
}
}Requires a documented runtime value before QA can execute this request.
Set unlimited quota
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"diskspacequota": "-1"
}
}Requires a documented runtime value before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Resources
PATCH/v1/accounts/{username}/resourcesroot resellerUpdate account resource limits, including mail rate overrides.
What this endpoint does
Update account resource limits, including mail rate overrides.
Operational guidance: Updates one or more resource limit fields. Provide at least one field.
Endpoint
PATCH /v1/accounts/{username}/resources
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI and Account AI when the authenticated role, account ownership, feature policy, and parameters permit it.
Parameters (9)
usernameRequired- Send in
- URL path
- Type
string- Accepted values
- Any value matching string
- Example
demo
Target SHM account username. Root may target any authorized account, a reseller only an owned account, and a user only their own account.
Validation and use: Required Replace this placeholder directly in the URL path.
diskspacequotaOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
100
Disk quota in MB. Use -1 for unlimited. Disk quota MB.
Validation and use: Optional Send this parameter as a JSON body property.
maxcpuusageOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
200
CPU limit. Use -1 for unlimited.
Validation and use: Optional Send this parameter as a JSON body property.
maxemailsperhourOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Outbound email limit per hour. Use -1 for unlimited.
Validation and use: Optional Send this parameter as a JSON body property.
maxinodeslimitOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Inode limit. Use -1 for unlimited.
Validation and use: Optional Send this parameter as a JSON body property.
maxiodiskbandwidthOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
I/O bandwidth limit. Use -1 for unlimited. IO bandwidth.
Validation and use: Optional Send this parameter as a JSON body property.
maxiopslimitsOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
IOPS limit. Use -1 for unlimited.
Validation and use: Optional Send this parameter as a JSON body property.
maxmemorysizeOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
2048
Memory limit. Use -1 for unlimited.
Validation and use: Optional Send this parameter as a JSON body property.
maxuserprocessesOptional- Send in
- JSON body
- Type
integer|string- Accepted values
- Any value matching integer|string
- Example
-1
Process limit. Use -1 for unlimited.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 9 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"diskspacequota": 100,
"maxcpuusage": "200",
"maxemailsperhour": "-1",
"maxinodeslimit": -1,
"maxiodiskbandwidth": -1,
"maxiopslimits": -1,
"maxmemorysize": "2048",
"maxuserprocesses": -1
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/accounts/demo/resources' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"maxcpuusage":"200","maxmemorysize":"2048"}'Example note: Requires a documented runtime value before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Update CPU + memory
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"maxcpuusage": "200",
"maxmemorysize": "2048"
}
}Requires a documented runtime value before QA can execute this request.
Set unlimited mail rate + CPU
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"maxemailsperhour": "-1",
"maxcpuusage": "200"
}
}Requires a documented runtime value before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Shell
PATCH/v1/accounts/{username}/shellroot resellerUpdate account shell mode.
What this endpoint does
Update account shell mode.
Operational guidance: Updates shell mode for the account user.
Endpoint
PATCH /v1/accounts/{username}/shell
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI and Account AI when the authenticated role, account ownership, feature policy, and parameters permit it.
Parameters (3)
usernameRequired- Send in
- URL path
- Type
string- Accepted values
- Any value matching string
- Example
demo
Target SHM account username. Root may target any authorized account, a reseller only an owned account, and a user only their own account.
Validation and use: Required Replace this placeholder directly in the URL path.
shellRequired- Send in
- JSON body
- Type
enum- Accepted values
- 0, 1, 2
- Example
2
Shell value. Allowed values: 0, 1, 2. Allowed values: 0 (disabled), 1 (bash), 2 (jail). Alias: shell_code.
Validation and use: Required Send this parameter as a JSON body property.
shell_codeOptional- Send in
- JSON body
- Type
enum- Accepted values
- 0, 1, 2
- Example
0
Shell code or shell identifier. Alias of shell. Prefer shell. Allowed values: 0, 1, 2.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 3 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"shell": "2",
"shell_code": 0
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/accounts/demo/shell' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"shell":"2"}'Example note: Requires a documented runtime value before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Enable jailed shell
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"shell": "2"
}
}Requires a documented runtime value before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Status
PATCH/v1/accounts/{username}/statusroot resellerSuspend or unsuspend account.
What this endpoint does
Suspend or unsuspend account.
Operational guidance: Suspend or unsuspend an account.
Endpoint
PATCH /v1/accounts/{username}/status
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI and Account AI when the authenticated role, account ownership, feature policy, and parameters permit it.
Parameters (4)
usernameRequired- Send in
- URL path
- Type
string- Accepted values
- Any value matching string
- Example
demo
Target SHM account username. Root may target any authorized account, a reseller only an owned account, and a user only their own account.
Validation and use: Required Replace this placeholder directly in the URL path.
statusRequired- Send in
- JSON body
- Type
enum- Accepted values
- 1, 2
- Example
1
Status value. Allowed values: 1, 2. Target status: `1` active or `2` suspended. Allowed: 1 (active), 2 (suspended). Alias: new_status.
Validation and use: Required Send this parameter as a JSON body property.
actionOptional- Send in
- JSON body
- Type
enum- Accepted values
- suspend, unsuspend
- Example
suspend
Requested action name. Allowed values: suspend, unsuspend. Optional action alias: `suspend` or `unsuspend`. Alternative to status: suspend|unsuspend. Used only if status is omitted.
Validation and use: Optional Send this parameter as a JSON body property.
new_statusOptional- Send in
- JSON body
- Type
enum- Accepted values
- 1, 2
- Example
1
Alias of `status`. Alias of status. Prefer status. Allowed values: 1, 2.
Validation and use: Optional Send this parameter as a JSON body property.
Complete request template
This reference template contains all 4 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"status": 1,
"action": "suspend",
"new_status": 1
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/accounts/demo/status' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"status":1}'
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Example request
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"status": 1
}
}Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Username
PATCH/v1/accounts/{username}/usernameroot resellerRename account system username.
What this endpoint does
Rename account system username.
Operational guidance: Renames the system username of the account.
Endpoint
PATCH /v1/accounts/{username}/username
Authentication and permissions
Send X-Api-User and X-Api-Key. Root and resellers may call this endpoint; reseller requests remain limited to delegated resources and policy.
AI Mode availability
Discoverable by Workspace AI and Account AI when the authenticated role, account ownership, feature policy, and parameters permit it.
Parameters (2)
usernameRequired- Send in
- URL path
- Type
string- Accepted values
- Any value matching string
- Example
demo
Alias of new_username. Prefer new_username.
Validation and use: Required Replace this placeholder directly in the URL path.
new_usernameRequired- Send in
- JSON body
- Type
string- Accepted values
- Any value matching string
- Example
demoapi2
New system username. Alias: username.
Validation and use: Required Send this parameter as a JSON body property.
Complete request template
This reference template contains all 2 current parameter keys. Keys under query_or_json_parameters may be sent in either accepted location. Conditional or action-specific keys are alternatives; keep only the branch you are actually calling.
{
"path_parameters": {
"username": "demo"
},
"query_parameters": {},
"json_body": {
"new_username": "demoapi2"
},
"query_or_json_parameters": {}
}
Runnable workflow example
curl -sS -X PATCH 'https://panel.example.com:882/v1/accounts/demo/username' \
-H 'X-Api-User: reseller' \
-H 'X-Api-Key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
--data '{"new_username":"demoapi2"}'Example note: Requires a documented runtime value before QA can execute this request.
Documented workflow examples
These are valid workflow branches from the current contract. They may use only the keys needed for that branch; the complete template above remains the exhaustive key list.
Rename account username
{
"path_parameters": {},
"query_parameters": {},
"json_body": {
"new_username": "demoapi2"
}
}Requires a documented runtime value before QA can execute this request.
Successful result
On success, SHM returns a JSON success envelope and the endpoint-specific state or result described below. Verify a mutation with the corresponding read endpoint or owning SHM page.
The success payload is endpoint-specific. Read the returned status, preserve request_id when present, and inspect the resource fields described by the endpoint.
Error response
{
"status": "error",
"code": "validation_error",
"message": "One or more required parameters are missing or invalid."
}
Operational note
This endpoint can change state. Confirm the target and current state, keep a recovery path, and do not retry it blindly after an unknown result.
Result and next check
Read the HTTP status and JSON envelope, preserve the request id when returned, and verify state-changing results through a follow-up read or the related SHM page. Retry reads with care; retry writes only when their idempotency and prior outcome are known.
Theme color