Cliente final que vê "zap-api.tech" na URL da API durante a integração tem dois pensamentos: primeiro, "ah, então não é deles, é da ZAP API". Segundo, "se eles cobram R$299 e a ZAP API cobra R$49, posso ir direto na fonte". Ambos os pensamentos custam dinheiro para o reseller.
Domínio customizado resolve isso. Seu cliente vê api.suaempresa.com.br, recebe documentação branded e fica preso à sua marca. Este artigo é o passo a passo técnico completo, do CNAME ao SSL.
Por que domínio próprio importa
- Confiança: domínio próprio é sinal de empresa estabelecida, não revenda.
- Branding: em apresentações comerciais, "API da Sua Empresa em api.suaempresa.com.br" soa muito melhor que "vamos usar a ZAP API".
- Preço premium: permite cobrar 4-6x mais do que o custo, justificado pelo "produto próprio".
- Sem dependência aparente: se um dia você migrar de provedor, cliente nem percebe (mantém a mesma URL).
- Documentação branded: sua doc em
docs.suaempresa.com.brem vez de doc compartilhada.
Pré-requisitos
- Conta reseller ativa na ZAP API
- Domínio próprio (qualquer registrador: Registro.br, GoDaddy, Cloudflare, etc.)
- Acesso ao painel DNS do seu domínio
- 15 minutos para fazer toda configuração
Passo 1: Adicionar CNAME no DNS
No painel do seu DNS, adicione um registro CNAME:
Tipo: CNAME
Nome: api (ou seja, api.suaempresa.com.br)
Valor: resellers.zap-api.tech
TTL: 300 (5 minutos)
Em alguns registradores brasileiros (Registro.br), o campo "Nome" se chama "Subdomínio" e o "Valor" se chama "Apontamento". É a mesma coisa.
Passo 2: Verificar propagação DNS
Propagação DNS leva de 5 minutos a algumas horas. Para checar:
# Linux/Mac
dig api.suaempresa.com.br CNAME
# Windows
nslookup -type=CNAME api.suaempresa.com.br
# Cross-platform (se tiver Node)
node -e "require('dns').resolveCname('api.suaempresa.com.br', console.log)"
Se a resposta inclui resellers.zap-api.tech, está propagado.
Passo 3: Ativar o domínio na ZAP API
Logado como reseller, chame o endpoint:
POST https://api.zap-api.tech/v1/reseller/custom-domain
Authorization: Bearer tk_seu_token
{
"domain": "api.suaempresa.com.br"
}
A ZAP API faz duas validações:
- Verifica se o CNAME aponta corretamente para nossa infra
- Inicia provisionamento de SSL automático via Let's Encrypt
Response em sucesso
{
"domain": "api.suaempresa.com.br",
"status": "provisioning",
"sslStatus": "pending",
"estimatedReadyIn": "60-180s"
}
Passo 4: Verificar status do SSL
GET https://api.zap-api.tech/v1/reseller/custom-domain
Authorization: Bearer tk_seu_token
{
"domain": "api.suaempresa.com.br",
"status": "active",
"sslStatus": "active",
"sslIssuer": "Let's Encrypt",
"sslExpiresAt": "2026-08-04T00:00:00Z",
"autoRenew": true
}
Código: script de verificação automatizada
Útil para automatizar onboarding de revenda — não ativar até propagação concluída:
// verificar-dominio.js
import { resolveCname } from "dns/promises";
import axios from "axios";
const ALVO_ESPERADO = "resellers.zap-api.tech";
async function aguardarPropagacao(dominio, tentativasMax = 30) {
for (let i = 0; i < tentativasMax; i++) {
try {
const cnames = await resolveCname(dominio);
if (cnames.some((c) => c.includes(ALVO_ESPERADO))) {
console.log(`✅ DNS propagado para ${dominio}`);
return true;
}
} catch (err) {
// ENOTFOUND ainda — continua tentando
}
console.log(`⏳ Tentativa ${i + 1}/${tentativasMax}: DNS ainda não propagou`);
await new Promise((r) => setTimeout(r, 30_000)); // espera 30s
}
return false;
}
async function ativarDominio(dominio) {
const propagou = await aguardarPropagacao(dominio);
if (!propagou) throw new Error("DNS não propagou em 15 minutos");
const { data } = await axios.post(
"https://api.zap-api.tech/v1/reseller/custom-domain",
{ domain: dominio },
{ headers: { Authorization: `Bearer ${process.env.ZAP_TOKEN}` } }
);
console.log("Ativação iniciada:", data);
// Aguarda SSL ativar
for (let i = 0; i < 20; i++) {
await new Promise((r) => setTimeout(r, 10_000));
const { data: status } = await axios.get(
"https://api.zap-api.tech/v1/reseller/custom-domain",
{ headers: { Authorization: `Bearer ${process.env.ZAP_TOKEN}` } }
);
if (status.sslStatus === "active") {
console.log(`🎉 ${dominio} ativo com SSL`);
return status;
}
console.log(`SSL: ${status.sslStatus}, tentando novamente...`);
}
throw new Error("SSL não ativou em 200 segundos");
}
ativarDominio("api.suaempresa.com.br");
O que muda para o cliente final
Antes (sem domínio próprio)
// Código do cliente final
const ZAP = axios.create({
baseURL: "https://api.zap-api.tech/v1",
headers: { Authorization: "Bearer tk_xxx" },
});
Depois (com domínio próprio)
// Código do cliente final
const SUA_API = axios.create({
baseURL: "https://api.suaempresa.com.br/v1",
headers: { Authorization: "Bearer tk_xxx" },
});
Mesmo token, mesma API, URL com sua marca. Para o cliente, é como se você fosse o provedor.
Webhooks também mudam
Se você expõe URL para os clientes configurarem webhooks, agora pode oferecer:
https://webhook.suaempresa.com.br/v1/eventos
É outro CNAME apontando para webhooks.zap-api.tech.
Checklist pré-ativação
- ☑ DNS propagou (verificado com dig/nslookup)
- ☑ Endpoint /v1/reseller/custom-domain retornou status "active"
- ☑ sslStatus = "active"
- ☑ Teste curl funcionando:
curl https://api.suaempresa.com.br/v1/health - ☑ Teste navegador funcionando (cadeado verde, sem aviso de SSL)
- ☑ Documentação atualizada com nova URL
- ☑ Cliente piloto testado e validado
FAQ
Quanto tempo leva o DNS propagar?
Em média 5-15 minutos para registradores brasileiros. Pode chegar a 24h em casos extremos. Para acelerar, configure TTL=300 antes de fazer mudanças (avisa servidores DNS para checarem com mais frequência).
O SSL é automático mesmo? Não preciso renovar?
Sim, automático. Renovamos via Let's Encrypt antes da expiração (60 dias após emissão). Você não precisa fazer nada. Se houver falha de renovação, alertamos por email.
Posso ter múltiplos domínios para o mesmo reseller?
Sim. Se você atende clientes de marcas diferentes, pode configurar até 5 domínios na mesma conta reseller. Cada cliente vê o domínio que você associa a ele.
E se meu domínio cair (DNS down, registrador instável)?
O domínio é seu — se o seu DNS cair, sua API fica fora. Por isso recomendamos usar provedor DNS robusto (Cloudflare, Route 53, Google Cloud DNS). Para alta disponibilidade extrema, configure DNS em dois provedores diferentes.
Posso usar subdomínio em vez de domínio raiz?
Sim. Subdomínio é justamente o recomendado: api.suaempresa.com.br (subdomínio "api" do domínio raiz). Domínio raiz (suaempresa.com.br direto na API) tecnicamente funciona via ALIAS/ANAME mas requer registrador que suporte (Registro.br não suporta na configuração padrão).
Próximo passo
Ative reseller no painel e configure seu domínio em 15 minutos. Criar conta grátis.