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 | Mesmas blocklists usadas pela API de DNS | Same blocklists the DNS API uses | |
malware_history |
30 | Feed de malware conhecido: maior peso, o sinal mais forte de perigo real | Known-malware feed: heaviest weight, the strongest signal of real danger | |
domain_age |
0 / 10 / 20 | Registro oficial, só domínios .br: <30 dias: 0 · 30–364: 10 · ≥365: 20 |
Official registry, .br domains only: <30 days: 0 · 30–364: 10 · ≥365: 20 |
|
business |
15 | CNPJ derivado automaticamente, ou informado via ?cnpj=, checado na Receita Federal: situação "ATIVA" |
CNPJ derived automatically, or supplied via ?cnpj=, checked against the Federal Revenue: 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.
Usando o SDK
Using the SDK
Um método só: cnpj é opcional, só importa pra domínios fora do .br (o RDAP do registro.br já resolve o CNPJ sozinho pra .br).
Just one method: cnpj is optional, only matters for non-.br domains (registro.br's RDAP already resolves the CNPJ on its own for .br).
SDKs oficiais: Go · Python · JavaScript.
Official SDKs: Go · Python · JavaScript.
Checar o score de um domínio
Check a domain's score
import (
"context"
"fmt"
alicercelabs "github.com/alicercelabs/alicercesdk-go"
)
client := alicercelabs.New("alk_...")
ctx := context.Background()
res, err := client.Trust.Check(ctx, "exemplo.com.br", "")
if err != nil {
panic(err)
}
fmt.Println(res.Score, res.Verdict)
fmt.Println(res.Signals)from alicercelabs import AlicerceLabs
client = AlicerceLabs(api_key="alk_...")
res = client.trust.check("exemplo.com.br")
print(res["score"], res["verdict"])
print(res["signals"])import { AlicerceLabs } from "alicercesdk-javascript";
const client = new AlicerceLabs("alk_...");
const res = await client.trust.check("exemplo.com.br");
console.log(res.score, res.verdict);
console.log(res.signals);Limites
Limits
100/dia · 4/hora sem token; com uma API key (gerada no painel), 1.000/dia · 41/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.
100/day · 4/hour without a token; with an API key (generated in the panel), 1,000/day · 41/hour. Composite result cached: 24 hours (tunable via admin). CNPJ lookup cached: 7 days, reused across different domains sharing the same owner.