01 · Inteligência de dispositivo para prevenção a fraudes·As jornadas que você marca com tag
API de inteligência de dispositivo e risco de fraude para a webAvalie cada acesso.Decida com evidência.
Uma tag por tela que você escolhersignuploginpassword_recoverymfa_challengeprofile_changedepositwithdrawalpix_transfertradecheckout
signup
login
password_recovery
mfa_challenge
profile_change
deposit
withdrawal
pix_transfer
trade
checkout
+ a que você nomear
Um script no seu site lê o navegador e o dispositivo em cerca de um décimo de segundo no desktop. Uma chamada assinada do seu backend, com uma tag que você nomeia, traz a resposta na hora: nota de confiança, cobertura de evidência e 13 indicadores, de bots e automação, navegador falsificado e emuladores a VPN, proxy e Tor, com o motivo por trás de cada recomendação. Identifique account takeover, cadastros falsos e fraude em saque com evidência, não com palpite. Nós recomendamos. Você decide e age.
Resposta síncrona em qualquer tela que você marcar · Shadow mode antes de influenciar qualquer decisão · Suas regras, suas listas, sua decisão
Como ler esta resposta · exemplo v1.1/login_completed
01
Por que esta recomendação
ALLOWreason_codes · NO_ADVERSE_INDICATOR_MATCH
Nenhum indicador que a política pondera voltou detectado. Exemplo do contrato: a política gerenciada do FingerTrackID recomenda MONITOR em qualquer nota; ALLOW vem de uma faixa de nota que a sua empresa definiu nas próprias regras de risco. Decidido sob policy-login-v1.
02
O que a nota é, e o que não é
trust_score 1000–100 · quanto maior, melhor
Confiança neste acesso sob esta versão de política, não uma probabilidade de fraude. Fora de COMPLETED ela é null, nunca um valor padrão.
03
Quanto deu para ver
evidence_coverage 100limitation_codes · nenhum
A parcela das verificações esperadas que rodou. Evidência ausente seria nomeada aqui: ela reduz a cobertura e nunca é motivo de risco.
04
Depois, é com você
customer_actiondepois o resultado
Seu backend decide e age, depois informa o que fez e o resultado real. Nós nunca bloqueamos nem retemos dinheiro.
POST /v1/assessments → 201
event-assessment.v1.1 · exemplo do contrato
assessment_statusConcluídaavaliação concluída
trust_score1000–100 · quanto maior, melhor
device_match_confidence0.980–1 · força da correspondência
evidence_coverage1000–100 · suficiência
ALLOWrecommendation_basis · EVALUATIONrecomendação, não ação
Estados por indicador: detectado, não detectado, não avaliado
14
Motivos nomeados para “não avaliado”, nunca um falso silencioso
5
Recomendações possíveis
3
Medidas separadas: confiança, correspondência de dispositivo, cobertura de evidência
1
Chamada assinada por evento avaliado
A coleta
17
Seções de evidência do navegador e do dispositivo por coleta
48
APIs do navegador conferidas com a versão que o navegador declara
125
Milissegundos ou menos: mediana da coleta no desktop em Chrome, Firefox e Safari
0
Pedidos de permissão exibidos ao seu usuário
Suas regras e sua investigação
54
Itens de contexto calculados dentro de cada avaliação
67
Regras que sua empresa pode pesar na própria nota: 13 indicadores e 54 itens de contexto
6
Listas de referência públicas por trás dos indicadores de rede
6
Idiomas do console: inglês, português (Brasil e Portugal), espanhol, francês, alemão
Nunca — e isso não muda conforme o plano
Movimento do ponteiro e digitação: o SDK não coleta nenhum dos dois
Pixels, amostras de áudio, nomes de fabricante e renderizador de GPU ou nomes de fontes: canvas, WebGL, WebGPU, áudio e fontes só saem do navegador como hashes, uma família de GPU e uma máscara de presença sobre uma lista fixa de fontes
WebRTC, portas locais, bateria, sensores de movimento: nunca lidos
Nenhum pedido de permissão, nenhuma decisão tomada no navegador, nenhuma ação tomada por nós na sua conta
— Cada valor é uma contagem de um contrato, catálogo ou lista versionados, exceto o tempo de coleta, medido nas nossas máquinas de teste com cache frio. Nenhum deles muda conforme o plano ou o volume.
03 · Casos de uso
Prevenção a fraudes nas telas em que a decisão importa.
A inteligência de dispositivo responde a uma pergunta antes de o seu backend liberar a ação: o que existe de verdade do outro lado desta tela? A mesma chamada atende todas as jornadas; a tag que você envia só a classifica.
login · password_recovery · profile_change
Prevenção a account takeover (tomada de conta)
Uma conta conhecida num dispositivo que ela nunca usou, um navegador que mente sobre si mesmo, um navegador anti-detect, uma viagem impossível de fazer no tempo. Cada um volta como evidência, para você pedir um segundo fator só quando importa.
signup · login · checkout
Detecção de bots e automação
Navegadores headless, frameworks de automação, agentes de IA identificados por assinatura e tráfego vindo de datacenters. BOT_AUTOMATION e NETWORK_HOSTING dizem o que foi visto; a cobertura diz quanto deu para ver.
signup · deposit · promotions
Contas falsas e múltiplas contas
Contas e pessoas por dispositivo e por IP, quão raro é o perfil do dispositivo na sua base, uma mesma coleta repetida em outro dispositivo. Contexto que suas regras podem pesar, nunca um veredito automático: uma pessoa pode ter várias contas legítimas.
withdrawal · pix_transfer · trade
Fraude em saque, Pix e transferência
Um saque na primeira hora depois de um dispositivo novo, beneficiários compartilhados entre contas, vizinhos que você marcou como fraude confirmada. Quem retém ou revisa o dinheiro é o seu backend; nós nunca.
qualquer jornada
Emuladores e navegadores falsificados
Emuladores Android e virtualização, uma GPU impossível para o sistema declarado, uma versão de navegador que as próprias APIs contradizem. Sinais de device fingerprinting lidos como hashes e famílias, nunca como pixels brutos.
qualquer jornada
Detecção de VPN, proxy e Tor
Provedores de VPN conhecidos, proxies públicos, saídas Tor, faixas de hospedagem e Apple iCloud Private Relay, a partir de listas públicas atualizadas do nosso lado. Anonimização é contexto, não culpa: sua política decide quanto ela pesa.
04 · As medidas
Medidas separadas. Nenhuma média disfarçada de certeza.
Juntar confiança, cobertura e correspondência de dispositivo num único número esconde justamente o que o analista precisa ver: se o problema é o acesso ou a evidência.
trust_score
Confiança no acesso
72
0100 · quanto maior, melhor
Responde quão confiável é este acesso sob esta versão de política; a tag que você envia não a altera. Inteiro de 0 a 100. Só existe quando assessment_status = COMPLETED; em qualquer outro estado é null, nunca um valor padrão.
Não é uma probabilidade de fraude, a reputação da pessoa nem um valor padrão para dado ausente. Mostramos 72/100, nunca “72% confiável”.
device_match_confidence
Correspondência de dispositivo
0.94
01 · teto 0,98
Força da evidência de que este acesso vem do mesmo dispositivo já visto, de 0 a 1. Vem com device_id, um identificador público opaco do cluster probabilístico.
Não é a identidade da pessoa, nem prova de hardware. Party e Account são coisas diferentes.
evidence_coverage
Suficiência de evidência
100
0100 · 13 de 13 avaliados
Quanto do conjunto esperado de verificações pôde rodar, de 0 a 100. Todo indicador aplicável que fica como NOT_EVALUATED reduz a cobertura e aparece em limitation_codes.
Não faz parte da nota. Cobertura baixa não puxa a nota para baixo nem para cima: ela deixa a avaliação inconclusiva.
Por que não somamos
Uma única nota de “suspeita” mistura três perguntas diferentes: este acesso merece confiança? A evidência foi suficiente? É o mesmo dispositivo? Quando a resposta vem separada, seu analista sabe se pede um segundo fator, espera a coleta ou olha o histórico. Quando vem fundida, ele só sabe que “deu 42”.
05 · 13 indicadores
Treze indicadores. Cada um diz se viu, se não viu ou se não conseguiu avaliar.
Toda avaliação web devolve os 13 códigos, sempre. O que muda é o estado de cada um, nunca a lista. Cada indicador tem o próprio detector versionado, e a resposta nomeia a versão que o avaliou. Um detector ausente, vencido ou com falha nunca vira false.
signal_catalog web · 13 códigos · exemplo withdrawal_completed
Detectado
Not_detected
— Não_avaliado
Integridade do ambiente
Privacidade do navegador · contexto neutro
Rede · contexto neutro
Dispositivo
reason_codes · NETWORK_TOR_DETECTEDREVIEW
Nas nossas políticas gerenciadas, Tor sozinho nunca justifica BLOCK_RECOMMENDED; as regras que sua empresa configura seguem os pesos e o corte que ela escolheu. Neste exemplo do contrato v1, policy-withdrawal-v1 pediu revisão do saque, não um bloqueio, e o único reason code diz exatamente isso. A política gerenciada em produção hoje recomenda MONITOR em qualquer nota.
Um detector ausente, vencido ou com falha nunca vira false. NOT_APPLICABLE só vem da matriz imutável do catálogo por canal, engine e plataforma; sua tag nunca a altera, e uma política desligada, um timeout ou uma indisponibilidade nunca usam esse atalho.
Eles podem limitar o que observamos. A cobertura só cai onde a evidência não é avaliada. Não são fraude. Descrevem o ambiente; não acusam a pessoa. Nas nossas políticas gerenciadas, sozinhos eles nunca justificam BLOCK_RECOMMENDED; as regras que sua empresa configura seguem os pesos e o corte que ela escolheu. Quando não dá para distinguir o tipo de rede, como atrás do iCloud Private Relay da Apple, hospedagem, VPN e proxy ficam todos NOT_EVALUATED com NETWORK_TYPE_AMBIGUOUS: nunca marcamos três detecções a partir de um único booleano.
A evidência de rede vem de listas de referência públicas que atualizamos na nossa própria infraestrutura: endereços de saída Tor, faixas de provedores de nuvem, listas de redes de hospedagem, faixas de provedores de VPN e uma base de proxies públicos. Os endereços dos seus usuários nunca são enviados a quem publica as listas. Uma lista que passou da idade máxima deixa o indicador NOT_EVALUATED, nunca NOT_DETECTED.
06 · Itens de contexto
Além dos 13 indicadores: 54 itens de contexto. Para a investigação, e para a sua nota quando você quiser.
Dentro de cada avaliação, antes da resposta, calculamos 54 itens de contexto a partir do que foi coletado e do histórico da própria empresa: quem mais usa o dispositivo, com que velocidade a conta está se movendo, de qual rede, ao lado de quais contas. A política gerenciada do FingerTrackID os deixa fora da nota. Nas suas próprias regras de risco, qualquer um deles pode ficar desligado, em fantasma ou ativo, com pontos para incomum e muito incomum: um item ativo que dispara desconta pontos da nota de confiança e se nomeia em reason_codes.
context-insight.v1 · 54 itens em seis temas · como agrupados no console e nas suas regras
Conta e dispositivo · 10
Dispositivo novo e sistema operacional novo para a conta · contas e pessoas distintas no dispositivo em 30 dias · contas da mesma pessoa nele · dispositivos por conta e por pessoa em 24 horas · dispositivo com alta atividade · quão comum, incomum ou raro é o perfil do dispositivo na sua empresa · cookie do dispositivo perdido
Saques e pedidos · 7
Saques na primeira hora depois de um dispositivo novo · beneficiários por dispositivo e contas por beneficiário em 30 dias · quantidade e valor de saques por conta · quantidade de pedidos por conta e o intervalo mediano entre pedidos
Rede e localização · 12
País novo e provedor de internet (ASN) novo para a conta · países, provedores e IPs distintos por conta · contas e pessoas por IP · viagem impossível · fuso horário do navegador que não bate com o país do IP · país de saída da VPN · provedor numa lista pública de abuso · Apple iCloud Private Relay
Integridade do navegador e do SDK · 16
Ferramentas de desenvolvedor abertas · marcas de automação · marcador de navegador anti-detect · assinatura TLS que não bate com o navegador declarado, e sua estabilidade em 30 dias · renderizador por software e família de GPU · canvas ou áudio que muda entre duas leituras · navegador in-app · possível modo convidado · agente de IA identificado por assinatura · categoria de bot · SDK diferente do pacote aprovado · uma sessão do SDK em vários dispositivos · coleta idêntica repetida em outro dispositivo · cookie do dispositivo usado em lugares distantes demais
Velocidade · 5
Acessos por dispositivo e por conta em 5 minutos, 1 hora e 24 horas; por IP em 5 minutos e 1 hora · avaliações com a mesma tag por conta e por dispositivo em 1 minuto, 5 minutos e 1 hora
Vínculos entre contas, a um salto · 4
Outras contas que usaram os mesmos dispositivos · contas vizinhas em que foi detectada automação ou falsificação de navegador · contas vizinhas que você marcou como fraude confirmada · beneficiários de saque compartilhados com outras contas
Três estados · um motivo, nunca um zero
Observado · a condição está presente, ou a contagem ou medida difere do seu valor neutro.
Não observado · avaliado, e ausente ou neutro.
Não avaliado · sempre com o motivo, nunca exibido como zero.
Alguns itens dependem do que você envia. Sem refs de conta ou de pessoa, sem tag ou sem resultados, o item diz isso: conta não enviada, avaliação sem tag, nenhum resultado enviado. Uma requisição com tag não leva valor nem beneficiário, então os itens de valor e beneficiário do saque também dizem isso. Um primeiro acesso, uma rede anonimizada ou um IP fora da janela de uma hora de uma verificação também são motivos.
O que eles não são
Não são um dos 13 indicadores, e nunca um código de limitação. Só chegam a reason_codes por uma regra que sua empresa deixou ativa.
Nunca entram na nota da política gerenciada do FingerTrackID. Um item ativo sem dado não desconta nada: evidência ausente nunca vira risco.
Não são um modelo oculto: cada item é lido como esperado, incomum ou muito incomum numa régua que sua empresa pode ajustar, a partir de um padrão publicado.
Não são uma acusação: muitas contas ou pessoas num dispositivo não são evidência de fraude, e não existe regra “N contas por dispositivo = fraude”.
Onde o analista os lê
Detalhe do acesso. Um cartão “Contexto do acesso” agrupa os itens por tema, com as janelas de tempo, o corte do histórico considerado, quão incomum cada um é na sua régua e o motivo de cada item que ficou sem valor. Um item que não cabe no orçamento de tempo da avaliação é concluído em segundo plano e diz isso; ele nunca atrasa nem derruba a resposta.
Catálogo de indicadores. Uma página explica o que cada um dos 13 indicadores procura, o que o deixa não avaliado e se ele pode mexer na nota, e lista os itens de contexto com os motivos pelos quais podem ficar sem valor.
Canvas, WebGL, áudio e fontes são lidos sob a política de coleta gerenciada de todas as empresas, só como valores derivados, e alimentam alguns desses itens, como a família de GPU, um renderizador por software ou uma renderização que muda entre duas leituras. Onde o navegador não permite uma verificação, o item fica não avaliado, com o motivo.
07 · Inconclusivo é um resultado
Quando não conseguimos avaliar, dizemos isso, e por quê.
Evidência ausente não produz confiança 100 e não vira sinal de fraude. Sem nota, a recomendação vem do fallback congelado dentro da versão de política e coberto pelo hash dela, e é uma única resposta para todo estado sem nota, qualquer que seja a tag: MONITOR. Nunca ALLOW.
Casos sem nota dos exemplos do contrato
A tag nunca seleciona o fallback. Na política gerenciada, todo estado sem nota, em qualquer tag, recomenda MONITOR: siga em frente e registre. Os três exemplos do contrato abaixo também.
INCONCLUSIVEtag login · o SDK não carregou
MONITOR
Sem coleta: trust_score: null, evidence_coverage: 0, COLLECTOR_NOT_LOADED, basis INSUFFICIENT_EVIDENCE. Nada é liberado como ALLOW.
INCONCLUSIVEevidência de rede indisponível
MONITOR
Quatro indicadores de rede NOT_EVALUATED, evidence_coverage: 69, PROVIDER_UNAVAILABLE. Seja qual for a operação, ela fica no seu sistema, sob a sua decisão; nunca retemos dinheiro.
FAILEDtag pix_transfer · política indisponível
MONITOR
Falha técnica: POLICY_UNAVAILABLE, policy_version: null, basis TECHNICAL_FAILURE. Nunca lida como “sem risco”.
Sem nota, nunca recomendamos ALLOW · fallback_policy_version production-observation-fallback-v2 nos exemplos · o fallback é validado junto com a política toda vez que a política é lida
Quatro estados da avaliação
Concluída72basis EVALUATION · os reason_codes explicam a nota
Inconclusivanullbasis INSUFFICIENT_EVIDENCE · os limitation_codes dizem o que faltou
Sem nota possívelnullbasis OUT_OF_POLICY_SCOPE · evento válido, a política não o cobre
Falhounullbasis TECHNICAL_FAILURE · POLICY_UNAVAILABLE, policy_version null · nunca “sem risco”
Os 14 códigos de limitação do catálogo · o que faltou, nunca por que é arriscado
Um código de limitação explica a coleta e a qualidade; um reason code explica a política. Todo indicador NOT_EVALUATED aponta para o seu; a avaliação agrega todos em limitation_codes. Uma limitação de coleta nunca é motivo de risco.
08 · Você decide
Cinco recomendações. Zero ações tomadas por nós.
recommended_action diz o que a política sugere. customer_action diz o que você fez. Dois campos porque são dois fatos.
Quem recomenda, quem decide, quem age
O FingerTrackID recomenda
ALLOW
MONITOR
STEP_UP
REVIEW
BLOCK_RECOMMENDED
Nunca só por privacidade · Tor, VPN, proxy, aba anônima, dispositivo compartilhado
→
Seu fluxo decide
Seu backend decide e age. Nós devolvemos uma recomendação; hoje a política gerenciada responde MONITOR, só observação. O que acontece com o acesso é decidido e executado do seu lado. Você conhece a conta, o limite, o histórico e o custo da fricção. Nós não.
→
Você age e nos informa
ALLOWED
CHALLENGED
HELD
REVIEWED
BLOCKED
CANCELLED
customer_action · o campo que você devolve
Nunca autenticamos uma pessoa.
Nunca bloqueamos a sua interface.
Nunca movimentamos dinheiro.
O que cada recomendação não significa
ALLOW
A política não encontrou motivo para fricção neste acesso. Não significa que a pessoa é legítima nem que o acesso está certificado. Só é emitida com nota e com a evidência exigida avaliada.
MONITOR
Siga em frente, mas registre. É o fallback sem nota em qualquer tag e, hoje, também a resposta da política gerenciada em qualquer nota. Não significa suspeita confirmada e não exige nenhuma ação do usuário.
STEP_UP
Peça um segundo fator ou uma confirmação. Não significa que desafiamos alguém: quem mostra o desafio é você.
REVIEW
Envie para revisão humana. Não significa que retemos dinheiro: a operação fica no seu sistema, sob a sua decisão.
BLOCK_RECOMMENDED
A política sugere negar. Não significa bloqueio executado, fraude confirmada nem banimento. Quando você bloqueia, isso vira customer_action: BLOCKED, um evento seu, e alimenta a medição de acerto.
09 · Integração
Três passos, um contrato. O navegador coleta; seu backend pergunta; nós respondemos.
Um script no seu site, um endpoint servidor a servidor no seu backend e duas chamadas para devolver a ação e o resultado. Nenhuma decisão no cliente.
01
SDK no seu site
O SDK coleta e devolve um token. Só isso.
Servido de um subdomínio seu. Antes de você enviar a requisição que quer avaliar, seja qual for a tela, ele coleta sinais do navegador e do ambiente e recebe 202 PROCESSING: confirma o recebimento, não um resultado. Os sinais de rede são adicionados pela borda no seu domínio de coleta, nunca pelo script. Nenhuma nota, sinal ou decisão volta para o navegador.
import { initializeSdk } from'@ftid/sdk-web'// publicKey is a public locator, not a secret.// collectionOrigin is YOUR collection domain (https).const sdk = initializeSdk({
publicKey: 'pub_app_0123456789abcdef',
collectionOrigin: 'https://collect.yourcompany.com',
})
// ACCEPTED (202 PROCESSING on the wire): confirms receipt, not a result.const collection = await sdk.collect()
if (collection.status !== 'ACCEPTED') {
// Without collection the journey continues; the backend will get// INCONCLUSIVE / COLLECTOR_NOT_LOADED: no fake score.return continueWithoutToken()
}
// Create the event before sending the request to be assessed.const event = sdk.createEvent(collection.observation)
// Only a COMPLETED collection yields a token. The token goes in the POST// that YOUR backend makes; the decision never comes back here.const ctx = await sdk.getEventContext(event)
const token =
ctx.status === 'COMPLETED'
? ctx.eventContextToken
: null
02
Seu backend chama
Uma chamada assinada e síncrona, no seu prazo.
HMAC-SHA-256 sobre dez linhas canônicas — marcador, key_id, método, path, timestamp, ids do evento e da requisição, metadados do conteúdo e, na última linha, o SHA-256 dos bytes exatos do corpo. Nunca reserialize o JSON antes de calcular o hash; o contrato traz o vetor normativo. key_id é o único localizador público. O segredo nunca trafega. Vetor canônico requests.both_refs_deadline_750 do contrato v1.1: a mesma rota e a mesma assinatura do v1, com tag no lugar de journey, action e journey_context.
tag é um slug em minúsculas de até 64 caracteres (letras, dígitos e underscore, no máximo dez dígitos), nunca dado pessoal; este vetor está nesse limite · subject_ref e account_ref podem ser null, e um account_ref exige um subject_ref · refs são códigos opacos seus, nunca CPF, e-mail ou ID sequencial · deadline_ms é um inteiro de 250 a 5000, ou null para 5000; se for excedido, volta um Problem 503 que pode ser repetido, não uma nota parcial
03
Resposta síncrona
Leia, decida, devolva o que você fez.
status
COMPLETED
trust_score
72
device_match
0.94
coverage
100
reason_codes
NETWORK_TOR_DETECTED
limitations
none
policy
policy-withdrawal-v1
expires_at
+5 min
REVIEW
Depois, duas chamadas de retorno: customer_action com o que você fez e, quando souber, truth_status com o resultado real (o outcome: legítimo, fraude confirmada ou evidência insuficiente). O contrato submete as duas à mesma disciplina da chamada de avaliação: nada conta como aceito antes de um commit durável, e uma repetição idêntica não gera um segundo efeito. Um outcome pode ser corrigido depois — a correção entra como sucessora, e o registro anterior continua legível.
POST /v1/assessments/{assessment_id}/customer-actions POST /v1/assessments/{assessment_id}/outcomes
Web, em qualquer navegador moderno · nenhum app para instalar · SDK, avaliação e retorno no mesmo contrato versionado
npm install @fingertrackid/server assina a chamada por você, e @fingertrackid/mcp deixa o Claude Code, o Cursor ou qualquer agente de código compatível com MCP montar a integração a partir do contrato publicado. Passo a passo no quickstart, no guia do Web SDK e na referência da API.
10 · Zero trust no navegador
O navegador só coleta. Decisão e identificador nunca passam por ele.
Nada que vem do navegador é tratado como autoridade. A avaliação é servidor a servidor, assinada, e cada tentativa conta uma vez: repeti-la não cria efeito novo.
Quem fala com quem
O navegador recebe só IDs opacos de sessão e de evento. Nota, sinais e recomendação nascem e ficam no servidor. O cookie first-party é assinado, HttpOnly, Secure e restrito ao seu tenant e à sua aplicação.
Anatomia da chamada
POST /v1/assessmentssecurity ftidHmacV1 do contrato
X-FTID-Signature: v1=<key_id>:<mac-hex>key_id UUIDv7 é o único localizador; tenant, aplicação, ambiente e capabilities só viram autoridade depois de um MAC válido em comparação de tempo constante. X-Client-Id, nonce legado e múltiplas assinaturas são recusados.
X-FTID-Timestamp: 1791720000Epoch em segundos. Tolerância de ±300 s. Um timestamp no futuro nunca estende a retenção.
X-FTID-Request-Id: <uuidv7>Um uso por tentativa, reservado depois de um MAC válido. Uma nova tentativa lógica assina um novo request_id; um MAC inválido não cria reserva.
X-FTID-External-Event-Id: evt:tag-0003Idêntico, byte a byte, ao do corpo e ao da string assinada.
body.idempotency_keyMesma chave, mesma operação: uma repetição idêntica devolve a mesma avaliação persistida, sem recalcular.
body.deadline_msSeu orçamento. Excedido antes da avaliação: Problem assessment-unavailable (503, retryable: true), não uma nota parcial.
401uniforme: um key_id que não existe ou foi revogado, ou uma assinatura errada, produzem o mesmo authentication-failed.
403uma credencial autenticada sem a capability de avaliação da rota.
503dependência de segredo indisponível: um latch global deixa a resposta uniforme sem revelar se o key_id existe. Assine um novo request_id.
11 · Política versionada
Toda decisão tem versão. A versão congela tudo o que a definiu.
Mudar a sensibilidade de um indicador cria uma nova versão, com autor, período de vigência, simulação e rollback. O histórico não muda. Sem versão real, o uso fica bloqueado.
correlation_id serve para o suporte sem expor um identificador pessoal. As versões expostas são tags públicas opacas; IDs internos do banco de dados nunca aparecem na API, no webhook nem no console.
O que uma versão de política congela
catálogo de sinais
normalização
features
resolvedor de dispositivo
regras
estratégia de correlação
níveis por indicador
tetos e limiares
Reproduzível, nunca reescrita
exemplo login_completed
assessment_version1
supersedes_assessment_idnull
exemplo login_completed_revision_2
assessment_version2
supersedes_assessment_id…0000000101
Uma revisão operacional preserva a política e todas as demais versões vigentes no received_at do evento. Uma política nova sobre um evento antigo é uma simulação à parte; ela nunca reescreve qual recomendação orientou a decisão histórica.
12 · Shadow mode
Primeiro em paralelo. Só depois a resposta influencia uma ação.
Shadow mode é rodar o FingerTrackID lado a lado com o que você usa hoje, sem que a resposta toque em nenhuma decisão. Você compara, devolve os resultados reais e só então começa a usar a recomendação. É assim que recomendamos começar.
O ciclo completo
01
O SDK coleta
202 PROCESSING · event_context_token
02
Seu backend pede a avaliação
POST /v1/assessments · síncrono
03
Você decide pelo seu fluxo
em shadow, sem usar a resposta
04
Você informa a ação
customer_action · POST …/customer-actions
05
Você informa o resultado
truth_status · POST …/outcomes
recommendation_alignment · derivado no servidor a partir do par recomendação × ação; nunca declarado pelo cliente. Coincidência não prova causalidade, nem acerto, nem fraude.
Comparação, campo a campo
recommended_action
customer_action
recommendation_alignment
REVIEW
REVIEWED ou HELD
ALIGNED
STEP_UP
ALLOWED
NOT_ALIGNED
ALLOW ou MONITOR
ALLOWED
ALIGNED
BLOCK_RECOMMENDED
BLOCKED
ALIGNED
qualquer
CANCELLED
NOT_COMPARABLE
Bloquear não prova fraude. Confirmar fraude exige evidência independente: truth_status passa de PENDING para LEGITIMATE, FRAUD_CONFIRMED ou INSUFFICIENT_EVIDENCE, com maturidade PROVISIONAL ou MATURE. Só um rótulo maduro vira métrica de qualidade.
O que o ciclo alimenta
Falso positivo e falso negativo como métricas derivadas de rótulos maduros, não de campos digitados.
Recalibração de regras e limiares, sempre como uma nova versão de política.
Qualidade dos detectores medida no seu shadow mode, antes de a resposta influenciar qualquer ação sua.
O que ele não faz: virar bloqueio automático. customer_action e truth_status são fatos separados, e toda correção cria uma sucessora.
13 · Privacidade por contrato
Limitada pelo contrato, não por uma configuração.
Dado pessoal em texto claro não é requisito do produto. Você envia refs opacas de pessoa e de conta; não pedimos CPF, e-mail nem telefone para avaliar um acesso.
packages/contracts/src/sdk-handshake-v1.ts · política de coleta
A coleta comportamental, ou seja, movimento do ponteiro e digitação, só aceita o valor desligado: ligá-la exige mudar o contrato, não uma configuração. Canvas, WebGL, áudio offline e presença de fontes são lidos sob a política de coleta gerenciada, que os liga para todas as empresas, e só saem do navegador como valores derivados: hashes de tamanho fixo, uma família de GPU fechada, uma contagem e uma máscara de presença sobre uma lista fixa de fontes. O contrato não tem campo para pixels, amostras de áudio, nomes de fabricante ou renderizador de GPU, nem nomes de fontes. Juntos, esses valores derivados podem reconhecer o mesmo navegador de novo, então são tratados como dado de dispositivo, não como dado anônimo. Nunca coletados, como regra absoluta: senha, texto digitado, conteúdo de chat ou documento, área de transferência, captura de tela, microfone, câmera. Toda evidência tem uma classe de privacidade, e classe não é peso de risco.
Garantias que não dependem de boa vontade
Dado pessoal não entra em log. Dado bruto não aparece livremente no console: todo acesso a ele é registrado. Um identificador ou valor pessoal nunca vai numa URL.
A correlação entre tenants fica desligada. Toda tabela de domínio carrega tenant_id com isolamento forçado no banco de dados. Não existe reputação nem rótulo compartilhado entre clientes.
Cookie first-party servido do seu domínio: assinado, HttpOnly, Secure, restrito ao seu tenant e à sua aplicação. O valor nunca vai para banco de dados, fila ou log; se faltar ou for rejeitado, a continuidade se degrada como limitação e a avaliação não para.
Toda fusão de dispositivos é reversível e registra a versão do resolvedor que a fez. IP nunca consolida dispositivos sozinho.
Todo tipo de evidência tem finalidade, classe de privacidade, regra de acesso e retenção declaradas no nosso inventário de dados. Base legal, residência de dados e o DPA são tratados com o seu jurídico na contratação; nada nesta página é aconselhamento jurídico.
Party não é Account
O vínculo vem do seu backend · nunca inferido a partir do fingerprint
Uma pessoa, várias contas legítimas. Uma conta nunca muda de pessoa em silêncio; a sessão só avança de anônima para pessoa e depois para uma conta da mesma pessoa. Uma contradição é um conflito, não uma nova associação nem evidência negativa improvisada.
Onde os dados ficam
cloud
Google Cloud, us-central1 region
source of truth
PostgreSQL, single
isolation
RLS forced per tenant, with a negative test
secrets
Secret Manager; never in code or in infrastructure state
logs
no PII; raw data never displayed freely
14 · Console
Um console para integrar, investigar e fechar o ciclo.
O console responde primeiro “estamos recebendo, avaliando e explicando com qualidade?” e só depois deixa alguém falar de legitimidade. Todo percentual nomeia o seu denominador.
Esquemático, não uma captura de tela · tons do console dentro da moldura
Detalhe do acesso. As três medidas como três componentes separados; a recomendação com seu recommendation_basis, a política vigente e o que o seu time informou ter feito; o frescor da evidência; os 13 indicadores com estado, aplicabilidade, fonte, confiança do detector, frescor e o motivo de qualquer não avaliado; limitações e reason codes; sessão, dispositivo e suas associações; multiplicidade no dispositivo; uma localização aproximada pela rede; o contexto do acesso; e uma aba de dados técnicos com tudo o que o SDK e a borda coletaram, incluindo a versão real do navegador lida das APIs que ele expõe, ao lado da versão que ele declara.
Filtros de investigação. A lista de acessos se restringe por provedor de internet (ASN), país da rede, instalação do dispositivo, motivo pelo qual um indicador não foi avaliado e até dois indicadores em estados escolhidos ao mesmo tempo, e encontra um acesso pela sua própria ref de conta ou de pessoa. Não há filtro por endereço IP: é dado pessoal. Cada detalhe de acesso também traz os seus itens de contexto ↑.
Investigação a fundo. A partir de qualquer acesso, um grafo de vínculos abre os dispositivos e as contas ao redor, um salto por vez, em até 92 dias do seu próprio histórico. Cada expansão é uma leitura registrada; endereços IP nunca viram nós.
Listas de bloqueio e de permissão. A partir do detalhe do acesso, seu time coloca um dispositivo, uma ref de conta ou um único IP na lista de bloqueio da empresa (bloquear ou revisar) ou na lista de permissão, com uma observação e o nome de quem adicionou. Num acesso de produção com nota, uma entrada se sobrepõe à recomendação e se nomeia em reason_codes. Nada é apagado: remover uma entrada registra quem removeu e quando.
Assistente de IA. Um painel lateral explica cada tela e responde perguntas sobre a sua própria integração e os seus acessos, dentro da sua empresa e do seu papel.
Configuração de risco. As regras de risco da própria empresa, por aplicação: cada um dos 13 indicadores fica desligado, em fantasma ou ativo, com peso de 1 a 100 pontos, e você define as faixas de nota e a ação de cada uma. Uma regra em fantasma é calculada e registrada, mas nunca muda a resposta. Antes de publicar, o cartão de impacto reaplica o seu rascunho sobre as avaliações dos últimos 1, 7 ou 30 dias. Cada um dos 54 itens de contexto ↑ pode entrar com os próprios pontos. Seu administrador ou supervisor de risco publica direto; toda publicação é uma nova versão auditada, e tudo em fantasma para todas as suas regras de uma vez. O FingerTrackID nunca ativa uma regra por você: o suporte só pode pôr todas as regras de uma aplicação em fantasma, com um motivo que o seu console mostra. Enquanto nenhuma regra está ativa, quem responde é a política gerenciada, publicada pelo time do FingerTrackID com aprovação registrada.
Dezesseis telas em quatro grupos · principal, detecção, operação, administração
01Início
09Integração e saúde
02Visão geral
10Uso
03Acessos
11Exportações
04Fila de revisão
12Relatórios
05Configuração de risco
13Usuários e acessos
06Simulações de política
14Auditoria
07Listas
15Ciclo de vida do cliente
08Catálogo de indicadores
16Conta e segurança
A fila de revisão é o módulo de revisão de saques: uma fila operacional construída sobre o mesmo núcleo, que leva a uma pessoa todo saque v1 com recomendação REVIEW, com a evidência ao lado. Avaliações com tag nunca entram nela, e ela fica vazia enquanto a política recomenda MONITOR, como a política gerenciada faz hoje.
Em inglês, português (Brasil e Portugal), espanhol, francês e alemão. Login com passkey ou segundo fator; permissões por papel; trilha de auditoria de quem viu dado sensível e de quem mudou o quê. Dado bruto não aparece livremente: todo acesso a ele é registrado.
15 · Como cobramos
Uma unidade de cobrança. O resto não conta.
Preço por volume de coletas concluídas, definido na proposta. O shadow mode consome as mesmas unidades e aparece no console como uso estimado; o que entra na fatura desse período é definido na proposta.
A unidade
Um snapshot de inteligência de dispositivo de produção, solicitado pela sua integração e concluído.
É a unidade de medida e a unidade candidata de cobrança. Cada device_intelligence_snapshot_id gera no máximo uma unidade, não importa quantas avaliações, tags, provedores ou reprocessamentos usem essa coleta.
Nota, recomendação, ação e outcome não determinam a cobrança. Um resultado arriscado não custa mais; um resultado legítimo não custa menos.
Um limite comercial nunca vira bloqueio, rate limit ou degradação automática do serviço.
Todo snapshot solicitado gera um registro de uso imutável, mesmo quando não é cobrável. As exclusões são comprovadas por esse registro, não reconstruídas a partir de logs.
Evento · gera unidade?
Aplicações fora de produção (desenvolvimento, staging)não
Nova tentativa com o mesmo idempotency_keynão
Qualquer avaliação, em qualquer tag, que reaproveita um snapshot recentenão
Reprocessamento, replay histórico, mudança de políticanão
Enriquecimento assíncrono e atualização iniciados por nósnão
Chamada ou nova tentativa a provedornão
Entrega de webhooknão
customer_action e outcomenão
Consulta, dashboard, relatório, exportaçãonão
4xx por autenticação, autorização ou contrato inválidonão
5xx, timeout do nosso lado, coleta INCONCLUSIVE ou FAILEDnão
Snapshot de produção, solicitado pela integração, concluídosim · 1
Proposta por volume, com o uso em shadow mode na mesa.
Em shadow mode. Você instala o SDK no seu site, liga a chamada servidor a servidor, e a resposta passa a rodar ao lado do seu fluxo real sem tocar em nenhuma decisão. Você devolve customer_action e o outcome e, no console, compara, acesso a acesso, a recomendação com o que o seu time informou ter feito, e acompanha a cobertura de evidência. Quando os números fecham, seu time decide se e onde a recomendação passa a influenciar uma decisão, sempre executada pelo seu backend.
Q02Quais jornadas vocês avaliam?
Qualquer tela que você escolher. Seu backend envia uma tag própria com cada avaliação, um slug em minúsculas como login, withdrawal ou pix_transfer: sem cadastro, sem lista fechada e sem limite. O console filtra, agrupa e exporta por tag, e os modelos (cadastro, login, recuperação de senha, segundo fator, alteração de perfil, depósito, saque, transferência Pix, trade, checkout) são um guia de integração. A tag nunca seleciona a política, os detectores, o fallback nem o prazo: toda avaliação com tag roda sob a mesma política e os mesmos 13 indicadores. Ela nunca deve levar dado pessoal. A requisição não leva valor, moeda nem beneficiário.
Q03Por que vocês não bloqueiam?
Porque evento não é fraude, nota não é decisão, e bloquear não prova nada. Quem conhece a conta, o limite, o histórico e o custo da fricção é você. Nós entregamos evidência, cobertura e uma recomendação explicada. BLOCK_RECOMMENDED é a recomendação mais forte que existe, e continua sendo uma recomendação. Quando você bloqueia, registra customer_action: BLOCKED, e isso vira dado para medir se a recomendação acertou.
Q04VPN, Tor ou aba anônima derrubam a nota?
Nas nossas políticas gerenciadas, nenhum deles produz BLOCK_RECOMMENDED sozinho; as regras que sua empresa configura seguem os pesos e o corte que ela escolheu. Modo privado e proteções do navegador são contexto neutro: podem reduzir a cobertura e aparecem no detalhe, sem reason code adverso. Tor, proxy, VPN e hospedagem são contexto de anonimização: uma política pode pesá-los junto com o que mais foi visto, nunca por tag. Na política gerenciada hoje, só automação e falsificação de navegador mexem na nota, e a recomendação é MONITOR. No exemplo do contrato v1 de saque nesta página, Tor detectado levou a REVIEW, e o reason code diz isso. Nunca é fraude em si.
Q05E se o SDK não carregar, ou o usuário bloquear scripts?
A jornada continua. Seu backend chama a API sem event_context_token e recebe INCONCLUSIVE, trust_score: null, evidence_coverage: 0, limitation_codes: ["COLLECTOR_NOT_LOADED"] e a recomendação de fallback, MONITOR. Nunca uma nota inventada. Nunca ALLOW por falta de evidência.
Q06Qual é a latência? Tem SLA?
O prazo é seu. O padrão do contrato é 5000 ms, e deadline_ms o define em qualquer valor de 250 a 5000 (mantenha o timeout HTTP acima de cerca de 6 s para o padrão); se for excedido, você recebe um Problem assessment-unavailable (503, retryable: true, com Retry-After), não uma resposta parcial. Repita a mesma operação lógica com um novo request_id. Latência e SLA entram na proposta, medidos no seu shadow mode antes de qualquer decisão depender da resposta.
Q07Como sei que a resposta não foi forjada?
Ela nunca passa pelo navegador. Seu backend assina cada chamada com HMAC-SHA-256 sobre dez linhas canônicas, a última delas o SHA-256 dos bytes exatos do corpo; key_id UUIDv7 é o único localizador público; request_id é reservado contra replay; uma falha de autenticação devolve um 401 uniforme sem revelar se a chave existe. O segredo nunca trafega. O vetor de teste normativo do protocolo faz parte do contrato; com ele você reproduz a assinatura byte a byte.
Q08Preciso enviar CPF, e-mail ou telefone?
Não. A avaliação usa refs opacas de pessoa e de conta que só o seu sistema resolve. Dado pessoal em texto claro não é requisito do produto. O comportamento de ponteiro e de digitação está desligado no contrato. As verificações de canvas, WebGL, áudio e fontes rodam sob a política de coleta gerenciada de todas as empresas e só saem do navegador como hashes, uma família de GPU e uma máscara de presença sobre uma lista fixa de fontes, nunca como pixels, som, nomes de GPU ou nomes de fontes. Senha, texto digitado, área de transferência, captura de tela, microfone e câmera são proibidos. Todo tipo de evidência tem finalidade, classe de privacidade e retenção declaradas; a base legal é revisada com o seu jurídico antes de a produção ser ligada, e nada nesta página substitui essa revisão.
Q09Quanto custa e o que o meu time precisa fazer?
Preço por volume de coletas concluídas, em proposta. A unidade candidata de cobrança é um snapshot concluído em produção; nada fora de produção conta. Do seu lado: um script no site, um endpoint servidor a servidor no backend para pedir a avaliação e duas chamadas de API para devolver a ação tomada e o resultado real (o outcome). O SDK é web e roda em qualquer navegador moderno; não há app para instalar.
Q10O que é inteligência de dispositivo, e qual a diferença para device fingerprinting?
O device fingerprinting lê características estáveis de um navegador para reconhecê-lo de novo. A inteligência de dispositivo começa aí e vai além: confere se essas características são coerentes entre si e com a rede, se há automação, emulador ou navegador anti-detect em ação, e como esse dispositivo se comporta entre as suas contas. O FingerTrackID devolve isso como uma nota de confiança, uma correspondência de dispositivo com confiança própria, cobertura de evidência e 13 indicadores, cada um com a versão do detector que o leu.
Q11Podemos definir nossas próprias regras, notas e listas?
Sim. No console, sua empresa dá pontos a qualquer um dos 13 indicadores e dos 54 itens de contexto, escolhe as faixas de nota e a recomendação de cada faixa, e pode rodar qualquer regra primeiro em fantasma, calculada e registrada sem mudar a resposta. As listas de bloqueio e de permissão aceitam um dispositivo, uma ref de conta ou um único IP, uma entrada por vez, com uma observação e o nome de quem adicionou. Toda publicação é uma nova versão auditada. O FingerTrackID nunca ativa uma regra nem adiciona uma entrada de lista por você.
Q12Um agente de IA de código consegue fazer a integração?
Sim. O SDK de servidor @fingertrackid/server assina a chamada, o servidor MCP @fingertrackid/mcp dá ao Claude Code, ao Cursor ou a qualquer agente compatível com MCP os contratos, os vetores de assinatura, um módulo de servidor pronto por tag e uma verificação do seu domínio de coleta, tudo somente leitura, e a documentação publica llms.txt e um bloco pronto de regras para o seu AGENTS.md. O segredo fica no seu ambiente; o agente nunca precisa vê-lo.
Q13Qual o peso do SDK, e ele deixa a página mais lenta?
O SDK coleta uma vez, em paralelo, numa única requisição ao seu próprio subdomínio de coleta. No desktop, a coleta completa levou entre cerca de 80 e 125 ms na mediana em Chrome, Firefox e Safari, sob um orçamento rígido de 250 ms; cada verificação ocupa no máximo 2 ms da thread principal, e as que esperam, como o tempo de frame ou um Worker, esperam em paralelo. Ele nunca mostra pedido de permissão e nunca bloqueia a sua interface.
17 · Contato
Avalie a jornada que você escolher, em shadow mode.
Comece em shadow mode: a resposta roda ao lado do seu fluxo real sem tocar em nenhuma decisão, você compara, devolve os resultados e só então começa a usar a recomendação. Se você tem telas em que a decisão importa e quer ver a resposta explicada antes de confiar nela, fale com a gente.
Agendar uma demo
Como começa
Uma conversa de 30 minutos sobre as jornadas que você quer avaliar e o seu fluxo de decisão.
Credencial de servidor para a sua aplicação, contrato executável e vetor HMAC. Não há sandbox: você testa em produção, em shadow mode.
Shadow mode com o seu fluxo real: você compara e devolve resultados antes de a resposta influenciar qualquer decisão.
Produção nas telas que você marcar com tag, com política versionada; toda decisão fica com o seu backend.
O que vem junto
Console com cobertura de evidência e, acesso a acesso, a recomendação ao lado da ação que você informou
Contrato event-assessment.v1 executável, com vetor de teste HMAC
Shadow mode em produção desde o primeiro dia: a resposta roda ao lado do seu fluxo e nunca toca uma decisão
Canal direto com as pessoas que escrevem a política