CNF API · v1
Uma API só para o c.nf: zonas e registros DNS, arquivos pessoais, pacotes, credenciais salvas, consultas de domínio e alguns serviços públicos que dispensam conta. Toda operação autenticada fica restrita à conta cuja chave fez a chamada.
Visão geral
A versão 1 disponibiliza operações de DNS para zonas que você reivindicou pelo Gerenciamento de DNS. Crie e revogue tokens em Conta → Chaves de API.
403 forbidden_zone.GET /v1?format=json ou envie Accept: application/json para /v1.URL base e versionamento
https://api.c.nf/v1
Todos os endpoints ficam abaixo de /v1. Alterações incompatíveis usarão um novo caminho de versão principal. Campos e endpoints retrocompatíveis podem ser adicionados à v1 e serão registrados no histórico de alterações.
Autenticação e escopos
Toda requisição que leia ou altere dados da conta deve incluir um token Bearer. Os tokens começam com cnf_, seguido de 32 caracteres hexadecimais.
curl https://api.c.nf/v1/dns/zones \
-H "Authorization: Bearer cnf_a1b2c3d4e5f60718293a4b5c6d7e8f90"
Os tokens são armazenados como hashes unidirecionais, e o valor completo é exibido somente quando o token é criado. Se você perder um token, revogue-o e crie outro.
Cada token tem escopos. Um token sem escopo configurado recebe dns:read por padrão. O escopo de gravação também permite leituras.
| Escopo | Permissões |
|---|---|
dns:read |
Listar zonas e registros e ler registros individuais. |
dns:write |
Ler, criar, atualizar e excluir registros DNS e reivindicações de zona. |
* |
Todos os escopos. Use esta opção somente quando ela for realmente necessária. |
Uma incompatibilidade retorna 403 forbidden_scope e inclui required_scopes e token_scopes para diagnóstico.
Isolamento por usuário
Um token Bearer corresponde a exatamente um user_id. Toda operação de zona verifica a reivindicação confirmada desse usuário antes de qualquer leitura ou gravação. Não existe exceção administrativa, mecanismo de personificação nem desvio entre usuários.
Mesmo um token com * só pode atuar em zonas verificadas por seu próprio usuário. Tentar usar a zona de outra conta retorna 403 forbidden_zone.
Envelope de resposta
Resposta bem-sucedida
{
"success": true,
"data": { "zones": [] },
"request_id": "req_abc123def456abcd"
}
Resposta de erro
{
"success": false,
"error": "forbidden_zone",
"message": "zone not verified for this account (or does not exist)",
"request_id": "req_abc123def456abcd",
"zone": "example.com"
}
request_id aparece em todas as respostas e pode ser registrado com segurança nos logs do cliente.
Códigos de erro
| HTTP | Código de erro | Significado |
|---|---|---|
| 400 | bad_request |
Um campo obrigatório está ausente, o corpo está malformado ou uma entrada é inválida. |
| 401 | unauthorized |
O token Bearer está ausente, é inválido ou foi revogado. |
| 403 | forbidden_scope |
O token não tem o escopo obrigatório. |
| 403 | forbidden_zone |
A zona não foi verificada para esta conta ou não existe. |
| 404 | not_found |
A zona, o registro ou o usuário solicitado não foi encontrado. |
| 405 | method_not_allowed |
Este endpoint não aceita o método HTTP usado. |
| 502 | upstream_error |
O provedor de DNS retornou um erro. |
Verificação de zona
Quando POST /v1/dns/zones reivindica uma zona, o servidor escolhe um destes caminhos:
-
Verificação instantânea (
method: "auto") — Usada quando nenhuma outra conta reivindicou a zona. A reivindicação é verificada imediatamente. Os registros só se tornam autoritativos depois que o proprietário aponta a delegação NS no registrador para os servidores de nomes retornados. -
Verificação por TXT — Usada para uma reivindicação contestada. Adicione o valor TXT retornado em
_cnfdns-verify.<zone>e chamePOST /v1/dns/zones/{zone}/verify. -
Verificação NS legada — Reivindicações pendentes mais antigas podem usar
verify_method: "ns". A verificação compara as respostas NS ativas da zona com o conjunto esperado de servidores de nomes.
in-addr.arpa e ip6.arpa. Reivindique a zona, obtenha expected_ns e envie esses destinos de delegação ao registro competente.A verificação é idempotente. Repeti-la para uma reivindicação verificada retorna verified: true sem alterar a reivindicação.
Tipos de registro e limites
Tipos de registro aceitos
A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, SPF.
priority é obrigatório para MX e SRV e ignorado para os outros tipos. ttl deve estar entre 60 e 2.592.000 segundos.
Endpoints da API
Serviços públicos
Endpoints pequenos e confiáveis que dispensam conta: hora, endereço, país, câmbio e hashes.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/public/time |
Público | A hora UTC atual em ISO 8601, RFC 2822 e formato Unix. |
| GET | /v1/public/timestamp |
Público | O timestamp Unix atual, em segundos e milissegundos. |
| GET | /v1/public/ip |
Público | O endereço de onde veio esta requisição. |
| GET | /v1/public/geo |
Público | O país de onde veio esta requisição, conforme resolvido na borda. |
| GET | /v1/public/fx |
Público | Taxas de câmbio para uma moeda base, atualizadas a cada hora. |
| GET | /v1/public/hash |
Público | Gere o hash de um texto com SHA-256 ou outro algoritmo suportado. |
Conta
De quem é o token e o que ele pode fazer.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/account/me |
Qualquer token | A conta do token, seus escopos e os endpoints que eles abrem. |
| GET | /v1/account/sessions |
account:read |
Todas as sessões de navegador conectadas a esta conta. |
| POST | /v1/account/sessions/revoke |
account:write |
Encerrar uma sessão. |
| POST | /v1/account/sessions/revoke-all |
account:write |
Encerrar todas as sessões. |
| POST | /v1/account/profile |
account:write |
Alterar seu nome de exibição. |
DNS
Reivindique um domínio, comprove que o controla e gerencie os registros.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/dns/zones |
dns:read |
Todas as zonas reivindicadas por esta conta. |
| POST | /v1/dns/zones |
dns:write |
Reivindique uma zona. Sem disputa é imediato; com disputa vem um desafio TXT. |
| GET | /v1/dns/zones/{zone} |
dns:read |
Uma zona, com as instruções de verificação se ainda estiver pendente. |
| POST | /v1/dns/zones/{zone}/verify |
dns:write |
Executa a verificação e marca a zona como verificada se corresponder. |
| DELETE | /v1/dns/zones/{zone} |
dns:write |
Libera uma reivindicação. Os registros em si não são tocados. |
| GET | /v1/dns/zones/{zone}/records |
dns:read |
Todos os registros de uma zona verificada. |
| POST | /v1/dns/zones/{zone}/records |
dns:write |
Adiciona um registro a uma zona verificada. |
| GET | /v1/dns/zones/{zone}/records/{id} |
dns:read |
Um registro específico. |
| PATCH | /v1/dns/zones/{zone}/records/{id} |
dns:write |
Altera parte de um registro; o que for omitido mantém o valor. |
| DELETE | /v1/dns/zones/{zone}/records/{id} |
dns:write |
Remove um registro. |
Credenciais
O cofre privado de credenciais por trás da ferramenta de credenciais.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/cred |
cred:read cred:write |
Credenciais salvas, com filtro opcional por plataforma. |
| POST | /v1/cred |
cred:write |
Salva uma credencial. |
Arquivos
Armazenamento pessoal: listar, enviar, editar, compartilhar e excluir.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/files |
files:read files:write |
Seus arquivos salvos, dos mais recentes aos mais antigos. |
| GET | /v1/files/{id} |
files:read files:write |
Um arquivo, incluindo o link de compartilhamento, se houver. |
| GET | /v1/files/download |
files:read files:write |
Baixa um arquivo. |
| POST | /v1/files/upload |
files:write |
Envia um arquivo. |
| POST | /v1/files/update |
files:write |
Edita os dados de um arquivo, inclusive o compartilhamento. |
| POST | /v1/files/rename |
files:write |
Altera o nome com que um arquivo é baixado. |
| POST | /v1/files/delete |
files:write |
Exclui um arquivo e seu conteúdo. |
| POST | /v1/files/upload-chunk |
files:write |
Enviar uma parte de um envio grande. |
| POST | /v1/files/upload-finalize |
files:write |
Juntar as partes em um arquivo. |
CDN
Cache na borda e tráfego dos arquivos que você compartilha.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/cdn/stats |
cdn:read |
Configurações de cache e contagem de requisições dos seus arquivos compartilhados. |
| POST | /v1/cdn/config |
cdn:write |
Definir por quanto tempo a borda guarda um arquivo, ou parar de servi-lo. |
| POST | /v1/cdn/purge |
cdn:write |
Remover um arquivo do cache da borda agora. |
Encaminhamento de SMS
Mensagens retransmitidas do seu telefone e as chaves que permitem isso.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/sms/messages |
sms:read |
Mensagens encaminhadas para a sua conta. |
| GET | /v1/sms/keys |
sms:read sms:write |
As chaves de encaminhamento usadas pelos seus aparelhos. |
| POST | /v1/sms/keys |
sms:write |
Emitir uma chave de encaminhamento. No máximo cinco. |
| DELETE | /v1/sms/keys |
sms:write |
Revogar uma chave de encaminhamento. |
Sites estáticos
Envie um zip e sirva um site.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/sites |
sites:read sites:write |
Seus sites estáticos, do publicado mais recentemente ao mais antigo. |
| POST | /v1/sites/deploy |
sites:write |
Publicar um zip como site. |
| POST | /v1/sites/delete |
sites:write |
Excluir um site e seus arquivos. |
Implantações
Os endpoints de formulário, webhook e link curto que você publicou.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/deployments |
deploy:read deploy:write |
Suas implantações e quantas vezes cada uma foi usada. |
| POST | /v1/deployments/toggle |
deploy:write |
Ativar ou desativar uma implantação. |
| POST | /v1/deployments/delete |
deploy:write |
Excluir uma implantação. |
Domínios
Sua carteira de domínios e os dados de registro.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/domains |
domain:read domain:write |
Seus domínios, os que vencem primeiro no topo. |
| POST | /v1/domains/whois-sync |
domain:write |
Atualizar um domínio a partir do registro. |
Pacotes
Publique versões e consulte suas versões e totais de download.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/packages |
packages:read packages:write |
Seus pacotes, com contagem de versões e total de downloads. |
| GET | /v1/packages/{slug} |
packages:read packages:write |
Um pacote, com todas as versões e artefatos. |
| POST | /v1/packages/publish |
packages:write |
Publica uma versão e cria o pacote se ele for novo. |
| POST | /v1/packages/update |
packages:write |
Edita os dados de um pacote. |
| POST | /v1/packages/delete |
packages:write |
Exclui um pacote, todas as versões e todos os artefatos. |
WHOIS
Dados de registro de um domínio, em cache e compartilhados com as ferramentas de domínio.
| Método | Caminho | Escopo | Finalidade |
|---|---|---|---|
| GET | /v1/whois |
whois:read |
Dados de registro de um domínio. |
Para agentes de IA
Aponte um agente para /v1/ai e obtenha um resumo feito para colar direto em um prompt, ou para /v1/ai?format=json e receber os mesmos endpoints como definições de ferramentas. /v1/openapi.json é o contrato OpenAPI 3.1 completo e /llms.txt é o mapa para rastreadores. Os quatro são gerados a partir da mesma tabela de rotas desta página, então nenhum deles descreve um endpoint que não existe.
curl https://api.c.nf/v1/ai
curl https://api.c.nf/v1/ai?format=json
curl https://api.c.nf/v1/openapi.json
Campos da requisição
Criar uma reivindicação de zona
| Campo | Tipo | Obrigatoriedade | Observações |
|---|---|---|---|
zone |
string |
Obrigatório | Zona apex, convertida em minúsculas pelo servidor. Zonas reversas são aceitas. |
Criar um registro DNS
| Campo | Tipo | Obrigatoriedade | Observações |
|---|---|---|---|
type |
string |
Obrigatório | Um entre A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR ou SPF. |
host |
string |
Opcional | Somente o subdomínio. Use uma string vazia ou @ para o apex. |
value |
string |
Obrigatório | Conteúdo do registro, como um endereço IP, nome de destino ou valor de texto. |
ttl |
integer |
Opcional | Entre 60 e 2.592.000 segundos. O padrão é 3.600. |
priority |
integer |
Opcional | Obrigatório para MX e SRV; ignorado para os outros tipos. |
Atualizar um registro DNS
| Campo | Tipo | Obrigatoriedade | Observações |
|---|---|---|---|
host |
string |
Opcional | Subdomínio substituto. |
value |
string |
Opcional | Não pode ficar vazio após a mesclagem com o registro atual. |
ttl |
integer |
Opcional | Entre 60 e 2.592.000 segundos. |
priority |
integer |
Opcional | Usado somente para MX e SRV. |
PATCH. Exclua o registro e crie outro para mudar o tipo.Exemplos
Listar zonas
curl -H "Authorization: Bearer $CNF_TOKEN" \
https://api.c.nf/v1/dns/zonesReivindicar uma zona
curl -X POST https://api.c.nf/v1/dns/zones \
-H "Authorization: Bearer $CNF_TOKEN" \
-H "Content-Type: application/json" \
-d '{"zone":"example.com"}'Verificar uma zona
curl -X POST https://api.c.nf/v1/dns/zones/example.com/verify \
-H "Authorization: Bearer $CNF_TOKEN"Criar um registro
curl -X POST https://api.c.nf/v1/dns/zones/example.com/records \
-H "Authorization: Bearer $CNF_TOKEN" \
-H "Content-Type: application/json" \
-d '{"type":"A","host":"api","value":"192.0.2.10"}'Início rápido
- Crie uma chave de API com
dns:writeem Conta → Chaves de API e copie-a quando ela for exibida. - Armazene o token em uma variável de ambiente protegida em sua máquina.
- Chame
GET /v1/account/mepara confirmar o token e seus escopos. - Reivindique uma zona. A resposta informa se a verificação é instantânea, baseada em TXT ou baseada em NS legado.
- Conclua a prova DNS retornada quando ela for necessária e chame o endpoint de verificação.
- Crie, leia, atualize ou exclua registros somente depois que a reivindicação for verificada.
Registro de alterações
v1.1.0 — gerenciamento de zonas
- Adicionadas reivindicações de zona pela API, incluindo os caminhos de verificação instantânea e por TXT.
- Adicionados endpoints de status de zona individual e de verificação idempotente.
- Adicionada a revogação de reivindicações sem exclusão implícita de registros.
- Adicionados filtros de verificadas, pendentes e todas à lista de zonas.
v1.0.0 — versão inicial
- Adicionadas autenticação por token Bearer e isolamento de zonas por usuário.
- Adicionados escopos de leitura e gravação.
- Adicionados endpoints de conta, lista de zonas e gerenciamento de registros.
- Adicionado um envelope de resposta consistente com um identificador de requisição.