TRUST
Score de confiabilidade
Um número de 0 a 100 pra um domínio, composto a partir de vários sinais independentes — SSL, blocklist, histórico de malware, idade do domínio, situação cadastral via CNPJ. Cada sinal é auditável na própria resposta.
Trust score
A 0-100 number for a domain, composed from several independent signals — SSL, blocklist, malware history, domain age, business status via CNPJ. Every signal is auditable right in the response.
SYNC resposta na mesma chamada answers in the same call
Endpoint
Endpoint
/api/v1/trust/{domain}
score composto pra um domínio
composite score for a domain
?cnpj= opcional — só relevante pra domínios que não são .br, onde não dá pra derivar o CNPJ automaticamente via RDAP.
Optional ?cnpj= — only relevant for non-.br domains, where the CNPJ can't be derived automatically via RDAP.
Sinais e pesos
Signals and weights
| Sinal | Signal | Peso | Fonte | Source |
|---|---|---|---|---|
ssl |
25 | Dial próprio na porta 443 — certificado válido, não expirado, não self-signed | Own dial on port 443 — certificate valid, not expired, not self-signed | |
dns_blocklist_big + dns_blocklist_nsfw |
5 + 5 | Blocklists OISD, as mesmas da API de DNS | OISD blocklists, the same ones the DNS API uses | |
malware_history |
30 | Feed de malware do URLhaus (abuse.ch) — maior peso, o sinal mais forte de perigo real | URLhaus (abuse.ch) malware feed — heaviest weight, the strongest signal of real danger | |
domain_age |
0 / 10 / 20 | RDAP do registro.br, só domínios .br — <30 dias: 0 · 30–364: 10 · ≥365: 20 |
registro.br RDAP, .br domains only — <30 days: 0 · 30–364: 10 · ≥365: 20 |
|
business |
15 | CNPJ derivado do RDAP, ou ?cnpj=, checado via BrasilAPI (Receita Federal) — situação "ATIVA" |
CNPJ derived from RDAP, or ?cnpj=, checked via BrasilAPI (Receita Federal) — status "ATIVA" |
score = 100 × ganhos / possíveis, calculado só sobre os sinais que puderam ser checados de verdade. Um sinal ausente ou não aplicável sai do denominador inteiro — não é tratado como falha, não faz um domínio parecer pior só por falta de um dado opcional.
score = 100 × earned / possible, computed only over signals that could actually be checked. A missing or not-applicable signal drops out of the whole denominator — it's not treated as a failure, it doesn't make a domain look worse just because an optional data source was unavailable.
Exemplo
Example
curl "https://api.alicercelabs.com.br/api/v1/trust/exemplo.com.br" \
-H "Authorization: Bearer <token>"
{
"success": true,
"data": {
"domain": "exemplo.com.br",
"score": 82,
"verdict": "confiável",
"points_earned": 90,
"points_possible": 110,
"signals": {
"ssl": { "checked": true, "valid": true, "days_until_expiry": 45 },
"dns_blocklist_big": { "checked": true, "blocked": false },
"dns_blocklist_nsfw": { "checked": true, "blocked": false },
"malware_history": { "checked": true, "listed": false },
"domain_age": { "checked": true, "age_days": 3200 },
"business": { "checked": true, "cnpj": "00.000.000/0001-00", "situacao": "ATIVA" }
}
},
"meta": { "elapsed_ms": 640, "request_id": "..." }
}
Erros possíveis
Possible errors
| Status | Motivo | Reason |
|---|---|---|
| 400 | domínio inválido, ou cnpj inválido (esperado 14 dígitos) | invalid domain, or invalid cnpj (14 digits expected) |
| 401 | token ausente ou inválido | missing or invalid token |
| 429 | limite de taxa excedido | rate limit exceeded |
Não existe um 503 pra API inteira — um sinal específico indisponível ou não configurado vem checked:false com um reason, o resto da resposta continua normal.
There's no whole-API 503 — a specific unavailable or unconfigured signal comes back checked:false with a reason, the rest of the response stays normal.
Fora de escopo v1
Out of scope for v1
Busca do conteúdo HTML do site (exigiria a mesma proteção contra SSRF já construída pra API de Imagem, mais heurística de conteúdo que ainda não existe) · RDAP multi-registrador pra domínios não-.br · consulta direta a Spamhaus DBL/SURBL (o feed do URLhaus já cobre o sinal de malware sem esse risco) · pesos do score configuráveis (é decisão de produto, não cota).
Fetching the site's HTML content (would need the same SSRF protection already built for the Imagem API, plus content heuristics that don't exist yet) · multi-registrar RDAP for non-.br domains · querying Spamhaus DBL/SURBL directly (the URLhaus feed already covers the malware signal without that risk) · configurable score weights (a product decision, not a quota).
Limites
Limits
10.000/dia · 416/hora. Resultado composto em cache: 24 horas (tunável via admin). Lookup de CNPJ em cache: 7 dias, reaproveitado entre domínios diferentes que compartilhem titular.
10,000/day · 416/hour. Composite result cached: 24 hours (tunable via admin). CNPJ lookup cached: 7 days, reused across different domains sharing the same owner.