Tutoriais

API do Virtualizor: servidores e registros de DNS

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

  1. Listar as zonas de DNS — act=pdns
  2. Criar uma zona de DNS — act=pdns
  3. Apagar uma zona de DNS — act=pdns
  4. Ver os registros de uma zona — act=managezone
  5. Criar um registro de DNS — act=managezone
  6. Alterar um registro de DNS — act=managezone
  7. 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âmetroOndeTipoObrigatórioDescrição
addzonecorpo (POST)1simConfirma a criação.
zone_namecorpo (POST)textosimO domínio.
pdns_servercorpo (POST)númerosimId 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âmetroOndeTipoObrigatórioDescrição
delcorpo (POST)númerosimId 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 usa del no corpo, e o SDK oficial manda del na 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âmetroOndeTipoObrigatórioDescrição
domainidURLnúmerosimId 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 domainid como 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âmetroOndeTipoObrigatórioDescrição
domainidURLnúmerosimId da zona, da lista em Listar as zonas de DNS.
addcorpo (POST)1simConfirma a criação.
namecorpo (POST)textosimNome do registro.
typecorpo (POST)textosimTipo: A, AAAA, CNAME, MX, TXT e os demais.
contentcorpo (POST)textosimConteúdo: o IP num registro A, o destino num CNAME, o texto num TXT.
priocorpo (POST)númerosimPrioridade; só tem efeito em MX e SRV.
ttlcorpo (POST)númerosimTempo 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âmetroOndeTipoObrigatórioDescrição
domainidURLnúmerosimId da zona, da lista em Listar as zonas de DNS.
editcorpo (POST)1simConfirma a alteração.
idcorpo (POST)númerosimId do registro.
namecorpo (POST)textosimNome do registro.
typecorpo (POST)textosimTipo.
contentcorpo (POST)textosimConteúdo novo.
priocorpo (POST)númerosimPrioridade.
ttlcorpo (POST)númerosimTempo 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âmetroOndeTipoObrigatórioDescrição
domainidURLnúmerosimId da zona, da lista em Listar as zonas de DNS.
deletecorpo (POST)númerosimId 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 delete na 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.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS