Install
openclaw skills install @picodozbotdoz/dxyz-cpanelManage cPanel hosting accounts via API for version 134.0.11 and compatible versions. Supports account management, DNS zones, email accounts, databases (MySQL/PostgreSQL), file operations, SSL certificates, backups, and bandwidth monitoring. Use when managing cPanel/WHM servers, creating accounts, configuring domains, managing email, or performing server administration tasks. Integrates with UAPI, WHM API, and cPanel API 2. Uses exec, read_file, write_file tools for API calls and configuration.
openclaw skills install @picodozbotdoz/dxyz-cpanelManage cPanel hosting accounts via API (version 134.0.11 compatible).
# Using API token (recommended)
export CPANEL_HOST="https://your-server.com:2087"
export CPANEL_TOKEN="your-api-token"
# Test connection
exec command="curl -s -H 'Authorization: whm $CPANEL_TOKEN' '$CPANEL_HOST/json-api/version' | jq ."
List Accounts:
exec command="curl -s -H 'Authorization: whm $CPANEL_TOKEN' '$CPANEL_HOST/json-api/listaccts?api.version=1' | jq ."
Create Email Account:
exec command="curl -s -H 'Authorization: cpanel $CPANEL_TOKEN' '$CPANEL_HOST/execute/Email/add_pop?email=user&password=secure123&domain=example.com' | jq ."
| API | Purpose | Endpoint Prefix |
|---|---|---|
| WHM API | Server admin, account management | /json-api/ |
| UAPI | cPanel user operations | /execute/ |
| cPanel API 2 | Legacy (deprecated) | /json-api/cpanel2 |
Authorization: whm <token> (WHM) or Authorization: cpanel <token> (UAPI)curl -u 'username:password' 'https://server:2087/json-api/...'
Create Account:
exec command='curl -s -H "Authorization: whm $CPANEL_TOKEN" "$CPANEL_HOST/json-api/createacct?api.version=1&username=newuser&domain=newdomain.com&password=secure123&plan=default" | jq .'
Suspend/Unsuspend:
# Suspend
exec command='curl -s -H "Authorization: whm $CPANEL_TOKEN" "$CPANEL_HOST/json-api/suspendacct?api.version=1&user=username&reason=non-payment" | jq .'
# Unsuspend
exec command='curl -s -H "Authorization: whm $CPANEL_TOKEN" "$CPANEL_HOST/json-api/unsuspendacct?api.version=1&user=username" | jq .'
Terminate Account:
exec command='curl -s -H "Authorization: whm $CPANEL_TOKEN" "$CPANEL_HOST/json-api/removeacct?api.version=1&user=username" | jq .'
List DNS Zones:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/DNS/zone_records?domain=example.com" | jq .'
Add DNS Record:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/DNS/add_zone_record?domain=example.com&name=www&type=A&address=192.168.1.1&ttl=3600" | jq .'
List Email Accounts:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/Email/list_pops?domain=example.com" | jq .'
Create Email Account:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/Email/add_pop?email=newuser&password=secure123&domain=example.com"a=250" | jq .'
Set Email Forwarder:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/Email/add_forwarder?domain=example.com&email=user&fwdopt=fwd&fwdemail=dest@example.org" | jq .'
Create MySQL Database:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/Mysql/create_database?name=mydb" | jq .'
Create MySQL User:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/Mysql/create_user?name=myuser&password=secure123" | jq .'
Grant Privileges:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/Mysql/set_privileges_on_database?user=myuser&database=mydb&privileges=ALL%20PRIVILEGES" | jq .'
List SSL Certificates:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/SSL/list_certs" | jq .'
Install Let's Encrypt:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/SSL/install_ssl?domain=example.com&cert=$(cat cert.pem | jq -sR .)&key=$(cat key.pem | jq -sR .)" | jq .'
List Files:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/Fileman/list_files?dir=public_html" | jq .'
Upload File:
exec command='curl -s -H "Authorization: cpanel $CPANEL_TOKEN" "$CPANEL_HOST/execute/Fileman/upload_files?dir=public_html&file-1=@localfile.txt" | jq .'
Create Account Backup:
exec command='curl -s -H "Authorization: whm $CPANEL_TOKEN" "$CPANEL_HOST/json-api/backupacct?api.version=1&user=username" | jq .'
Restore Account:
exec command='curl -s -H "Authorization: whm $CPANEL_TOKEN" "$CPANEL_HOST/json-api/restoreacct?api.version=1&user=username" | jq .'
The skill includes helper scripts:
scripts/cpanel_api.sh - Generic API caller with error handlingscripts/create_account.sh - Create hosting accountscripts/manage_dns.sh - DNS zone managementscripts/manage_email.sh - Email account operationsscripts/manage_database.sh - MySQL/PostgreSQL operationsscripts/backup_account.sh - Backup/restore operationsExecute scripts using exec tool:
exec command="bash ~/.picoclaw/workspace-default/skills/dxyz-cpanel/scripts/cpanel_api.sh listaccts"
Load reference files using read_file tool when needed:
CPANEL_HOST="https://your-server.com:2087" # WHM port
CPANEL_TOKEN="your-api-token" # API token
CPANEL_USER="root" # WHM username
Create ~/.cpanel/config.json:
{
"host": "https://your-server.com:2087",
"token": "your-api-token",
"default_plan": "default",
"default_quota": 1000,
"default_bwlimit": 10000
}
This skill supports:
metadata.result for statusapi.version=1 for consistent responses| Error | Cause | Solution |
|---|---|---|
Access denied | Invalid token/permissions | Regenerate token, check ACL |
Account exists | Duplicate username | Use different username |
Invalid domain | Domain format/syntax | Check DNS, use FQDN |
Quota exceeded | Disk limit reached | Increase quota or cleanup |