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

GET /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

SinalSignalPesoFonteSource
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

StatusMotivoReason
400domínio inválido, ou cnpj inválido (esperado 14 dígitos)invalid domain, or invalid cnpj (14 digits expected)
401token ausente ou inválidomissing or invalid token
429limite de taxa excedidorate 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.