As zonas de DNS da conta e os registros de cada zona (A, AAAA, CNAME, MX, TXT e os demais).
Antes de começar, veja API do Virtualizor para revendedores: primeiros passos: lá estão a chave de API, o formato da chamada e as funções virt_api usadas nos exemplos em PHP, Python e Node.js.
Neste artigo
- Listar as zonas de DNS —
act=pdns - Criar uma zona de DNS —
act=pdns - Apagar uma zona de DNS —
act=pdns - Ver os registros de uma zona —
act=managezone - Criar um registro de DNS —
act=managezone - Alterar um registro de DNS —
act=managezone - Apagar um registro de DNS —
act=managezone
Listar as zonas de DNS
Ação:act=pdns · Método: GET
Lista as zonas de DNS (os domínios) que a conta mantém no servidor de DNS do painel. A documentação oficial chama isto de "DNS Server".
Parâmetros
Nenhum além da ação e da autenticação.
Exemplos
curl
curl -sS "https://$VIRT_HOST:4083/index.php?act=pdns&api=json&apikey=$VIRT_KEY&apipass=$VIRT_PASS"PHP
$r = virt_api('pdns');
print_r($r);Python
r = virt_api("pdns")
print(r)Node.js
const r = await virtApi('pdns');
console.log(r);Resposta
domains traz as zonas, com o id de cada uma — o domainid usado nas chamadas de registro.
Cuidados
- A zona só responde na internet se o domínio estiver delegado para os servidores de DNS do painel, no registro do domínio.
Documentação oficial: List DNS Server.
Criar uma zona de DNS
Ação:act=pdns · Método: POST
Cria a zona de um domínio, onde depois entram os registros.
Parâmetros
| Parâmetro | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
addzone | corpo (POST) | 1 | sim | Confirma a criação. |
zone_name | corpo (POST) | texto | sim | O domínio. |
pdns_server | corpo (POST) | número | sim | Id do servidor de DNS onde a zona será criada. A tabela oficial o pede; o exemplo dela não o envia. |
Exemplos
curl
curl -sS "https://$VIRT_HOST:4083/index.php?act=pdns&api=json&apikey=$VIRT_KEY&apipass=$VIRT_PASS" \
--data-urlencode 'addzone=1' \
--data-urlencode 'zone_name=exemplo.com.br'PHP
$r = virt_api('pdns', [], [
'addzone' => '1',
'zone_name' => 'exemplo.com.br',
]);
print_r($r);Python
r = virt_api("pdns", post={
"addzone": "1",
"zone_name": "exemplo.com.br",
})
print(r)Node.js
const r = await virtApi('pdns', {}, {
addzone: '1',
zone_name: 'exemplo.com.br',
});
console.log(r);Resposta
add_done e done confirmam; domains traz as zonas, já com a nova.
Documentação oficial: ADD DNS.
Apagar uma zona de DNS
Ação:act=pdns · Método: POST
Apaga a zona de um domínio, com todos os registros dela.
Parâmetros
| Parâmetro | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
del | corpo (POST) | número | sim | Id da zona. |
Exemplos
curl
curl -sS "https://$VIRT_HOST:4083/index.php?act=pdns&api=json&apikey=$VIRT_KEY&apipass=$VIRT_PASS" \
--data-urlencode 'del=7'PHP
$r = virt_api('pdns', [], [
'del' => '7',
]);
print_r($r);Python
r = virt_api("pdns", post={
"del": "7",
})
print(r)Node.js
const r = await virtApi('pdns', {}, {
del: '7',
});
console.log(r);Resposta
delete_done e done confirmam; domains traz as zonas que sobraram.
Cuidados
- Com a zona apagada, o domínio para de resolver se estiver delegado para o painel.
- A tabela oficial chama o parâmetro de
id; o exemplo em curl dela usadelno corpo, e o SDK oficial mandadelna URL. Este artigo segue o exemplo.
Documentação oficial: Delete DNS.
Ver os registros de uma zona
Ação:act=managezone · Método: GET
Lista os registros de uma zona de DNS.
Parâmetros
| Parâmetro | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
domainid | URL | número | sim | Id da zona, da lista em Listar as zonas de DNS. |
Exemplos
curl
curl -sS "https://$VIRT_HOST:4083/index.php?act=managezone&domainid=7&api=json&apikey=$VIRT_KEY&apipass=$VIRT_PASS"PHP
$r = virt_api('managezone', [
'domainid' => '7',
]);
print_r($r);Python
r = virt_api("managezone", get={
"domainid": "7",
})
print(r)Node.js
const r = await virtApi('managezone', {
domainid: '7',
});
console.log(r);Resposta
records traz os registros da zona, com o id de cada um (o que se usa para alterar e apagar); domain traz os dados da zona.
Cuidados
- A tabela oficial lista
domainidcomo POST; a URL e o exemplo oficiais mandam na URL, como aqui.
Documentação oficial: Zone Info.
Criar um registro de DNS
Ação:act=managezone · Método: POST
Cria um registro (A, AAAA, CNAME, MX, TXT…) numa zona.
Parâmetros
| Parâmetro | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
domainid | URL | número | sim | Id da zona, da lista em Listar as zonas de DNS. |
add | corpo (POST) | 1 | sim | Confirma a criação. |
name | corpo (POST) | texto | sim | Nome do registro. |
type | corpo (POST) | texto | sim | Tipo: A, AAAA, CNAME, MX, TXT e os demais. |
content | corpo (POST) | texto | sim | Conteúdo: o IP num registro A, o destino num CNAME, o texto num TXT. |
prio | corpo (POST) | número | sim | Prioridade; só tem efeito em MX e SRV. |
ttl | corpo (POST) | número | sim | Tempo de cache, em segundos. |
Exemplos
curl
curl -sS "https://$VIRT_HOST:4083/index.php?act=managezone&domainid=7&api=json&apikey=$VIRT_KEY&apipass=$VIRT_PASS" \
--data-urlencode 'add=1' \
--data-urlencode 'name=www' \
--data-urlencode 'type=A' \
--data-urlencode 'content=203.0.113.10' \
--data-urlencode 'prio=0' \
--data-urlencode 'ttl=3600'PHP
$r = virt_api('managezone', [
'domainid' => '7',
], [
'add' => '1',
'name' => 'www',
'type' => 'A',
'content' => '203.0.113.10',
'prio' => '0',
'ttl' => '3600',
]);
print_r($r);Python
r = virt_api("managezone", get={
"domainid": "7",
}, post={
"add": "1",
"name": "www",
"type": "A",
"content": "203.0.113.10",
"prio": "0",
"ttl": "3600",
})
print(r)Node.js
const r = await virtApi('managezone', {
domainid: '7',
}, {
add: '1',
name: 'www',
type: 'A',
content: '203.0.113.10',
prio: '0',
ttl: '3600',
});
console.log(r);Resposta
done confirma. records traz os registros da zona já atualizados, e domain os dados da zona. add_done também confirma a criação.
Cuidados
- A documentação oficial não diz se
nameé só o subdomínio ou o nome completo. Depois de criar, confira em Ver os registros de uma zona como o registro ficou.
Documentação oficial: Add DNS Record.
Alterar um registro de DNS
Ação:act=managezone · Método: POST
Altera um registro existente. Mande todos os campos, não só os que mudam.
Parâmetros
| Parâmetro | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
domainid | URL | número | sim | Id da zona, da lista em Listar as zonas de DNS. |
edit | corpo (POST) | 1 | sim | Confirma a alteração. |
id | corpo (POST) | número | sim | Id do registro. |
name | corpo (POST) | texto | sim | Nome do registro. |
type | corpo (POST) | texto | sim | Tipo. |
content | corpo (POST) | texto | sim | Conteúdo novo. |
prio | corpo (POST) | número | sim | Prioridade. |
ttl | corpo (POST) | número | sim | Tempo de cache, em segundos. |
Exemplos
curl
curl -sS "https://$VIRT_HOST:4083/index.php?act=managezone&domainid=7&api=json&apikey=$VIRT_KEY&apipass=$VIRT_PASS" \
--data-urlencode 'edit=1' \
--data-urlencode 'id=21' \
--data-urlencode 'name=www' \
--data-urlencode 'type=A' \
--data-urlencode 'content=203.0.113.11' \
--data-urlencode 'prio=0' \
--data-urlencode 'ttl=3600'PHP
$r = virt_api('managezone', [
'domainid' => '7',
], [
'edit' => '1',
'id' => '21',
'name' => 'www',
'type' => 'A',
'content' => '203.0.113.11',
'prio' => '0',
'ttl' => '3600',
]);
print_r($r);Python
r = virt_api("managezone", get={
"domainid": "7",
}, post={
"edit": "1",
"id": "21",
"name": "www",
"type": "A",
"content": "203.0.113.11",
"prio": "0",
"ttl": "3600",
})
print(r)Node.js
const r = await virtApi('managezone', {
domainid: '7',
}, {
edit: '1',
id: '21',
name: 'www',
type: 'A',
content: '203.0.113.11',
prio: '0',
ttl: '3600',
});
console.log(r);Resposta
done confirma. records traz os registros da zona já atualizados, e domain os dados da zona.
Cuidados
- A página oficial não tem tabela de parâmetros e a descrição dela foi copiada da de criar. Os parâmetros aqui vêm do exemplo em PHP dela; o exemplo em curl omite o
id, sem o qual não há como saber qual registro alterar.
Documentação oficial: Edit DNS Record.
Apagar um registro de DNS
Ação:act=managezone · Método: POST
Apaga um registro de uma zona.
Parâmetros
| Parâmetro | Onde | Tipo | Obrigatório | Descrição |
|---|---|---|---|---|
domainid | URL | número | sim | Id da zona, da lista em Listar as zonas de DNS. |
delete | corpo (POST) | número | sim | Id do registro. |
Exemplos
curl
curl -sS "https://$VIRT_HOST:4083/index.php?act=managezone&domainid=7&api=json&apikey=$VIRT_KEY&apipass=$VIRT_PASS" \
--data-urlencode 'delete=19'PHP
$r = virt_api('managezone', [
'domainid' => '7',
], [
'delete' => '19',
]);
print_r($r);Python
r = virt_api("managezone", get={
"domainid": "7",
}, post={
"delete": "19",
})
print(r)Node.js
const r = await virtApi('managezone', {
domainid: '7',
}, {
delete: '19',
});
console.log(r);Resposta
del_done e done confirmam; records traz os registros que sobraram.
Cuidados
- O cabeçalho da página oficial põe
deletena URL; a tabela e os exemplos dela mandam no corpo, como aqui.
Documentação oficial: Delete DNS Record.
Texto da Vitt Host, escrito a partir da documentação oficial da Virtualizor, lida em 07/10/2026. Onde a documentação oficial se contradiz, o artigo segue os exemplos dela e aponta a diferença em Cuidados.