Create account
Create accounts (users) of varying permission levels (MasterAdmin, DomainAdmin, MailUser)
- HTTP Method: 
POST 
- URL: 
https://example.domain.tld/api/v1/accounts/ 
- Require authentication: 
Yes 
Permission levels
- MailUser is the permission level with ability to send and receive emails.
 
- DomainAdmin administers all MailUsers of domains belonging to them.
 
- MasterAdmin administers all admins & MailUsers and has access to server-wide configuration.
 
Password requirements
- Must be at least 12 characters long
 
- Must contain at least 1 uppercase & lowercase letter
 
- Must contain at least 1 digit
 
Create MasterAdmin
- Permission level required: 
MasterAdmin 
Request parameters
| Parameter | 
Type | 
Description | 
Required | 
| username | 
str | 
Account username | 
Required | 
| password | 
str | 
Account password | 
Required | 
| perm_level | 
str | 
Account permission level | 
Required | 
| api_access | 
int | 
Enable (1) or disable (0) API access | 
Required | 
| enabled | 
int | 
Enable (1) or disable (0) account | 
Required | 
| recovery_email | 
str | 
Email to use for password reset | 
Required | 
| language | 
str | 
ISO 639-1 or ISO 639-2 language code | 
Required | 
password can be in plain-text or hashed form. Hash must use SHA512-Crypt scheme and must be of the following format: {SHA512-CRYPT}$6$...
Response parameters
| Parameter | 
Type | 
Description | 
| username | 
str | 
Account username | 
| perm_level | 
str | 
Account permission level | 
| api_access | 
int | 
Enabled (1) or disabled (0) API access | 
| enabled | 
int | 
Enabled (1) or disabled (0) account | 
| recovery_email | 
str | 
Email used for password reset | 
| language | 
str | 
ISO 639-1 or ISO 639-2 language code | 
Example request (Python)
import requests
import json
from pprint import pprint
url = "https://example.domain.tld/api/v1/accounts/"
data = {
"username" : "some-username",
"password" : "some-password",
"perm_level" : "MasterAdmin",
"api_access" : 1,
"enabled" : 1,
"recovery_email" : "recovery@domain.tld",
"language" : "en"
}
r = requests.post(url, json=data, auth=("admin","long-auth_token-here"))
try:
    pprint(r.json())
except: 
    print(r.text)
Example response (JSON)
{'api_access': 1,
 'enabled': 1,
 'language': 'en',
 'perm_level': 'MasterAdmin',
 'recovery_email': 'recovery@domain.tld',
 'username': 'some-username'}
Create DomainAdmin
- Permission level required: 
MasterAdmin 
Request parameters
| Parameter | 
Type | 
Description | 
Required | 
| username | 
str | 
Account username | 
Required | 
| password | 
str | 
Account password | 
Required | 
| perm_level | 
str | 
Account permission level | 
Required | 
| api_access | 
int | 
Enable (1) or disable (0) API access | 
Required | 
| enabled | 
int | 
Enable (1) or disable (0) account | 
Required | 
| recovery_email | 
str | 
Email to use for password reset | 
Required | 
| language | 
str | 
ISO 639-1 or ISO 639-2 language code | 
Required | 
| domains | 
str | 
Comma separated list of administered domains | 
Required | 
| storagequota_total | 
int | 
Storage quota in MB | 
Required | 
| quota_domains | 
int | 
Domains quota | 
Required | 
| quota_mailboxes | 
int | 
Mailboxes quota | 
Required | 
| quota_aliases | 
int | 
Aliases quota | 
Required | 
| quota_domainaliases | 
int | 
Domain aliases quota | 
Required | 
password can be in plain-text or hashed form. Hash must use SHA512-Crypt scheme and must be of the following format: {SHA512-CRYPT}$6$...
Response parameters
| Parameter | 
Type | 
Description | 
| username | 
str | 
Account username | 
| perm_level | 
str | 
Account permission level | 
| api_access | 
int | 
Enabled (1) or disabled (0) API access | 
| enabled | 
int | 
Enabled (1) or disabled (0) account | 
| recovery_email | 
str | 
Email used for password reset | 
| language | 
str | 
ISO 639-1 or ISO 639-2 language code | 
| domains | 
str | 
Comma separated list of administered domains | 
| storagequota_total | 
int | 
Storage quota in MB | 
| quota_domains | 
int | 
Domains quota | 
| quota_mailboxes | 
int | 
Mailboxes quota | 
| quota_aliases | 
int | 
Aliases quota | 
| quota_domainaliases | 
int | 
Domain aliases quota | 
Example request (Python)
import requests
import json
from pprint import pprint
url = "https://example.domain.tld/api/v1/accounts/"
data = {
"username" : "some-username",
"password" : "some-password",
"perm_level" : "DomainAdmin",
"api_access" : 1,
"enabled" : 1,
"recovery_email" : "recovery@domain.tld",
"language" : "en",
"domains" : "domain1.tld, domain2.tld", # value can be empty string
"storagequota_total" : 500,
"quota_domains" : 5,
"quota_mailboxes" : 5,
"quota_aliases" : 5,
"quota_domainaliases" : 5,
}
r = requests.post(url, json=data, auth=("admin","long-auth_token-here"))
try:
    pprint(r.json())
