API

Tudo que o painel faz com domínios e registros DNS, em JSON. Autentique com um token da sua conta e automatize a criação de registros, a consulta dos servidores e a importação de zonas.

Tokens

Os tokens são criados no painel, depois de entrar com o seu e-mail.

Gerenciar tokens

Autenticação

Envie o token no cabeçalho Authorization. Todas as respostas são JSON; erros vêm como {"error": "mensagem"} com status 400 (dados inválidos), 401 (token inválido) ou 404 (não encontrado).

curl https://eurochocopie.com/api/v1/account \
  -H "Authorization: Bearer ecp_SEU_TOKEN"

Base: https://eurochocopie.com/api/v1. Os limites da conta valem também pela API: 20 domínios, 200 registros por domínio.

Endpoints

GET
/account

Sua conta, seus servidores (IP atual, usuário SSH, vencimento) e a lista de domínios.

GET
/servers

Só os servidores. Cada um traz id, label (apelido ou plano + IP), nickname, plano, IP atual e vencimento.

PATCH
/servers/{id}

Dá um apelido ao servidor. Corpo: {"nickname": "loja"} (vazio remove). Útil quando a conta tem mais de um servidor.

GET
/domains

Todos os domínios com nameservers, registros "meu servidor" e demais registros.

POST
/domains

Adiciona um domínio. Corpo: {"name": "exemplo.com"}. Devolve o domínio; os nameservers chegam em instantes.

GET
/domains/{id}

Um domínio com todos os registros e o status de cada um.

DELETE
/domains/{id}

Remove o domínio e a zona DNS.

POST
/domains/{id}/server-records

Cria um nome que segue o IP do seu servidor. Corpo: {"name": "www"} (use @ para a raiz). Com mais de um servidor na conta, informe qual: {"name": "www", "server": "id do servidor"}; repetir o POST com outro server move o nome. Cada registro devolve server_id e server_label.

DELETE
/domains/{id}/server-records/{record_id}

Remove um nome "meu servidor".

POST
/domains/{id}/records

Cria um registro. Corpo: {"type": "MX", "name": "@", "content": "mx1.zoho.com", "priority": 10, "ttl": 1}. Tipos: MX, TXT, CNAME, CAA, A, AAAA. TTL 1 = automático, ou de 60 a 86400 segundos.

POST
/domains/{id}/records/import

Importa várias linhas de uma vez (formato BIND ou TIPO nome conteúdo). Corpo: {"text": "...", "dry_run": true}. Com dry_run só valida e devolve o que seria criado.

DELETE
/domains/{id}/records/{record_id}

Remove um registro.

GET
/cdn

Situação da CDN Brasil na conta: status, franquia, consumo do período e nomes ligados.

POST
/cdn/orders

Cria o pedido de contratação ou renovação da CDN Brasil. Devolve o pedido com o link de pagamento.

POST
/domains/{id}/server-records/{record_id}/cdn

Liga a CDN nesse nome. Corpo opcional: {"origin": "https"} ou "http". Devolve o domínio; o campo cdn_state do registro passa por cdn_issuing até cdn_active.

DELETE
/domains/{id}/server-records/{record_id}/cdn

Desliga a CDN nesse nome; o DNS volta a seguir o servidor.

POST
/domains/{id}/server-records/{record_id}/cdn/purge

Limpa o cache desse nome em todos os pontos de presença (até 10 vezes por hora).

Exemplos

Apontar www para o servidor e configurar e-mail

TOKEN=ecp_SEU_TOKEN
BASE=https://eurochocopie.com/api/v1
DOMINIO=$(curl -s $BASE/domains -H "Authorization: Bearer $TOKEN" | jq -r '.domains[] | select(.name=="exemplo.com") | .id')

curl -s -X POST $BASE/domains/$DOMINIO/server-records \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"name": "www"}'

curl -s -X POST $BASE/domains/$DOMINIO/records \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"type": "MX", "name": "@", "content": "mx1.zoho.com", "priority": 10}'

Importar uma zona inteira

curl -s -X POST $BASE/domains/$DOMINIO/records/import \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d @- <<'FIM'
{"dry_run": false, "text": "@ IN MX 10 mx1.zoho.com.\n@ IN TXT \"v=spf1 include:zoho.com ~all\"\n_dmarc IN TXT \"v=DMARC1; p=none\""}
FIM

Acompanhar o status de um registro

Registros nascem como pending_create e passam a active quando a Cloudflare confirma, normalmente em poucos segundos. Se a Cloudflare recusar, o status vira error e o campo error explica o motivo.

curl -s $BASE/domains/$DOMINIO -H "Authorization: Bearer $TOKEN" | jq '.records[] | {type, name, status, error}'