1 Visão geral
A Identity API recebe email e
cpf e retorna uma análise completa de identidade digital,
combinando vínculo entre os dados, histórico digital, exposição a vazamentos de credenciais e proximidade a fraude.
Score (0–1000)
Quanto maior, mais confiável é a identidade. Acompanha um nível de garantia (identity_assurance.level).
Ação recomendada
recommended_actions.action_level: APPROVE, MANUAL_REVIEW, MONITOR ou REJECT.
Vínculo e-mail × CPF
email_cpf_link indica se os dois dados estão associados e com qual força.
Sinais e riscos
signals, risk e risk_analysis trazem exposição, proximidade de fraude e histórico.
2 Autenticação
Troque sua X-Api-Key por um
access_token (Bearer, válido por 1h).
curl -X POST https://identity.autentify.com.br/v1/auth/token \
-H "X-Api-Key: ak_live_xxx"
Resposta:
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer",
"expires_in": 3600,
"expires_at": 1781234567
}
Reaproveite o token até pouco antes de expires_at — gerar tokens em excesso pode ser limitado por rate limit.
3 Analisar identidade
POST /v1/identity/analyze
Authorization: Bearer <access_token>
Content-Type: application/json
{
"payload": {
"email": "usuario@empresa.com",
"cpf": "12345678901"
}
}
Notas de contrato
request_idé opcional; se ausente, a API gera automaticamente.schema_versioné opcional (defaultv1).channelé opcional para chamadas externas e assumeapi.cpfaceita com ou sem máscara; é normalizado para 11 dígitos.
4 Resposta completa
Exemplo real de retorno do endpoint /v1/identity/analyze:
{
"request_id": "demo_req_9ab4c2f1",
"meta": {
"latency_ms": 947,
"processed_at": "2026-06-18T22:13:09.522Z"
},
"identity_assurance": {
"score": 742,
"level": "MODERATE"
},
"email_cpf_link": {
"is_linked": true,
"link_strength": "STRONG"
},
"signals": {
"email_deliverable": true,
"domain_integrity": true,
"data_breach_exposure": "LOW",
"fraud_proximity_level": "LOW",
"identity_history_depth": "MEDIUM"
},
"identity_profile": {
"classification": "VERIFIED_IDENTITY",
"summary": "Identidade com confiança moderada, vínculo forte entre email e CPF e sem exposição crítica em vazamentos.",
"factors": {
"presence_strength": 78,
"temporal_consistency": {
"identity_age_days": 1847
},
"local_intelligence": {
"document_validation": true,
"registry_status": "ACTIVE"
}
}
},
"risk": {
"profile_level": "LOW",
"primary_driver": "low_exposure",
"profile_score": 0.12
},
"digital_profile": {
"index": 26,
"engagement_level": "BASIC",
"persona": "UNCLASSIFIED",
"gambling_flag": false
},
"dimensions_index": {
"behavior": 85,
"network_depth": 72,
"fraud_distance_index": 91,
"profile_stability": 78
},
"risk_analysis": {
"signals": {
"trust": [
"email_validated",
"document_match",
"active_registry"
],
"identity_risk_indicators": []
}
},
"evidence": {
"digital_identity_found": true
},
"recommended_actions": {
"action_level": "MONITOR",
"reason": "Identidade com confiança moderada; monitoramento recomendado."
}
}
5 Dicionário de campos
Raiz da resposta
| Campo | Tipo | Descrição |
|---|---|---|
| request_id | string | Identificador único da requisição. |
| meta.latency_ms | integer | Tempo de processamento em milissegundos. |
| meta.processed_at | string (ISO-8601) | Timestamp UTC do processamento. |
identity_assurance
| Campo | Tipo | Descrição |
|---|---|---|
| score | integer | Score de identidade de 0 a 1000. Quanto maior, mais confiável. |
| level | string | Nível de garantia: VERY_LOW, LOW, MODERATE, HIGH, VERY_HIGH. |
email_cpf_link
| Campo | Tipo | Descrição |
|---|---|---|
| is_linked | boolean | Se há vínculo confirmado entre o e-mail e o CPF informados. |
| link_strength | string | NONE, UNVERIFIED, LOW, MEDIUM, STRONG. |
signals
| Campo | Tipo | Descrição |
|---|---|---|
| email_deliverable | boolean | Se o e-mail é entregável (validação de deliverability). |
| domain_integrity | boolean | Se o domínio do e-mail é íntegro (não descartável/suspeito). |
| data_breach_exposure | string | Nível de exposição em vazamentos: NONE, LOW, MEDIUM, HIGH, CRITICAL. |
| fraud_proximity_level | string | Proximidade a clusters de fraude: NONE, LOW, MEDIUM, HIGH. |
| identity_history_depth | string | Profundidade do histórico digital: NEW, LOW, MEDIUM, HIGH, DEEP. |
identity_profile
| Campo | Tipo | Descrição |
|---|---|---|
| classification | string | Classificação da identidade: VERIFIED_IDENTITY, STRONG_IDENTITY, WEAK_IDENTITY, UNVERIFIED. |
| summary | string | Resumo em texto explicando a classificação, pronto para exibição. |
| factors.presence_strength | integer | Força de presença digital (0–100). |
| factors.temporal_consistency.identity_age_days | integer | Idade da identidade digital em dias. |
| factors.local_intelligence.document_validation | boolean | Se o documento foi validado com sucesso. |
| factors.local_intelligence.registry_status | string | Status no registro: ACTIVE, REGULAR, INACTIVE, UNKNOWN. |
risk
| Campo | Tipo | Descrição |
|---|---|---|
| profile_level | string | Nível geral de risco: LOW, MEDIUM, HIGH. |
| primary_driver | string | Principal fator que motivou o nível de risco (ex.: low_exposure, credential_exposure). |
| profile_score | float | Score de risco normalizado entre 0.0 e 1.0. |
digital_profile
| Campo | Tipo | Descrição |
|---|---|---|
| index | integer | Índice de presença/engajamento digital (0–100). |
| engagement_level | string | BASIC, MODERATE, HIGH. |
| persona | string | Persona digital inferida, quando disponível. |
| gambling_flag | boolean | Indício de atividade em apostas online. |
dimensions_index
| Campo | Tipo | Descrição |
|---|---|---|
| behavior | integer | Índice comportamental (0–100). |
| network_depth | integer | Profundidade da rede digital (0–100). |
| fraud_distance_index | integer | Distância de clusters de fraude (0–100, maior = mais seguro). |
| profile_stability | integer | Estabilidade do perfil (0–100). |
risk_analysis
| Campo | Tipo | Descrição |
|---|---|---|
| signals.trust | array | Lista de sinais de confiança identificados (ex.: email_validated, document_match). |
| signals.identity_risk_indicators | array | Lista de indicadores de risco identificados (vazia quando não há riscos). |
evidence & recommended_actions
| Campo | Tipo | Descrição |
|---|---|---|
| evidence.digital_identity_found | boolean | Se foram encontradas evidências digitais associadas à identidade. |
| recommended_actions.action_level | string | APPROVE, MANUAL_REVIEW, MONITOR, REJECT. |
| recommended_actions.reason | string | Motivo da ação recomendada, em texto descritivo. |
6 Erros
| Status | Quando ocorre |
|---|---|
| 400 | Payload inválido — ex.: CPF sem 11 dígitos. |
| 401 | Token ausente, inválido ou expirado. |
| 403 | Produto não habilitado para essa API key. |
| 413 | Corpo da requisição maior que 64KB. |
| 429 | Limite de requisições ou quota de demo excedidos. |
| 502 | Serviço de identidade indisponível temporariamente. |
{
"detail": "invalid or expired demo key"
}
7 Rate limit & quotas
POST /v1/identity/analyze— 30 requisições/minuto por IP.POST /v1/demo-keys— 5 requisições/minuto por IP.- Chaves de demonstração têm quota própria (consulte
/v1/demo-keys); ao esgotar, a API retorna429.
8 Exemplos de código
cURL
TOKEN=$(curl -s -X POST https://identity.autentify.com.br/v1/auth/token \
-H "X-Api-Key: ak_live_xxx" | jq -r .access_token)
curl -X POST https://identity.autentify.com.br/v1/identity/analyze \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"payload": {"email": "usuario@empresa.com", "cpf": "12345678901"}}'
Python
import httpx
API_KEY = "ak_live_xxx"
BASE_URL = "https://identity.autentify.com.br"
with httpx.Client(timeout=30) as client:
token_resp = client.post(f"{BASE_URL}/v1/auth/token", headers={"X-Api-Key": API_KEY})
access_token = token_resp.json()["access_token"]
analyze_resp = client.post(
f"{BASE_URL}/v1/identity/analyze",
headers={"Authorization": f"Bearer {access_token}"},
json={"payload": {"email": "usuario@empresa.com", "cpf": "12345678901"}},
)
data = analyze_resp.json()
print(data["identity_assurance"]["score"], data["recommended_actions"]["action_level"])
Node.js
const BASE_URL = "https://identity.autentify.com.br";
const API_KEY = "ak_live_xxx";
const tokenRes = await fetch(`${BASE_URL}/v1/auth/token`, {
method: "POST",
headers: { "X-Api-Key": API_KEY },
});
const { access_token } = await tokenRes.json();
const analyzeRes = await fetch(`${BASE_URL}/v1/identity/analyze`, {
method: "POST",
headers: {
Authorization: `Bearer ${access_token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ payload: { email: "usuario@empresa.com", cpf: "12345678901" } }),
});
const data = await analyzeRes.json();
console.log(data.identity_assurance.score, data.recommended_actions.action_level);