except: 
    print(r.text)
Example response (JSON)
{   
    'api_access': 1,
    'domains' : 'domain1.tld, domain2.tld',
    'enabled': 1,
    'language': 'en',
    'perm_level': 'DomainAdmin',
    'quota_domains' : 5,
    'quota_mailboxes' : 5,
    'quota_aliases' : 5,
    'quota_domainaliases' : 5,
    'recovery_email': 'recovery@domain.tld',
    'storagequota_total' : 500,
    'username': 'some-username'
}
Create MailUser
- Permission level required: 
MasterAdmin / DomainAdmin 
Request parameters
| Parameter | 
Type | 
Description | 
Required | 
| username | 
str | 
Account username (email address) | 
Required | 
| password | 
str | 
Account password | 
Required | 
| perm_level | 
str | 
Account permission level | 
Required | 
| api_access | 
int | 
Enable (1) or disable (0) API access | 
Required | 
| enabled | 
int | 
Enable (1) or disable (0) account | 
Required | 
| recovery_email | 
str | 
Email to use for password reset | 
Required | 
| language | 
str | 
ISO 639-1 or ISO 639-2 language code | 
Required | 
| domain | 
str | 
Domain of email account | 
Required | 
| storagequota_total | 
int | 
Storage quota in MB | 
Required | 
password can be in plain-text or hashed form. Hash must use SHA512-Crypt scheme and must be of the following format: {SHA512-CRYPT}$6$...
Response parameters
| Parameter | 
Type | 
Description | 
| username | 
str | 
Account username (email address) | 
| perm_level | 
str | 
Account permission level | 
| api_access | 
int | 
Enabled (1) or disabled (0) API access | 
| enabled | 
int | 
Enabled (1) or disabled (0) account | 
| recovery_email | 
str | 
Email used for password reset | 
| language | 
str | 
ISO 639-1 or ISO 639-2 language code | 
| domain | 
str | 
Domain of email account | 
| storagequota_total | 
int | 
Storage quota in MB | 
Example request (Python)
import requests
import json
from pprint import pprint
url = "https://example.domain.tld/api/v1/accounts/"
data = {
"username" : "user@mydomain.tld",
"password" : "some-password",
"perm_level" : "MailUser",
"api_access" : 1,
"enabled" : 1,
"recovery_email" : "recovery@domain.tld",
"language" : "en",
"domain" : "mydomain.tld",
"storagequota_total" : 100
}
r = requests.post(url, json=data, auth=("admin","long-auth_token-here"))
try:
    pprint(r.json())
except: 
    print(r.text)
Example response (JSON)
{   
    'api_access': 1,
    'domain' : 'mydomain.tld',
    'enabled': 1,
    'language': 'en',
    'perm_level': 'MailUser',
    'recovery_email': 'recovery@domain.tld',
    'storagequota_total' : 100,
    'username': 'user@mydomain.tld'
}