01 · Device intelligence para prevenção de fraude·As jornadas que identifica com uma tag
API de device intelligence e risco de fraude para a webAvalie cada acesso.Decida com evidência.
Uma tag por cada ecrã que escolhersignuploginpassword_recoverymfa_challengeprofile_changedepositwithdrawalpix_transfertradecheckout
signup
login
password_recovery
mfa_challenge
profile_change
deposit
withdrawal
pix_transfer
trade
checkout
+ a que vier a nomear
Um script no seu site lê o navegador e o dispositivo em cerca de uma décima de segundo no computador. Uma chamada assinada a partir do seu backend, com uma tag à sua escolha, recebe a resposta de imediato: uma pontuação de confiança, a cobertura de evidência e 13 indicadores, de bots e automação, falsificação de navegador e emuladores a VPN, proxy e Tor, com o motivo de cada recomendação. Identifique account takeover, registos falsos e fraude em levantamentos com evidência, não com palpites. Nós recomendamos. Quem decide e age é a sua empresa.
Resposta síncrona em qualquer ecrã que identificar · Modo sombra antes de influenciar qualquer decisão · As suas regras, as suas listas, a sua decisão
Como ler esta resposta · exemplo v1.1/login_completed
01
Porquê esta recomendação
ALLOWreason_codes · NO_ADVERSE_INDICATOR_MATCH
Nenhum indicador que a política pondera foi detetado. Exemplo do contrato: a política gerida do FingerTrackID recomenda MONITOR em qualquer pontuação; ALLOW vem de uma faixa de pontuação que a sua empresa definiu nas próprias regras de risco. Decidido sob policy-login-v1.
02
O que a pontuação é, e o que não é
trust_score 1000–100 · quanto mais alto, melhor
Confiança neste acesso sob esta versão da política, não uma probabilidade de fraude. Fora de COMPLETED é null, nunca um valor por omissão.
03
Quanto foi possível observar
evidence_coverage 100limitation_codes · nenhum
A parte das verificações previstas que foi executada. A evidência em falta seria indicada aqui: reduz a cobertura e nunca é motivo de risco.
04
A partir daqui, é consigo
customer_actiondepois o resultado
O seu backend decide e age, e depois comunica o que fez e o resultado real. 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 mais alto, 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: detetado, não detetado, 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 recolha
17
Secções de evidência do navegador e do dispositivo por recolha
48
APIs do navegador verificadas face à versão que o navegador declara
125
Milissegundos ou menos: mediana da recolha no computador em Chrome, Firefox e Safari
0
Pedidos de permissão mostrados ao seu utilizador
As suas regras e a sua investigação
54
Informações de contexto calculadas em cada avaliação
67
Regras que a sua empresa pode ponderar na própria pontuação: 13 indicadores e 54 informações de contexto
6
Listas de referência públicas por trás dos indicadores de rede
6
Idiomas da consola: inglês, português (Brasil e Portugal), espanhol, francês, alemão
Nunca — e isto não muda consoante o plano
Movimento do ponteiro e teclas premidas: o SDK não recolhe nenhum dos dois
Píxeis, amostras de áudio, nomes de fabricante e de renderizador da GPU ou nomes de tipos de letra: canvas, WebGL, WebGPU, áudio e tipos de letra só saem do navegador como hashes, uma família de GPU e uma máscara de presença sobre uma lista fixa de tipos de letra
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 recolha, medido nas nossas máquinas de teste com a cache vazia. Nenhum muda consoante o plano ou o volume.
03 · Casos de uso
Prevenção de fraude nos ecrãs onde a decisão importa.
A device intelligence responde a uma pergunta antes de o seu backend deixar a ação avançar: o que está realmente do outro lado deste ecrã? A mesma chamada serve todas as jornadas; a tag que envia apenas a classifica.
login · password_recovery · profile_change
Prevenção de account takeover
Uma conta conhecida num dispositivo que nunca usou, um navegador que mente sobre si próprio, um navegador anti-detect, uma viagem impossível de fazer naquele tempo. Cada caso chega como evidência, para que peça um segundo fator apenas quando importa.
signup · login · checkout
Deteção de bots e automação
Navegadores headless, frameworks de automação, agentes de IA identificados por assinatura e tráfego de datacenters. BOT_AUTOMATION e NETWORK_HOSTING dizem o que foi visto; a cobertura diz quanto foi possível ver.
signup · deposit · promotions
Contas falsas e multi-contas
Contas e pessoas por dispositivo e por IP, quão raro é o perfil do dispositivo na sua base, uma recolha repetida noutro dispositivo. Contexto que as suas regras podem ponderar, nunca um veredicto automático: uma pessoa pode ter várias contas legítimas.
withdrawal · pix_transfer · trade
Fraude em levantamentos, Pix e transferências
Um levantamento na primeira hora após um dispositivo novo, beneficiários partilhados entre contas, vizinhos que marcou como fraude confirmada. É o seu backend que retém ou revê o dinheiro; nós nunca o fazemos.
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 píxeis em bruto.
qualquer jornada
Deteção de VPN, proxy e Tor
Fornecedores de VPN conhecidos, proxies públicos, saídas Tor, gamas de alojamento e Apple iCloud Private Relay, a partir de listas públicas que atualizamos do nosso lado. A anonimização é contexto, não culpa: a sua política decide quanto 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 exatamente o que o analista precisa de ver: se o problema está no acesso ou na evidência.
trust_score
Confiança no acesso
72
0100 · quanto mais alto, melhor
Responde a quão fiável é este acesso sob esta versão da política; a tag que envia não a altera. Número inteiro de 0 a 100. Só existe quando assessment_status = COMPLETED; em qualquer outro estado é null, nunca um valor por omissão.
Não é uma probabilidade de fraude, a reputação da pessoa nem um valor por omissão para dados em falta. Mostramos 72/100, nunca "72% fiá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 agrupamento probabilístico.
Não é a identidade da pessoa nem prova de hardware. Party e Account são coisas diferentes.
evidence_coverage
Suficiência da evidência
100
0100 · 13 de 13 avaliados
Quanto do conjunto previsto de verificações foi possível executar, de 0 a 100. Cada indicador aplicável que fica como NOT_EVALUATED reduz a cobertura e aparece em limitation_codes.
Não faz parte da pontuação. Uma cobertura baixa não puxa a pontuação para baixo nem para cima: deixa a avaliação inconclusiva.
Porque não as somamos
Uma pontuação única de "suspeita" mistura três perguntas diferentes: este acesso merece confiança? A evidência foi suficiente? É o mesmo dispositivo? Quando a resposta chega separada, o seu analista sabe se deve pedir um segundo fator, esperar pela recolha ou consultar o histórico. Quando chega fundida, 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.
Cada avaliação web devolve os 13 códigos, sempre. O que muda é o estado de cada um, nunca a lista. Cada indicador tem o seu próprio detetor versionado, e a resposta indica a versão que o avaliou. Um detetor em falta, expirado ou com erro nunca se torna false.
signal_catalog web · 13 códigos · exemplo withdrawal_completed
Detetado
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 geridas, o Tor por si só nunca justifica BLOCK_RECOMMENDED; as regras que a sua empresa configura seguem os pesos e o corte que ela escolheu. Neste exemplo do contrato v1, policy-withdrawal-v1 pediu a revisão do levantamento, não um bloqueio, e o único reason code diz exatamente isso. A política gerida hoje em produção recomenda MONITOR em qualquer pontuação.
Um detetor em falta, expirado ou com erro nunca se torna false. NOT_APPLICABLE vem apenas da matriz imutável do catálogo por canal, motor e plataforma; a sua tag nunca a altera, e uma política desligada, um timeout ou uma indisponibilidade nunca tomam esse atalho.
Podem limitar o que observamos. A cobertura só baixa onde a evidência não é avaliada. Não são fraude. Descrevem o ambiente; não acusam a pessoa. Nas nossas políticas geridas, por si sós nunca justificam BLOCK_RECOMMENDED; as regras que a sua empresa configura seguem os pesos e o corte que ela escolheu. Quando não é possível distinguir o tipo de rede, como por trás do Apple iCloud Private Relay, alojamento, VPN e proxy ficam todos NOT_EVALUATED com NETWORK_TYPE_AMBIGUOUS: nunca marcamos três deteçõ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, gamas de fornecedores de cloud, listas de redes de alojamento, gamas de fornecedores de VPN e uma base de dados de proxies públicos. Os endereços dos seus utilizadores nunca são enviados aos editores das listas. Uma lista que ultrapassa a idade máxima deixa o seu indicador NOT_EVALUATED, nunca NOT_DETECTED.
06 · Informações de contexto
Para além dos 13 indicadores: 54 informações de contexto. Para a investigação e, quando assim escolher, para a sua pontuação.
Em cada avaliação, antes da resposta, calculamos 54 informações de contexto a partir do que foi recolhido e do histórico da sua própria empresa: quem mais usa o dispositivo, a que velocidade a conta se movimenta, a partir de que rede, ao lado de que contas. A política gerida do FingerTrackID mantém-nas fora da pontuação. Nas suas próprias regras de risco, qualquer uma pode ficar desligada, em fantasma ou ativa, com pontos para invulgar e muito invulgar: uma informação ativa que dispara desconta pontos da pontuação de confiança e identifica-se em reason_codes.
context-insight.v1 · 54 informações em seis temas · agrupadas como na consola e nas suas regras
Conta e dispositivo · 10
Dispositivo novo e sistema operativo 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 de atividade elevada · quão comum, invulgar ou raro é o perfil do dispositivo na sua empresa · cookie do dispositivo perdido
Levantamentos e ordens · 7
Levantamentos na primeira hora após um dispositivo novo · beneficiários por dispositivo e contas por beneficiário em 30 dias · número e montante de levantamentos por conta · número de ordens por conta e o intervalo mediano entre ordens
Rede e localização · 12
País novo e fornecedor de internet (ASN) novo para a conta · países, fornecedores e IPs distintos por conta · contas e pessoas por IP · viagem impossível · fuso horário do navegador que não corresponde ao país do IP · país de saída da VPN · fornecedor numa lista pública de abuso · Apple iCloud Private Relay
Integridade do navegador e do SDK · 16
Ferramentas de programador abertas · marcas de automação · marcador de navegador anti-detect · assinatura TLS que não corresponde ao navegador declarado, e a sua estabilidade em 30 dias · renderizador por software e família de GPU · canvas ou áudio que muda entre duas leituras · navegador integrado numa 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 · recolha idêntica repetida noutro dispositivo · cookie do dispositivo usado em locais demasiado distantes
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
Ligações entre contas, um salto · 4
Outras contas que usaram os mesmos dispositivos · contas vizinhas onde foi detetada automação ou falsificação de navegador · contas vizinhas que marcou como fraude confirmada · beneficiários de levantamentos partilhados 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 seu motivo, nunca apresentado como zero.
Algumas informações dependem do que envia. Sem referências de conta ou de pessoa, sem tag ou sem resultados, o item di-lo: conta não enviada, avaliação sem tag, nenhum resultado enviado. Um pedido com tag não leva montante nem beneficiário, por isso os itens de montante e de beneficiário do levantamento também o dizem. 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 não são
Não são um dos 13 indicadores, nem nunca um código de limitação. Só chegam a reason_codes através de uma regra que a sua empresa ativou.
Nunca entram na pontuação da política gerida do FingerTrackID. Uma informação ativa sem dados não desconta nada: evidência em falta nunca se torna risco.
Não são um modelo oculto: cada informação é lida como esperada, invulgar ou muito invulgar numa régua que a sua empresa pode ajustar, a partir de um valor por omissã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 uma regra "N contas por dispositivo = fraude".
Onde o analista as lê
Detalhe do acesso. Um cartão "Contexto do acesso" agrupa as informações por tema, com as respetivas janelas de tempo, o corte do histórico que consideraram, quão invulgar é cada uma na sua régua e o motivo de cada item que ficou sem valor. Uma informação que não cabe no orçamento de tempo da avaliação é concluída em segundo plano e indica-o; nunca atrasa nem faz falhar a resposta.
Catálogo de indicadores. Uma página explica o que procura cada um dos 13 indicadores, o que o deixa não avaliado e se pode mexer na pontuação, e lista as informações de contexto com os motivos pelos quais podem ficar sem valor.
Canvas, WebGL, áudio e tipos de letra são lidos sob a política de recolha gerida de todas as empresas, apenas como valores derivados, e alimentam algumas destas informações, 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 seu motivo.
07 · Inconclusivo é um resultado
Quando não conseguimos avaliar, dizemo-lo, e porquê.
Evidência em falta não produz confiança 100, nem se torna um sinal de fraude. Sem pontuação, a recomendação vem do fallback congelado dentro da versão da política e coberto pelo seu hash, e é uma única resposta para todos os estados sem pontuação, qualquer que seja a tag: MONITOR. Nunca ALLOW.
Casos sem pontuação dos exemplos do contrato
A tag nunca seleciona o fallback. Na política gerida, todo o estado sem pontuação, em qualquer tag, recomenda MONITOR: continuar e registar. O mesmo fazem os três exemplos do contrato abaixo.
INCONCLUSIVEtag login · o SDK não carregou
MONITOR
Sem recolha: trust_score: null, evidence_coverage: 0, COLLECTOR_NOT_LOADED, base INSUFFICIENT_EVIDENCE. Nada é alguma vez libertado 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, 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, base TECHNICAL_FAILURE. Nunca lida como "sem risco".
Sem pontuação nunca recomendamos ALLOW · fallback_policy_version production-observation-fallback-v2 nos exemplos · o fallback é validado com a política sempre que a política é lida
Quatro estados da avaliação
Concluída72base EVALUATION · os reason_codes explicam a pontuação
Inconclusivanullbase INSUFFICIENT_EVIDENCE · os limitation_codes dizem o que faltou
Sem pontuação possívelnullbase OUT_OF_POLICY_SCOPE · evento válido, a política não o cobre
Falhadanullbase TECHNICAL_FAILURE · POLICY_UNAVAILABLE, policy_version null · nunca "sem risco"
Os 14 códigos de limitação do catálogo · o que faltou, nunca porque é arriscado
Um código de limitação explica a recolha e a qualidade; um reason code explica a política. Cada indicador NOT_EVALUATED aponta para o seu; a avaliação agrega-os todos em limitation_codes. Uma limitação de recolha nunca é motivo de risco.
08 · Quem decide é a sua empresa
Cinco recomendações. Zero ações tomadas por nós.
recommended_action diz o que a política sugere. customer_action diz o que a sua empresa fez. Dois campos, porque são dois factos.
Quem recomenda, quem decide, quem age
O FingerTrackID recomenda
ALLOW
MONITOR
STEP_UP
REVIEW
BLOCK_RECOMMENDED
Nunca só por privacidade · Tor, VPN, proxy, navegação anónima, dispositivo partilhado
→
O seu fluxo decide
O seu backend decide e age. Devolvemos uma recomendação; hoje a política gerida responde MONITOR, apenas observação. O que acontece ao acesso é decidido e executado do seu lado. Quem conhece a conta, o limite, o histórico e o custo da fricção é a sua empresa. Nós não.
→
A sua empresa age e comunica
ALLOWED
CHALLENGED
HELD
REVIEWED
BLOCKED
CANCELLED
customer_action · o campo que nos 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 seja legítima nem que o acesso esteja certificado. Só é emitida com pontuação e com a evidência obrigatória avaliada.
MONITOR
Continuar, mas registar. É o fallback sem pontuação em qualquer tag e, hoje, também a resposta da política gerida em qualquer pontuação. Não significa suspeita confirmada nem exige qualquer ação do utilizador.
STEP_UP
Pedir um segundo fator ou uma confirmação. Não significa que desafiemos alguém: quem mostra o desafio é a sua empresa.
REVIEW
Enviar para revisão humana. Não significa que retenhamos dinheiro: a operação fica no seu sistema, sob a sua decisão.
BLOCK_RECOMMENDED
A política sugere recusar. Não significa um bloqueio executado, fraude confirmada nem um banimento. Quando bloqueia, isso torna-se customer_action: BLOCKED, um evento seu, e alimenta a medição da precisão.
09 · Integração
Três passos, um contrato. O navegador recolhe; o 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 recolhe e devolve um token. Mais nada.
Servido a partir de um subdomínio seu. Antes de enviar o pedido que quer avaliar, seja qual for o ecrã, recolhe sinais do navegador e do ambiente e recebe 202 PROCESSING: confirma a receção, não um resultado. Os sinais de rede são acrescentados pelo edge no seu domínio de recolha, nunca pelo script. Nenhuma pontuação, sinal ou decisão regressa ao 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
O seu backend chama
Uma chamada assinada e síncrona, dentro do seu prazo.
HMAC-SHA-256 sobre dez linhas canónicas — marcador, key_id, método, caminho, timestamp, ids do evento e do pedido, metadados do conteúdo e, na última linha, o SHA-256 dos bytes exatos do corpo. Nunca volte a serializar o JSON antes do hash; o contrato traz o vetor normativo. key_id é o único localizador público. O segredo nunca viaja. Vetor canónico requests.both_refs_deadline_750 do contrato v1.1: a mesma rota e a mesma assinatura do v1, com uma tag em vez de journey, action e journey_context.
a tag é um slug em minúsculas de até 64 caracteres (letras, dígitos e underscore, no máximo dez dígitos), nunca dados pessoais; este vetor está nesse limite · subject_ref e account_ref podem ser null, e um account_ref exige um subject_ref · as refs são códigos opacos seus, nunca um número de identificação, email 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 pontuação parcial
03
Resposta síncrona
Leia-a, decida, devolva o que 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 fez e, quando souber, truth_status com o resultado real (o outcome: legítimo, fraude confirmada ou evidência insuficiente). O contrato sujeita ambas à mesma disciplina da chamada de avaliação: nada conta como aceite antes de um commit durável, e uma repetição idêntica não acrescenta um segundo efeito. Um outcome pode ser corrigido mais tarde — a correção é acrescentada como sucessora, e o registo anterior continua legível.
POST /v1/assessments/{assessment_id}/customer-actions POST /v1/assessments/{assessment_id}/outcomes
Web, em qualquer navegador moderno · nenhuma app para instalar · SDK, avaliação e retorno no mesmo contrato versionado
npm install @fingertrackid/server assina a chamada por si, e @fingertrackid/mcp permite que o Claude Code, o Cursor ou qualquer agente de programação compatível com MCP faça a integração a partir do contrato publicado. Passo a passo no início rápido, no guia do Web SDK e na referência da API.
10 · Zero trust no navegador
O navegador só recolhe. A decisão e o identificador nunca passam por ele.
Nada do 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 um efeito novo.
Quem fala com quem
O navegador recebe apenas IDs opacos de sessão e de evento. A pontuação, os sinais e a recomendação nascem e ficam no servidor. O cookie first-party é assinado, HttpOnly, Secure e limitado ao seu tenant e à sua aplicação.
Anatomia da chamada
POST /v1/assessmentssegurança ftidHmacV1 a partir do contrato
X-FTID-Signature: v1=<key_id>:<mac-hex>key_id UUIDv7 é o único localizador; tenant, aplicação, ambiente e capacidades só se tornam autoridade depois de um MAC válido em comparação de tempo constante. X-Client-Id, nonce legado e assinaturas múltiplas são recusados.
X-FTID-Timestamp: 1791720000Epoch em segundos. Tolerância de ±300 s. Um timestamp no futuro nunca prolonga a retenção.
X-FTID-Request-Id: <uuidv7>Uma utilização por tentativa, reservada após um MAC válido. Uma repetição 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_msO seu orçamento. Excedido antes da avaliação: Problem assessment-unavailable (503, retryable: true), não uma pontuação parcial.
401uniforme: um key_id inexistente ou revogado e uma assinatura errada produzem todos o mesmo authentication-failed.
403uma credencial autenticada sem a capacidade de avaliação da rota.
503dependência de segredos indisponível: um latch global torna a resposta uniforme sem revelar se o key_id existe. Assine um novo request_id.
11 · Política versionada
Cada decisão tem uma versão. A versão congela tudo o que a determinou.
Alterar a sensibilidade de um indicador cria uma nova versão, com autor, período de vigência, simulação e reversão. O histórico não muda. A falta de uma versão real bloqueia a utilização.
correlation_id serve para o suporte sem expor um identificador pessoal. As versões expostas são etiquetas públicas opacas; os IDs internos da base de dados nunca aparecem na API, no webhook nem na consola.
O que uma versão da política congela
catálogo de sinais
normalização
features
resolvedor de dispositivos
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 outras versões em vigor no received_at do evento. Uma política nova sobre um evento antigo é uma simulação separada; nunca reescreve qual a recomendação que orientou a decisão histórica.
12 · Modo sombra
Primeiro em paralelo. Só depois a resposta influencia uma ação.
O modo sombra consiste em pôr o FingerTrackID a funcionar lado a lado com o que usa hoje, sem que a resposta toque em qualquer decisão. 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 recolhe
202 PROCESSING · event_context_token
02
O seu backend pede a avaliação
POST /v1/assessments · síncrono
03
A sua empresa decide no seu fluxo
em sombra, sem usar a resposta
04
Comunica a ação
customer_action · POST …/customer-actions
05
Comunica o resultado
truth_status · POST …/outcomes
recommendation_alignment · derivado no servidor a partir do par recomendação × ação; nunca declarado pelo cliente. A coincidência não prova causalidade, nem precisão, 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ó uma etiqueta madura se torna métrica de qualidade.
O que o ciclo alimenta
Falsos positivos e falsos negativos como métricas derivadas de etiquetas maduras, não de campos preenchidos à mão.
Recalibração de regras e limiares, sempre como uma nova versão da política.
Qualidade dos detetores medida no seu modo sombra, antes de a resposta influenciar qualquer ação sua.
O que não faz: tornar-se enforcement automático. customer_action e truth_status são factos separados, e cada correção cria uma sucessora.
13 · Privacidade por contrato
Limitada pelo contrato, não por uma definição.
PII em texto claro não é um requisito do produto. Envia referências opacas de pessoa e de conta; não pedimos número de identificação, email nem número de telemóvel para avaliar um acesso.
packages/contracts/src/sdk-handshake-v1.ts · política de recolha
A recolha comportamental, ou seja, movimento do ponteiro e teclas premidas, só aceita o valor desligado: ativá-la exige alterar o contrato, não uma definição. Canvas, WebGL, áudio offline e presença de tipos de letra são lidos sob a política de recolha gerida, que os ativa para todas as empresas, e só saem do navegador como valores derivados: hashes de comprimento fixo, uma família de GPU fechada, uma contagem e uma máscara de presença sobre uma lista fixa de tipos de letra. O contrato não tem campo para píxeis, amostras de áudio, nomes de fabricante ou de renderizador da GPU, nem nomes de tipos de letra. Em conjunto, estes valores derivados podem voltar a reconhecer o mesmo navegador, por isso são tratados como dados do dispositivo e não como dados anónimos. Nunca recolhidos, como regra absoluta: palavra-passe, texto escrito, conteúdo de conversas ou documentos, área de transferência, captura de ecrã, microfone, câmara. Cada evidência tem uma classe de privacidade, e classe não é peso de risco.
Garantias que não dependem de boa vontade
PII não entra em logs. Os dados em bruto não aparecem livremente na consola: cada acesso a eles fica registado. Um identificador ou valor pessoal nunca vai num URL.
A correlação entre tenants está desligada. Cada tabela de domínio tem tenant_id com isolamento forçado na base de dados. Não há reputação nem etiqueta partilhada entre clientes.
Cookie first-party servido a partir do seu domínio: assinado, HttpOnly, Secure, limitado ao seu tenant e à sua aplicação. O valor nunca viaja para base de dados, fila ou log; se faltar ou for rejeitado, a continuidade degrada-se como limitação e a avaliação não para.
Cada fusão de dispositivos é reversível e regista a versão do resolvedor que a fez. O IP nunca consolida dispositivos sozinho.
Cada tipo de evidência tem finalidade declarada, classe de privacidade, regra de acesso e conservação no nosso inventário de dados. Fundamento jurídico, residência dos dados e DPA são tratados com a sua equipa jurídica na contratação; nada nesta página é aconselhamento jurídico.
Party não é Account
A ligação vem do seu backend · nunca inferida a partir do fingerprint
Uma pessoa, várias contas legítimas. Uma conta nunca muda de pessoa em silêncio; a sessão só progride 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 residem
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 · Consola
Uma consola para integrar, investigar e fechar o ciclo.
A consola responde primeiro a "estamos a receber, avaliar e explicar com qualidade?", e só depois deixa alguém falar de legitimidade. Cada percentagem indica o seu denominador.
Esquema, não uma captura de ecrã · tons da consola dentro da moldura
Detalhe do acesso. As três medidas como três componentes separados; a recomendação com o seu recommendation_basis, a política em vigor e o que a sua equipa comunicou ter feito; a atualidade da evidência; os 13 indicadores com estado, aplicabilidade, origem, confiança do detetor, atualidade e o motivo de cada não avaliado; limitações e reason codes; sessão, dispositivo e as suas associações; multiplicidade no dispositivo; uma localização aproximada a partir da rede; o contexto do acesso; e um separador de dados técnicos com tudo o que o SDK e o edge recolheram, incluindo a versão real do navegador lida a partir das APIs que expõe, ao lado da versão que declara.
Filtros de investigação. A lista de acessos filtra por fornecedor 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 referência de conta ou de pessoa. Não há filtro por endereço IP: é um dado pessoal. Cada detalhe de acesso traz também as suas informações de contexto ↑.
Investigar a fundo. A partir de qualquer acesso, um grafo de ligações abre os dispositivos e as contas à sua volta, um salto de cada vez, sobre até 92 dias do seu próprio histórico. Cada expansão é uma leitura registada; os endereços IP nunca se tornam nós.
Listas de bloqueio e de permissão. A partir do detalhe do acesso, a sua equipa coloca um dispositivo, uma referência de conta ou um único IP na lista de bloqueio (bloquear ou rever) ou na lista de permissão da sua empresa, com uma nota e o nome de quem o adicionou. Num acesso de produção com pontuação, uma entrada sobrepõe-se à recomendação e identifica-se em reason_codes. Nada é apagado: remover uma entrada regista quem a removeu e quando.
Assistente de IA. Um painel lateral explica cada ecrã e responde a perguntas sobre a sua própria integração e os seus acessos, dentro da sua empresa e da sua função.
Configuração de risco. As regras de risco da sua própria empresa, por aplicação: cada um dos 13 indicadores fica desligado, em fantasma ou ativo, com um peso de 1 a 100 pontos, e a sua empresa define as faixas de pontuação e a ação de cada uma. Uma regra fantasma é calculada e registada, mas nunca altera a resposta. Antes de publicar, o cartão de impacto repete o seu rascunho sobre as avaliações dos últimos 1, 7 ou 30 dias. Cada uma das 54 informações de contexto ↑ pode juntar-se a elas com os seus próprios pontos. O seu administrador ou supervisor de risco publica diretamente; cada publicação é uma nova versão auditada, e tudo para fantasma suspende todas as suas regras de uma só vez. O FingerTrackID nunca ativa uma regra por si: o seu suporte só pode pôr todas as regras de uma aplicação em fantasma, com um motivo que a sua consola mostra. Enquanto nenhuma regra estiver ativa, responde a política gerida, publicada pela equipa do FingerTrackID com aprovação registada.
Dezasseis ecrãs em quatro grupos · principal, deteção, operação, administração
01Início
09Integração e saúde
02Visão geral
10Utilização
03Acessos
11Exportações
04Fila de revisão
12Relatórios
05Configuração de risco
13Utilizadores 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 levantamentos: uma fila operacional construída sobre o mesmo núcleo, que leva a uma pessoa cada levantamento v1 com recomendação REVIEW, com a evidência ao lado. As avaliações com tag nunca entram nela, e fica vazia enquanto a política recomendar MONITOR, como faz hoje a política gerida.
Em inglês, português (Brasil e Portugal), espanhol, francês e alemão. Início de sessão com passkey ou segundo fator; permissões por função; um registo de auditoria de quem viu dados sensíveis e de quem alterou o quê. Os dados em bruto não aparecem livremente: cada acesso a eles fica registado.
15 · Como cobramos
Uma unidade de faturação. Tudo o resto não conta.
Preço por volume de recolhas concluídas, definido na proposta. O modo sombra consome as mesmas unidades e aparece na consola como utilização estimada; o que entra na fatura desse período é definido na proposta.
A unidade
Um snapshot de device intelligence de produção, pedido pela sua integração e concluído.
É a unidade de medida e a unidade candidata de faturação. Cada device_intelligence_snapshot_id produz no máximo uma unidade, independentemente de quantas avaliações, tags, fornecedores ou reprocessamentos usem essa recolha.
Pontuação, recomendação, ação e resultado não determinam a faturação. Um resultado arriscado não custa mais; um resultado legítimo não custa menos.
Um limite comercial nunca se torna um bloqueio, um limite de pedidos nem uma degradação automática do serviço.
Cada snapshot pedido produz um registo de utilização imutável, mesmo quando não é faturável. As exclusões são provadas por esse registo, não reconstruídas a partir de logs.
Evento · cria uma unidade?
Aplicações que não são de produção (desenvolvimento, staging)não
Repetição com o mesmo idempotency_keynão
Qualquer avaliação, em qualquer tag, que reutilize um snapshot recentenão
Reprocessamento, replay histórico, alteração de políticanão
Enriquecimento assíncrono e atualização iniciados por nósnão
Chamada ou nova tentativa a um fornecedornão
Entrega de webhooknão
customer_action e resultadonão
Consulta, painel, relatório, exportaçãonão
4xx por autenticação, autorização ou contrato inválidonão
5xx, um timeout do nosso lado, recolha INCONCLUSIVE ou FAILEDnão
Snapshot de produção, pedido pela integração, concluídosim · 1
Proposta por volume, com a utilização do modo sombra em cima da mesa.
As perguntas que um responsável de risco e um CTO fazem.
Q01Como começa a integração?
Em modo sombra. Instala o SDK no seu site, ativa a chamada servidor a servidor e a resposta começa a correr ao lado do seu fluxo real sem tocar em qualquer decisão. Devolve customer_action e o resultado e, na consola, compara, acesso a acesso, a recomendação com o que a sua equipa comunicou ter feito, e acompanha a cobertura de evidência. Quando os números baterem certo, a sua equipa decide se e onde a recomendação começa a influenciar uma decisão, sempre executada pelo seu backend.
Q02Que jornadas avaliam?
Qualquer ecrã que escolher. O seu backend envia uma tag própria com cada avaliação, um slug em minúsculas como login, withdrawal ou pix_transfer: sem registo prévio, sem lista fechada e sem limite. A consola filtra, agrupa e exporta por tag, e os modelos (registo, login, recuperação de palavra-passe, segundo fator, alteração de perfil, depósito, levantamento, transferência Pix, negociação, checkout) são um guia de integração. A tag nunca seleciona a política, os detetores, o fallback nem o prazo: todas as avaliações com tag correm sob a mesma política e os mesmos 13 indicadores. Nunca pode conter dados pessoais. O pedido não leva montante, moeda nem beneficiário.
Q03Porque não bloqueiam?
Porque um evento não é fraude, uma pontuação não é uma decisão e bloquear não prova nada. Quem conhece a conta, o limite, o histórico e o custo da fricção é a sua empresa. Nós entregamos evidência, cobertura e uma recomendação explicada. BLOCK_RECOMMENDED é a recomendação mais forte que existe, e continua a ser uma recomendação. Quando bloqueia, regista customer_action: BLOCKED, e isso torna-se um dado para medir se a recomendação estava certa.
Q04VPN, Tor ou um separador privado baixam a pontuação?
Nas nossas políticas geridas, nenhum deles produz BLOCK_RECOMMENDED por si só; as regras que a sua empresa configura seguem os pesos e o corte que ela escolheu. O modo privado e as proteções do navegador são contexto neutro: podem reduzir a cobertura e aparecer no detalhe, sem reason code adverso. Tor, proxy, VPN e alojamento são contexto de anonimização: uma política pode pesá-los em conjunto com o resto do que foi visto, nunca pela tag. Na política gerida, hoje só a automação e a falsificação de navegador mexem na pontuação, e a recomendação é MONITOR. No exemplo do contrato v1 de levantamento nesta página, o Tor detetado levou a REVIEW, e o reason code di-lo. Nunca é fraude em si.
Q05E se o SDK não carregar, ou se o utilizador bloquear scripts?
A jornada continua. O 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 pontuação inventada. Nunca ALLOW por falta de evidência.
Q06Qual é a latência? Existe SLA?
O prazo é seu. O valor por omissão do contrato é 5000 ms, e deadline_ms define-o entre 250 e 5000 (mantenha o seu timeout HTTP acima de cerca de 6 s para o valor por omissão); se for excedido, 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. A latência e o SLA entram na proposta, medidos no seu modo sombra antes de qualquer decisão depender da resposta.
Q07Como sei que a resposta não foi falsificada?
Nunca passa pelo navegador. O seu backend assina cada chamada com HMAC-SHA-256 sobre dez linhas canónicas, a última das quais é o SHA-256 dos bytes exatos do corpo; key_id UUIDv7 é o único localizador público; request_id fica reservado contra replay; uma falha de autenticação devolve um 401 uniforme sem revelar se a chave existe. O segredo nunca viaja. O vetor de teste normativo do protocolo faz parte do contrato; com ele reproduz a assinatura byte a byte.
Q08Tenho de enviar número de identificação, email ou número de telemóvel?
Não. A avaliação usa referências opacas de pessoa e de conta que só o seu sistema resolve. PII em texto claro não é um requisito do produto. O comportamento do ponteiro e das teclas está desligado no contrato. As verificações de canvas, WebGL, áudio e tipos de letra correm sob a política de recolha gerida 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 tipos de letra, nunca como píxeis, som, nomes de GPU ou nomes de tipos de letra. Palavra-passe, texto escrito, área de transferência, captura de ecrã, microfone e câmara são proibidos. Cada tipo de evidência tem finalidade declarada, classe de privacidade e conservação; o fundamento jurídico é revisto com a sua equipa jurídica antes de a produção ser ativada, e nada nesta página substitui essa revisão.
Q09Quanto custa e o que tem a minha equipa de fazer?
Preço por volume de recolhas concluídas, numa proposta. A unidade candidata de faturação é um snapshot concluído em produção; nada fora da 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 à API para devolver a ação tomada e o resultado real (o outcome). O SDK é web e funciona em qualquer navegador moderno; não há nenhuma app para instalar.
Q10O que é device intelligence e em que difere de device fingerprinting?
O device fingerprinting lê características estáveis de um navegador para o voltar a reconhecer. A device intelligence parte daí e vai mais longe: verifica se essas características são coerentes entre si e com a rede, se há automação, um emulador ou um navegador anti-detect em ação, e como este dispositivo se comporta nas suas contas. O FingerTrackID devolve-a como uma pontuação de confiança, uma correspondência de dispositivo com confiança própria, a cobertura de evidência e 13 indicadores, cada um com a versão do detetor que o leu.
Q11Podemos definir as nossas próprias regras, pontuações e listas?
Sim. Na consola, a sua empresa atribui pontos a qualquer um dos 13 indicadores e das 54 informações de contexto, escolhe as faixas de pontuação e a recomendação de cada faixa, e pode pôr qualquer regra primeiro em fantasma, calculada e registada sem alterar a resposta. As listas de bloqueio e de permissão aceitam um dispositivo, uma referência de conta ou um único IP, uma entrada de cada vez, com uma nota e o nome de quem a adicionou. Cada publicação é uma nova versão auditada. O FingerTrackID nunca ativa uma regra nem adiciona uma entrada a uma lista por si.
Q12Um agente de programação com IA pode 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 recolha, tudo só de leitura, e a documentação publica llms.txt e um bloco de regras pronto para o seu AGENTS.md. O segredo fica no seu ambiente; o agente nunca precisa de o ver.
Q13Quanto pesa o SDK, e torna a página mais lenta?
O SDK recolhe uma vez, em paralelo, num único pedido ao seu próprio subdomínio de recolha. No computador, a recolha completa demorou entre cerca de 80 e 125 ms na mediana em Chrome, Firefox e Safari, com 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 a medição de frames ou um Worker, esperam em paralelo. Nunca mostra um pedido de permissão e nunca bloqueia a sua interface.
17 · Contacto
Avalie a jornada que escolher, em modo sombra.
Comece em modo sombra: a resposta corre ao lado do seu fluxo real sem tocar em qualquer decisão, compara, devolve os resultados e só então começa a usar a recomendação. Se tem ecrãs onde a decisão importa e quer ver a resposta explicada antes de confiar nela, fale connosco.
Marcar uma demonstração
Como começa
Uma conversa de 30 minutos sobre as jornadas que 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: testa em produção, em modo sombra.
Modo sombra com o seu fluxo real: compara e devolve resultados antes de a resposta influenciar qualquer decisão.
Produção nos ecrãs que identificar com tag, com política versionada; cada decisão fica com o seu backend.
O que inclui
Consola com cobertura de evidência e, acesso a acesso, a recomendação ao lado da ação que comunicou
Contrato event-assessment.v1 executável, com um vetor de teste HMAC
Modo sombra em produção desde o primeiro dia: a resposta corre ao lado do seu fluxo e nunca toca numa decisão
Canal direto com as pessoas que escrevem a política