curl -X POST "https://your-paneldns-domain.com/api/v1/sub-clients" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Widgets Co",
"email": "admin@widgets.co",
"password": "S3cur3Pass!"
}'
{
"ok": true,
"data": {
"id": 202,
"org_id": 42,
"name": "Widgets Co",
"email": "admin@widgets.co",
"status": "active",
"zone_limit": 0,
"max_records": 0,
"email_verified_at": null,
"invited_at": null,
"created_at": "2026-06-05T11:00:00.000000Z",
"updated_at": "2026-06-05T11:00:00.000000Z"
}
}
{
"message": "The email has already been taken.",
"errors": {
"email": ["The email has already been taken."]
}
}
{
"ok": false,
"error": "Sub-client limit reached (5/5). Upgrade your plan to add more clients.",
"code": 422
}
Sub-clients
Create Sub-client
Create a new sub-client account in your org. Requires sub_clients:write scope.
POST
/
api
/
v1
/
sub-clients
curl -X POST "https://your-paneldns-domain.com/api/v1/sub-clients" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Widgets Co",
"email": "admin@widgets.co",
"password": "S3cur3Pass!"
}'
{
"ok": true,
"data": {
"id": 202,
"org_id": 42,
"name": "Widgets Co",
"email": "admin@widgets.co",
"status": "active",
"zone_limit": 0,
"max_records": 0,
"email_verified_at": null,
"invited_at": null,
"created_at": "2026-06-05T11:00:00.000000Z",
"updated_at": "2026-06-05T11:00:00.000000Z"
}
}
{
"message": "The email has already been taken.",
"errors": {
"email": ["The email has already been taken."]
}
}
{
"ok": false,
"error": "Sub-client limit reached (5/5). Upgrade your plan to add more clients.",
"code": 422
}
Creates a sub-client account. Sub-clients can log in to your white-label portal to manage their own DNS zones. A welcome email with portal access instructions is sent automatically if your org has email notifications enabled.
string
required
Display name for the sub-client, e.g.
Widgets Co. Max 128 characters.string
required
Email address. Used for portal login and notifications. Must be unique within your org. Max 255 characters.
string
Initial password for portal login. Min 12 characters. If omitted, the sub-client is created as SSO-only — it gets an unguessable random password internally and can only log in via an SSO token or later set a password through the portal invitation flow.
integer
Maximum zones this sub-client may own.
0 (default) inherits the org plan limit. Range 0–10000.integer
Maximum records this sub-client may create.
0 (default) inherits the org plan limit. Range 0–100000.string
Initial account status. One of
active (default) or suspended.curl -X POST "https://your-paneldns-domain.com/api/v1/sub-clients" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Widgets Co",
"email": "admin@widgets.co",
"password": "S3cur3Pass!"
}'
{
"ok": true,
"data": {
"id": 202,
"org_id": 42,
"name": "Widgets Co",
"email": "admin@widgets.co",
"status": "active",
"zone_limit": 0,
"max_records": 0,
"email_verified_at": null,
"invited_at": null,
"created_at": "2026-06-05T11:00:00.000000Z",
"updated_at": "2026-06-05T11:00:00.000000Z"
}
}
{
"message": "The email has already been taken.",
"errors": {
"email": ["The email has already been taken."]
}
}
{
"ok": false,
"error": "Sub-client limit reached (5/5). Upgrade your plan to add more clients.",
"code": 422
}