curl -X POST https://your-paneldns-domain.com/api/v1/zones \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "widgets.co",
"provider_id": 3,
"sub_client_id": 201
}'
{
"ok": true,
"data": {
"id": 501,
"name": "widgets.co",
"remote_id": "abcd1234ef567890",
"status": "active",
"provider_id": 3,
"sub_client_id": 201,
"notes": null,
"tags": [],
"last_synced_at": null,
"created_at": "2026-06-04T17:00:00.000000Z",
"updated_at": "2026-06-04T17:00:00.000000Z"
}
}
{
"ok": false,
"error": "Zone already exists.",
"code": 409
}
{
"ok": false,
"error": "Sub-client not found.",
"code": 404
}
{
"ok": false,
"error": "Zone limit reached for this plan.",
"code": 422
}
Zones
Create Zone
Create a new DNS zone in your org. Requires zones:write scope.
POST
/
api
/
v1
/
zones
curl -X POST https://your-paneldns-domain.com/api/v1/zones \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "widgets.co",
"provider_id": 3,
"sub_client_id": 201
}'
{
"ok": true,
"data": {
"id": 501,
"name": "widgets.co",
"remote_id": "abcd1234ef567890",
"status": "active",
"provider_id": 3,
"sub_client_id": 201,
"notes": null,
"tags": [],
"last_synced_at": null,
"created_at": "2026-06-04T17:00:00.000000Z",
"updated_at": "2026-06-04T17:00:00.000000Z"
}
}
{
"ok": false,
"error": "Zone already exists.",
"code": 409
}
{
"ok": false,
"error": "Sub-client not found.",
"code": 404
}
{
"ok": false,
"error": "Zone limit reached for this plan.",
"code": 422
}
Creates the zone in PanelDNS and on the DNS provider associated with the specified server. The zone name must be a valid domain label: lowercase alphanumeric, hyphens, and dots — no consecutive dots, max 253 characters.
string
required
Fully qualified domain name, e.g.
example.com. Automatically lowercased.integer
ID of the DNS server/provider to create the zone on. Omit to leave the zone unattached (useful for importing later).
integer
Assign the zone to a sub-client. Omit for org-level zones.
string
Internal notes. Max 1000 characters. Not visible to sub-clients.
curl -X POST https://your-paneldns-domain.com/api/v1/zones \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "widgets.co",
"provider_id": 3,
"sub_client_id": 201
}'
{
"ok": true,
"data": {
"id": 501,
"name": "widgets.co",
"remote_id": "abcd1234ef567890",
"status": "active",
"provider_id": 3,
"sub_client_id": 201,
"notes": null,
"tags": [],
"last_synced_at": null,
"created_at": "2026-06-04T17:00:00.000000Z",
"updated_at": "2026-06-04T17:00:00.000000Z"
}
}
{
"ok": false,
"error": "Zone already exists.",
"code": 409
}
{
"ok": false,
"error": "Sub-client not found.",
"code": 404
}
{
"ok": false,
"error": "Zone limit reached for this plan.",
"code": 422
}