01 · Device intelligence per la prevenzione delle frodi·I percorsi che etichetti tu
API di device intelligence e rischio frode per il webValuta ogni accesso.Decidi con le prove.
Un tag per ogni schermata che sceglisignuploginpassword_recoverymfa_challengeprofile_changedepositwithdrawalpix_transfertradecheckout
signup
login
password_recovery
mfa_challenge
profile_change
deposit
withdrawal
pix_transfer
trade
checkout
+ quello a cui dai il nome
Uno script sul tuo sito legge il browser e il dispositivo in circa un decimo di secondo su desktop. Una chiamata firmata dal tuo backend, con un tag a cui dai tu il nome, riceve subito la risposta: un trust score, la copertura delle prove e 13 indicatori, da bot e automazione, browser contraffatti ed emulatori fino a VPN, proxy e Tor, con il motivo di ogni raccomandazione. Individua account takeover, registrazioni false e frodi sui prelievi con le prove, non a intuito. Noi raccomandiamo. Tu decidi e agisci.
Risposta sincrona su ogni schermata che etichetti · Shadow mode prima che influisca su qualsiasi decisione · Le tue regole, le tue liste, la tua decisione
Come leggere questa risposta · esempio v1.1/login_completed
01
Perché questa raccomandazione
ALLOWreason_codes · NO_ADVERSE_INDICATOR_MATCH
Nessun indicatore pesato dalla policy è risultato rilevato. Esempio del contratto: la policy gestita di FingerTrackID raccomanda MONITOR a ogni punteggio; ALLOW viene da una fascia di punteggio che la tua azienda ha definito nelle proprie regole di rischio. Deciso con policy-login-v1.
02
Cosa è il punteggio, e cosa non è
trust_score 1000–100 · più alto è meglio
Fiducia in questo accesso con questa versione della policy, non una probabilità di frode. Fuori da COMPLETED è null, mai un valore predefinito.
03
Quanto si è potuto vedere
evidence_coverage 100limitation_codes · nessuno
La quota dei controlli previsti che sono stati eseguiti. Una prova mancante sarebbe indicata qui: abbassa la copertura e non è mai un motivo di rischio.
04
Poi tocca a te
customer_actionpoi l'esito
Il tuo backend decide e agisce, poi comunica cosa ha fatto e il risultato reale. Noi non blocchiamo mai e non tratteniamo mai denaro.
POST /v1/assessments → 201
event-assessment.v1.1 · esempio del contratto
assessment_statusCompletedvalutazione completata
trust_score1000–100 · più alto è meglio
device_match_confidence0.980–1 · forza della corrispondenza
evidence_coverage1000–100 · sufficienza
ALLOWrecommendation_basis · EVALUATIONraccomandazione, non azione
Stati per indicatore: rilevato, non rilevato, non valutato
14
Motivi espliciti per "non valutato", mai un falso silenzioso
5
Raccomandazioni possibili
3
Misure separate: fiducia, corrispondenza del dispositivo, copertura delle prove
1
Chiamata firmata per ogni evento valutato
La raccolta
17
Sezioni di prove su browser e dispositivo per ogni raccolta
48
API del browser verificate rispetto alla versione che il browser dichiara
125
Millisecondi o meno: raccolta mediana su desktop in Chrome, Firefox e Safari
0
Richieste di permesso mostrate al tuo utente
Le tue regole e le tue indagini
54
Insight di contesto calcolati in ogni valutazione
67
Regole che la tua azienda può pesare nel proprio punteggio: 13 indicatori e 54 insight
6
Liste di riferimento pubbliche alla base degli indicatori di rete
6
Lingue della console: inglese, portoghese (Brasile e Portogallo), spagnolo, francese, tedesco
Mai — e questo non cambia con il piano
Movimenti del puntatore e battute di tastiera: l'SDK non raccoglie né gli uni né le altre
Pixel, campioni audio, nomi del produttore e del renderer della GPU o nomi dei font: canvas, WebGL, WebGPU, audio e font lasciano il browser solo come hash, una famiglia di GPU e una maschera di presenza su un elenco fisso di font
WebRTC, porte locali, batteria, sensori di movimento: mai letti
Nessuna richiesta di permesso, nessuna decisione presa nel browser, nessuna azione compiuta da noi sul tuo account
— Ogni valore è un conteggio di un contratto, catalogo o elenco versionato, tranne il tempo di raccolta, misurato sulle nostre macchine di test con cache fredda. Nessuno cambia con il piano o il volume.
03 · Casi d'uso
Prevenzione delle frodi nelle schermate dove la decisione conta.
La device intelligence risponde a una domanda prima che il tuo backend lasci passare l'azione: cosa c'è davvero dall'altra parte di questa schermata? La stessa chiamata serve ogni percorso; il tag che invii serve solo a classificarla.
login · password_recovery · profile_change
Prevenzione dell'account takeover
Un account noto su un dispositivo mai usato prima, un browser che mente su sé stesso, un browser anti-detect, uno spostamento impossibile nel tempo trascorso. Ognuno torna come prova, così chiedi un secondo fattore solo quando serve.
signup · login · checkout
Rilevamento di bot e automazione
Browser headless, framework di automazione, agenti AI identificati per firma e traffico da datacenter. BOT_AUTOMATION e NETWORK_HOSTING dicono cosa è stato visto; la copertura dice quanto si è potuto vedere.
signup · deposit · promotions
Account falsi e account multipli
Account e persone per dispositivo e per IP, quanto è raro il profilo del dispositivo nella tua base, una stessa raccolta ripetuta su un altro dispositivo. Contesto che le tue regole possono pesare, mai un verdetto automatico: una persona può avere più account legittimi.
withdrawal · pix_transfer · trade
Frodi su prelievi, Pix e bonifici
Un prelievo nella prima ora dopo un nuovo dispositivo, beneficiari condivisi tra account, account vicini che hai segnato come frode confermata. È il tuo backend a trattenere o rivedere il denaro; noi mai.
qualsiasi percorso
Emulatori e browser contraffatti
Emulatori Android e virtualizzazione, una GPU impossibile per il sistema dichiarato, una versione del browser smentita dalle sue stesse API. Segnali di device fingerprinting letti come hash e famiglie, mai come pixel grezzi.
qualsiasi percorso
Rilevamento di VPN, proxy e Tor
Provider VPN noti, proxy pubblici, nodi di uscita Tor, intervalli di hosting e Apple iCloud Private Relay, da liste pubbliche aggiornate da noi. L'anonimizzazione è contesto, non colpa: è la tua policy a decidere quanto pesa.
04 · Le misure
Misure separate. Nessuna media travestita da certezza.
Fondere fiducia, copertura e corrispondenza del dispositivo in un solo numero nasconde proprio ciò che l'analista deve vedere: se il problema è l'accesso o le prove.
trust_score
Fiducia nell'accesso
72
0100 · più alto è meglio
Risponde a quanto è affidabile questo accesso con questa versione della policy; il tag che invii non la cambia. Intero da 0 a 100. Esiste solo quando assessment_status = COMPLETED; in ogni altro stato è null, mai un valore predefinito.
Non è una probabilità di frode, la reputazione della persona né un valore predefinito per dati mancanti. Mostriamo 72/100, mai "affidabile al 72%".
device_match_confidence
Corrispondenza del dispositivo
0.94
01 · massimo 0,98
Forza della prova che questo accesso provenga dallo stesso dispositivo già visto, da 0 a 1. Arriva con device_id, un identificatore pubblico opaco del cluster probabilistico.
Non è l'identità della persona, né una prova dell'hardware. Party e Account sono cose diverse.
evidence_coverage
Sufficienza delle prove
100
0100 · 13 su 13 valutati
Quanta parte dell'insieme previsto di controlli è stato possibile eseguire, da 0 a 100. Ogni indicatore applicabile rimasto NOT_EVALUATED abbassa la copertura e compare in limitation_codes.
Non fa parte del punteggio. Una copertura bassa non abbassa né alza il punteggio: lascia la valutazione inconcludente.
Perché non le sommiamo
Un unico punteggio di "sospetto" mescola tre domande diverse: questo accesso merita fiducia? Le prove erano sufficienti? È lo stesso dispositivo? Quando la risposta arriva separata, il tuo analista sa se chiedere un secondo fattore, aspettare la raccolta o guardare lo storico. Quando arriva fusa, sa solo che "ha fatto 42".
05 · 13 indicatori
Tredici indicatori. Ognuno dice se ha visto, non ha visto o non ha potuto valutare.
Ogni valutazione web restituisce i 13 codici, sempre. Cambia lo stato di ciascuno, mai l'elenco. Ogni indicatore ha il proprio rilevatore versionato, e la risposta indica la versione che lo ha valutato. Un rilevatore mancante, scaduto o in errore non diventa mai false.
signal_catalog web · 13 codici · esempio withdrawal_completed
Rilevato
Not_detected
— Non_valutato
Integrità dell'ambiente
Privacy del browser · contesto neutro
Rete · contesto neutro
Dispositivo
reason_codes · NETWORK_TOR_DETECTEDREVIEW
Nelle nostre policy gestite, Tor da solo non giustifica mai BLOCK_RECOMMENDED; le regole configurate dalla tua azienda seguono i pesi e la soglia che ha scelto. In questo esempio del contratto v1, policy-withdrawal-v1 ha chiesto la revisione del prelievo, non un blocco, e l'unico reason code dice esattamente questo. La policy gestita oggi in produzione raccomanda MONITOR a ogni punteggio.
Lo stesso indicatore, tre stati
Rilevato · NETWORK_TORPROVIDER · ftid-network-tor.v1 · 0.9 · esempio withdrawal_completed
Non_rilevato · NETWORK_TORPROVIDER · ftid-network-tor.v1 · 0.9 · esempio login_completed
Un rilevatore mancante, scaduto o in errore non diventa mai false. NOT_APPLICABLE viene solo dalla matrice immutabile del catalogo per canale, motore e piattaforma; il tuo tag non la cambia mai, e una policy disattivata, un timeout o un'interruzione del servizio non prendono mai questa scorciatoia.
Possono limitare ciò che osserviamo. La copertura cala solo dove le prove non vengono valutate. Non sono frode. Descrivono l'ambiente; non accusano la persona. Nelle nostre policy gestite, da soli non giustificano mai BLOCK_RECOMMENDED; le regole configurate dalla tua azienda seguono i pesi e la soglia che ha scelto. Quando il tipo di rete non si può distinguere, come dietro l'iCloud Private Relay di Apple, hosting, VPN e proxy restano tutti NOT_EVALUATED con NETWORK_TYPE_AMBIGUOUS: non segniamo mai tre rilevamenti a partire da un solo booleano.
Le prove di rete provengono da liste di riferimento pubbliche che aggiorniamo sulla nostra infrastruttura: indirizzi di uscita Tor, intervalli dei provider cloud, liste di reti di hosting, intervalli dei provider VPN e un database di proxy pubblici. Gli indirizzi dei tuoi utenti non vengono mai inviati a chi pubblica le liste. Una lista oltre la sua età massima lascia il proprio indicatore NOT_EVALUATED, mai NOT_DETECTED.
06 · Insight di contesto
Oltre i 13 indicatori: 54 insight di contesto. Per l'indagine, e per il tuo punteggio quando lo scegli.
In ogni valutazione, prima della risposta, calcoliamo 54 insight di contesto da ciò che è stato raccolto e dallo storico della tua azienda: chi altro usa il dispositivo, quanto rapidamente si muove l'account, da quale rete, accanto a quali account. La policy gestita di FingerTrackID li tiene fuori dal punteggio. Nelle tue regole di rischio, ognuno può essere disattivato, ghost o attivo, con punti per insolito e molto insolito: un insight attivo che scatta toglie punti al trust score e si indica in reason_codes.
context-insight.v1 · 54 insight in sei temi · raggruppati come nella console e nelle tue regole
Account e dispositivo · 10
Nuovo dispositivo e nuovo sistema operativo per l'account · account e persone distinti sul dispositivo in 30 giorni · account della stessa persona sul dispositivo · dispositivi per account e per persona in 24 ore · dispositivo ad alta attività · quanto è comune, poco comune o raro il profilo del dispositivo nella tua azienda · cookie del dispositivo perso
Prelievi e ordini · 7
Prelievi nella prima ora dopo un nuovo dispositivo · beneficiari per dispositivo e account per beneficiario in 30 giorni · numero e importo dei prelievi per account · numero di ordini per account e intervallo mediano tra gli ordini
Rete e posizione · 12
Nuovo paese e nuovo provider internet (ASN) per l'account · paesi, provider e IP distinti per account · account e persone per IP · spostamento impossibile · fuso orario del browser che non corrisponde al paese dell'IP · paese di uscita della VPN · provider in una lista pubblica di abusi · Apple iCloud Private Relay
Integrità del browser e dell'SDK · 16
Strumenti per sviluppatori aperti · segni di automazione · marcatore di browser anti-detect · firma TLS che non corrisponde al browser dichiarato, e la sua stabilità in 30 giorni · renderer software e famiglia di GPU · canvas o audio che cambiano tra due letture · browser in-app · possibile modalità ospite · agente AI identificato per firma · categoria di bot · SDK diverso dal pacchetto approvato · una sessione SDK su più dispositivi · raccolta identica ripetuta su un altro dispositivo · cookie del dispositivo usato in luoghi troppo distanti
Velocità · 5
Accessi per dispositivo e per account in 5 minuti, 1 ora e 24 ore; per IP in 5 minuti e 1 ora · valutazioni con lo stesso tag per account e per dispositivo in 1 minuto, 5 minuti e 1 ora
Collegamenti tra account, un salto · 4
Altri account che hanno usato gli stessi dispositivi · account vicini in cui sono state rilevate automazione o contraffazione del browser · account vicini che hai segnato come frode confermata · beneficiari di prelievi condivisi con altri account
Tre stati · un motivo, mai uno zero
Osservato · la condizione è presente, oppure il conteggio o la misura differisce dal valore neutro.
Non osservato · valutato, e assente o neutro.
Non valutato · sempre con il suo motivo, mai mostrato come zero.
Alcuni insight dipendono da ciò che invii. Senza riferimenti di account o persona, senza un tag o senza esiti, la voce lo dice: account non inviato, valutazione senza tag, nessun esito inviato. Una richiesta con tag non porta importo né beneficiario, quindi lo dicono anche le voci su importo e beneficiario del prelievo. Anche un primo accesso, una rete anonimizzata o un IP fuori dalla finestra di un'ora di un controllo sono motivi.
Cosa non sono
Non sono tra i 13 indicatori, e mai un limitation code. Arrivano a reason_codes solo tramite una regola che la tua azienda ha reso attiva.
Mai nel punteggio della policy gestita di FingerTrackID. Un insight attivo senza dati non toglie nulla: una prova mancante non diventa mai rischio.
Non un modello nascosto: ogni insight viene letto come atteso, insolito o molto insolito rispetto a un metro che la tua azienda può regolare, partendo da un valore predefinito pubblicato.
Non un'accusa: un numero elevato di account o persone su un dispositivo non è prova di frode, e non esiste una regola "N account per dispositivo = frode".
Dove li legge l'analista
Dettaglio dell'accesso. Una scheda "Contesto dell'accesso" raggruppa gli insight per tema, con le finestre temporali, il limite dello storico considerato, quanto è insolito ciascuno sul tuo metro e il motivo di ogni voce rimasta senza valore. Un insight che non rientra nel budget di tempo della valutazione viene completato in background e lo dichiara; non ritarda né fa fallire mai la risposta.
Catalogo degli indicatori. Una pagina spiega cosa cerca ciascuno dei 13 indicatori, cosa lo lascia non valutato e se può spostare il punteggio, ed elenca gli insight di contesto con i motivi per cui possono restare senza valore.
Canvas, WebGL, audio e font vengono letti secondo la policy di raccolta gestita di ogni azienda, solo come valori derivati, e alimentano alcuni di questi insight, come la famiglia di GPU, un renderer software o un rendering che cambia tra due letture. Dove il browser non consente un controllo, la voce resta non valutata, con il suo motivo.
07 · Inconcludente è un risultato
Quando non possiamo valutare, lo diciamo, e spieghiamo perché.
Una prova mancante non produce fiducia 100, e non diventa un segnale di frode. Senza punteggio, la raccomandazione viene dal fallback congelato nella versione della policy e coperto dal suo hash, ed è un'unica risposta per ogni stato senza punteggio, qualunque sia il tag: MONITOR. Mai ALLOW.
Casi senza punteggio dagli esempi del contratto
Il tag non seleziona mai il fallback. Nella policy gestita ogni stato senza punteggio, su qualsiasi tag, raccomanda MONITOR: procedi e registralo. Lo stesso fanno i tre esempi del contratto qui sotto.
INCONCLUSIVEtag login · l'SDK non si è caricato
MONITOR
Nessuna raccolta: trust_score: null, evidence_coverage: 0, COLLECTOR_NOT_LOADED, base INSUFFICIENT_EVIDENCE. Nulla viene mai rilasciato come ALLOW.
INCONCLUSIVEprove di rete non disponibili
MONITOR
Quattro indicatori di rete NOT_EVALUATED, evidence_coverage: 69, PROVIDER_UNAVAILABLE. Qualunque sia l'operazione, resta nel tuo sistema, sotto la tua decisione; noi non tratteniamo mai denaro.
FAILEDtag pix_transfer · policy non disponibile
MONITOR
Errore tecnico: POLICY_UNAVAILABLE, policy_version: null, base TECHNICAL_FAILURE. Mai letto come "nessun rischio".
Senza punteggio non raccomandiamo mai ALLOW · fallback_policy_version production-observation-fallback-v2 negli esempi · il fallback viene convalidato insieme alla policy ogni volta che la policy viene letta
Quattro stati della valutazione
Completata72base EVALUATION · i reason_codes spiegano il punteggio
Inconcludentenullbase INSUFFICIENT_EVIDENCE · i limitation_codes dicono cosa mancava
Non valutabilenullbase OUT_OF_POLICY_SCOPE · evento valido, la policy non lo copre
Fallitanullbase TECHNICAL_FAILURE · POLICY_UNAVAILABLE, policy_version null · mai "nessun rischio"
I 14 limitation code del catalogo · cosa mancava, mai perché è rischioso
Un limitation code spiega la raccolta e la qualità; un reason code spiega la policy. Ogni indicatore NOT_EVALUATED rimanda al proprio; la valutazione li aggrega tutti in limitation_codes. Un limite di raccolta non è mai un motivo di rischio.
08 · Decidi tu
Cinque raccomandazioni. Zero azioni compiute da noi.
recommended_action dice cosa suggerisce la policy. customer_action dice cosa hai fatto tu. Due campi perché sono due fatti.
Chi raccomanda, chi decide, chi agisce
FingerTrackID raccomanda
ALLOW
MONITOR
STEP_UP
REVIEW
BLOCK_RECOMMENDED
Mai per la sola privacy · Tor, VPN, proxy, navigazione in incognito, dispositivo condiviso
→
Il tuo flusso decide
Il tuo backend decide e agisce. Restituiamo una raccomandazione; oggi la policy gestita risponde MONITOR, solo osservazione. Cosa succede all'accesso lo decidi ed esegui tu. Tu conosci l'account, il limite, lo storico e il costo dell'attrito. Noi no.
→
Agisci e riferisci
ALLOWED
CHALLENGED
HELD
REVIEWED
BLOCKED
CANCELLED
customer_action · il campo che ci rimandi
Non autentichiamo mai una persona.
Non blocchiamo mai la tua interfaccia.
Non spostiamo mai denaro.
Cosa non significa ciascuna raccomandazione
ALLOW
La policy non ha trovato motivi di attrito per questo accesso. Non significa che la persona sia legittima o che l'accesso sia certificato. Viene emessa solo con un punteggio e con le prove richieste valutate.
MONITOR
Procedi, ma registralo. È il fallback senza punteggio su ogni tag, e oggi anche la risposta della policy gestita a ogni punteggio. Non significa un sospetto confermato, e non richiede alcuna azione all'utente.
STEP_UP
Chiedi un secondo fattore o una conferma. Non significa che siamo noi a sfidare qualcuno: sei tu a mostrare la verifica.
REVIEW
Inviala alla revisione umana. Non significa che tratteniamo denaro: l'operazione resta nel tuo sistema, sotto la tua decisione.
BLOCK_RECOMMENDED
La policy suggerisce di negare. Non significa un blocco eseguito, una frode confermata o un ban. Quando blocchi, diventa customer_action: BLOCKED, un evento tuo, e alimenta la misurazione dell'accuratezza.
09 · Integrazione
Tre passi, un contratto. Il browser raccoglie; il tuo backend chiede; noi rispondiamo.
Uno script sul tuo sito, un endpoint server-to-server nel tuo backend e due chiamate per rimandare l'azione e il risultato. Nessuna decisione sul client.
01
SDK sul tuo sito
L'SDK raccoglie e restituisce un token. Tutto qui.
Servito da un tuo sottodominio. Prima che tu invii la richiesta da valutare, qualunque sia la schermata, raccoglie segnali del browser e dell'ambiente e riceve 202 PROCESSING: conferma la ricezione, non un risultato. I segnali di rete vengono aggiunti dall'edge sul tuo dominio di raccolta, mai dallo script. Nessun punteggio, segnale o decisione torna al browser.
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
Il tuo backend chiama
Una chiamata firmata e sincrona, entro la tua scadenza.
HMAC-SHA-256 su dieci righe canoniche — marcatore, key_id, metodo, percorso, timestamp, id di evento e di richiesta, metadati del contenuto e, nell'ultima riga, lo SHA-256 dei byte esatti del body. Non riserializzare mai il JSON prima dell'hash; il contratto include il vettore normativo. key_id è l'unico locator pubblico. Il segreto non viaggia mai. Vettore canonico requests.both_refs_deadline_750 dal contratto v1.1: la stessa route e la stessa firma della v1, con un tag al posto di journey, action e journey_context.
tag è uno slug minuscolo di massimo 64 caratteri (lettere, cifre e underscore, al massimo dieci cifre), mai un dato personale; questo vettore è al limite · subject_ref e account_ref possono essere null, e un account_ref richiede un subject_ref · i ref sono codici opachi tuoi, mai un codice fiscale, un'email o un ID sequenziale · deadline_ms è un intero da 250 a 5000, oppure null per 5000; se viene superato, torna un Problem 503 ripetibile, non un punteggio parziale
03
Risposta sincrona
Leggila, decidi, rimandaci cosa hai fatto.
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
Poi due chiamate di feedback: customer_action con cosa hai fatto e, quando lo sai, truth_status con il risultato reale (l'esito: legittimo, frode confermata o prove insufficienti). Il contratto applica a entrambe la stessa disciplina della chiamata di valutazione: nulla conta come accettato prima di un commit durevole, e un retry identico non aggiunge un secondo effetto. Un esito può essere corretto in seguito — la correzione viene aggiunta come successore, e il record precedente resta leggibile.
POST /v1/assessments/{assessment_id}/customer-actions POST /v1/assessments/{assessment_id}/outcomes
Web, in qualsiasi browser moderno · nessuna app da installare · SDK, valutazione e feedback nello stesso contratto versionato
npm install @fingertrackid/server firma la chiamata per te, e @fingertrackid/mcp permette a Claude Code, Cursor o qualsiasi agente di coding compatibile con MCP di collegare l'integrazione partendo dal contratto pubblicato. Passo per passo nella guida rapida, nella guida al Web SDK e nel riferimento API.
10 · Zero fiducia nel browser
Il browser si limita a raccogliere. Decisione e identificatore non vi passano mai.
Nulla di ciò che arriva dal browser viene trattato come autorità. La valutazione è server to server, firmata, e ogni tentativo conta una volta: ripeterlo non crea alcun nuovo effetto.
Chi parla con chi
Il browser riceve solo ID opachi di sessione e di evento. Punteggio, segnali e raccomandazione nascono e restano sul server. Il cookie first-party è firmato, HttpOnly, Secure e limitato al tuo tenant e alla tua applicazione.
Anatomia della chiamata
POST /v1/assessmentssecurity ftidHmacV1 dal contratto
X-FTID-Signature: v1=<key_id>:<mac-hex>key_id UUIDv7 è l'unico locator; tenant, applicazione, ambiente e capability diventano autorità solo dopo un MAC valido con confronto a tempo costante. X-Client-Id, nonce legacy e firme multiple vengono rifiutati.
X-FTID-Timestamp: 1791720000Epoch in secondi. Tolleranza di ±300 s. Un timestamp futuro non estende mai la conservazione.
X-FTID-Request-Id: <uuidv7>Un uso per tentativo, riservato dopo un MAC valido. Un retry logico firma un nuovo request_id; un MAC non valido non crea alcuna prenotazione.
X-FTID-External-Event-Id: evt:tag-0003Identico byte per byte a quello nel body e nella stringa firmata.
body.idempotency_keyStessa chiave, stessa operazione: un retry identico restituisce la stessa valutazione persistita, senza ricalcolare.
body.deadline_msIl tuo budget. Superato prima della valutazione: Problem assessment-unavailable (503, retryable: true), non un punteggio parziale.
401uniforme: key_id inesistente, revocato o una firma errata producono tutti lo stesso authentication-failed.
403una credenziale autenticata senza la capability di valutazione della route.
503dipendenza dei segreti non disponibile: un latch globale rende la risposta uniforme senza rivelare se il key_id esiste. Firma un nuovo request_id.
11 · Policy versionata
Ogni decisione ha una versione. La versione congela tutto ciò che l'ha determinata.
Cambiare la sensibilità di un indicatore crea una nuova versione, con autore, periodo di validità, simulazione e rollback. Lo storico non cambia. Senza una versione reale, l'uso è bloccato.
Versione che ha deciso · esempio withdrawal_completed
correlation_id serve per il supporto senza esporre un identificatore personale. Le versioni esposte sono tag pubblici opachi; gli ID interni del database non compaiono mai nell'API, nel webhook né nella console.
Cosa congela una versione della policy
catalogo dei segnali
normalizzazione
feature
resolver del dispositivo
regole
strategia di correlazione
livelli per indicatore
limiti e soglie
Riproducibile, mai riscritto
esempio login_completed
assessment_version1
supersedes_assessment_idnull
esempio login_completed_revision_2
assessment_version2
supersedes_assessment_id…0000000101
Una revisione operativa preserva la policy e ogni altra versione in vigore al received_at dell'evento. Una nuova policy su un evento vecchio è una simulazione separata; non riscrive mai quale raccomandazione ha guidato la decisione storica.
12 · Shadow mode
Prima in parallelo. Solo dopo la risposta influisce su un'azione.
Lo shadow mode è far girare FingerTrackID accanto a ciò che usi oggi, senza che la risposta tocchi alcuna decisione. Confronti, ci rimandi i risultati reali e solo allora inizi a usare la raccomandazione. È così che consigliamo di iniziare.
Il ciclo completo
01
L'SDK raccoglie
202 PROCESSING · event_context_token
02
Il tuo backend chiede la valutazione
POST /v1/assessments · sincrona
03
Decidi con il tuo flusso
in shadow, senza usare la risposta
04
Comunichi l'azione
customer_action · POST …/customer-actions
05
Comunichi il risultato
truth_status · POST …/outcomes
recommendation_alignment · derivato sul server dalla coppia raccomandazione × azione; mai dichiarato dal client. La coincidenza non prova né causalità, né accuratezza, né frode.
Confronto, campo per campo
recommended_action
customer_action
recommendation_alignment
REVIEW
REVIEWED o HELD
ALIGNED
STEP_UP
ALLOWED
NOT_ALIGNED
ALLOW o MONITOR
ALLOWED
ALIGNED
BLOCK_RECOMMENDED
BLOCKED
ALIGNED
qualsiasi
CANCELLED
NOT_COMPARABLE
Bloccare non prova la frode. Confermare una frode richiede prove indipendenti: truth_status passa da PENDING a LEGITIMATE, FRAUD_CONFIRMED o INSUFFICIENT_EVIDENCE, con maturità PROVISIONAL o MATURE. Solo un'etichetta matura diventa una metrica di qualità.
Cosa alimenta il ciclo
Falsi positivi e falsi negativi come metriche derivate da etichette mature, non campi compilati a mano.
Ricalibrazione di regole e soglie, sempre come nuova versione della policy.
Qualità dei rilevatori misurata nel tuo shadow mode, prima che la risposta influisca su qualsiasi tua azione.
Cosa non fa: diventare enforcement automatico. customer_action e truth_status sono fatti separati, e ogni correzione crea un successore.
13 · Privacy per contratto
Delimitata dal contratto, non da un'impostazione.
I dati personali in chiaro non sono un requisito del prodotto. Invii riferimenti opachi di persona e account; non chiediamo codice fiscale, email o numero di telefono per valutare un accesso.
packages/contracts/src/sdk-handshake-v1.ts · policy di raccolta
La raccolta comportamentale, cioè movimenti del puntatore e battute di tastiera, accetta solo il valore off: attivarla richiede di cambiare il contratto, non un'impostazione. Canvas, WebGL, audio offline e presenza dei font vengono letti secondo la policy di raccolta gestita, che li attiva per ogni azienda, e lasciano il browser solo come valori derivati: hash a lunghezza fissa, una famiglia di GPU chiusa, un conteggio e una maschera di presenza su un elenco fisso di font. Il contratto non ha campi per pixel, campioni audio, nomi del produttore o del renderer della GPU, né nomi dei font. Insieme, questi valori derivati possono riconoscere di nuovo lo stesso browser, quindi sono trattati come dati del dispositivo, non come dati anonimi. Mai raccolti, come regola assoluta: password, testo digitato, contenuto di chat o documenti, appunti, screenshot, microfono, fotocamera. Ogni prova ha una classe di privacy, e la classe non è un peso di rischio.
Garanzie che non dipendono dalla buona volontà
I dati personali non entrano nei log. I dati grezzi non compaiono liberamente nella console: ogni accesso viene registrato. Un identificatore o un valore personale non va mai in un URL.
La correlazione tra tenant è disattivata. Ogni tabella di dominio porta tenant_id con isolamento forzato nel database. Non esiste reputazione né etichetta condivisa tra clienti.
Cookie first-party servito dal tuo dominio: firmato, HttpOnly, Secure, limitato al tuo tenant e alla tua applicazione. Il valore non viaggia mai verso un database, una coda o un log; se manca o viene rifiutato, la continuità degrada come limitazione e la valutazione non si ferma.
Ogni unione di dispositivi è reversibile e registra la versione del resolver che l'ha fatta. L'IP non consolida mai dispositivi da solo.
Ogni tipo di prova ha nel nostro inventario dei dati una finalità dichiarata, una classe di privacy, una regola di accesso e una conservazione. Base giuridica, residenza dei dati e DPA si definiscono con il tuo team legale in fase di contratto; nulla in questa pagina è consulenza legale.
Party non è Account
Il collegamento viene dal tuo backend · mai dedotto dal fingerprint
Una persona, più account legittimi. Un account non cambia mai persona in silenzio; la sessione avanza solo da anonima a persona e poi a un account della stessa persona. Una contraddizione è un conflitto, non una nuova associazione né una prova negativa improvvisata.
Dove vivono i dati
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
Una console per integrare, indagare e chiudere il ciclo.
La console risponde prima a "stiamo ricevendo, valutando e spiegando con qualità?" e solo dopo permette di parlare di legittimità. Ogni percentuale indica il proprio denominatore.
Schema, non uno screenshot · toni della console dentro la cornice
Dettaglio dell'accesso. Le tre misure come tre componenti separati; la raccomandazione con il suo recommendation_basis, la policy in vigore e ciò che il tuo team ha dichiarato di aver fatto; la freschezza delle prove; i 13 indicatori con stato, applicabilità, fonte, fiducia del rilevatore, freschezza e il motivo di ogni non valutato; limitazioni e reason code; sessione, dispositivo e loro associazioni; molteplicità sul dispositivo; una posizione approssimativa dalla rete; il contesto dell'accesso; e una scheda di dati tecnici con tutto ciò che SDK ed edge hanno raccolto, inclusa la versione reale del browser letta dalle API che espone, accanto alla versione che dichiara.
Filtri di indagine. L'elenco degli accessi si restringe per provider internet (ASN), paese della rete, installazione del dispositivo, motivo per cui un indicatore non è stato valutato e fino a due indicatori in stati scelti contemporaneamente, e trova un accesso tramite il tuo riferimento di account o persona. Non c'è filtro per indirizzo IP: è un dato personale. Ogni dettaglio di accesso include anche i suoi insight di contesto ↑.
Indaga a fondo. Da qualsiasi accesso, un grafo di collegamenti apre i dispositivi e gli account intorno, un salto alla volta, su un massimo di 92 giorni del tuo storico. Ogni espansione è una lettura registrata; gli indirizzi IP non diventano mai nodi.
Liste di blocco e di autorizzazione. Dal dettaglio dell'accesso, il tuo team inserisce un dispositivo, un riferimento di account o un singolo IP nella lista di blocco della tua azienda (blocco o revisione) o nella lista di autorizzazione, con una nota e il nome di chi l'ha aggiunto. Su un accesso di produzione con punteggio, una voce prevale sulla raccomandazione e si indica in reason_codes. Nulla viene cancellato: rimuovere una voce registra chi l'ha rimossa e quando.
Assistente AI. Un pannello laterale spiega ogni schermata e risponde a domande sulla tua integrazione e sui tuoi accessi, nei limiti della tua azienda e del tuo ruolo.
Configurazione del rischio. Le regole di rischio della tua azienda, per applicazione: ciascuno dei 13 indicatori è disattivato, ghost o attivo, con un peso da 1 a 100 punti, e sei tu a definire le fasce di punteggio e l'azione di ciascuna. Una regola ghost viene calcolata e registrata ma non cambia mai la risposta. Prima di pubblicare, la scheda d'impatto riproduce la tua bozza sulle valutazioni degli ultimi 1, 7 o 30 giorni. Ognuno dei 54 insight di contesto ↑ può aggiungersi con i propri punti. Il tuo amministratore o supervisore del rischio pubblica direttamente; ogni pubblicazione è una nuova versione verificata, e tutto in ghost ferma tutte le tue regole in un colpo. FingerTrackID non attiva mai una regola al posto tuo: il suo supporto può solo mettere in ghost tutte le regole di un'applicazione, con un motivo che la tua console mostra. Finché nessuna regola è attiva, risponde la policy gestita, pubblicata dal team di FingerTrackID con approvazione registrata.
Sedici schermate in quattro gruppi · principale, rilevamento, operatività, amministrazione
01Home
09Integrazione e stato
02Panoramica
10Utilizzo
03Accessi
11Esportazioni
04Coda di revisione
12Report
05Configurazione del rischio
13Utenti e accessi
06Simulazioni di policy
14Audit
07Liste
15Ciclo di vita del cliente
08Catalogo degli indicatori
16Account e sicurezza
La coda di revisione è il modulo di revisione dei prelievi: una coda operativa costruita sullo stesso nucleo, che porta a una persona ogni prelievo v1 raccomandato per REVIEW, con le prove accanto. Le valutazioni con tag non vi entrano mai, e resta vuota finché la policy raccomanda MONITOR, come fa oggi la policy gestita.
In inglese, portoghese (Brasile e Portogallo), spagnolo, francese e tedesco. Accesso con passkey o secondo fattore; permessi per ruolo; un audit trail di chi ha visto dati sensibili e di chi ha cambiato cosa. I dati grezzi non compaiono liberamente: ogni accesso viene registrato.
15 · Come addebitiamo
Una sola unità di addebito. Tutto il resto non conta.
Prezzo per volume di raccolte completate, definito nella proposta. Lo shadow mode consuma le stesse unità e compare nella console come utilizzo stimato; cosa va in fattura per quel periodo è definito nella proposta.
L'unità
Uno snapshot di device intelligence di produzione, richiesto dalla tua integrazione e completato.
È l'unità di misura e l'unità di addebito candidata. Ogni device_intelligence_snapshot_id produce al massimo un'unità, indipendentemente da quante valutazioni, tag, provider o rielaborazioni usino quella raccolta.
Punteggio, raccomandazione, azione ed esito non determinano l'addebito. Un risultato rischioso non costa di più; un risultato legittimo non costa di meno.
Un limite commerciale non diventa mai un blocco, un rate limit o un degrado automatico del servizio.
Ogni snapshot richiesto produce un record di utilizzo immutabile, anche quando non è addebitabile. Le esclusioni sono provate da quel record, non ricostruite dai log.
Evento · crea un'unità?
Applicazioni non di produzione (sviluppo, staging)no
Retry con lo stesso idempotency_keyno
Qualsiasi valutazione, su qualsiasi tag, che riusa uno snapshot recenteno
Rielaborazione, replay storico, cambio di policyno
Arricchimento asincrono e aggiornamento avviati da noino
Chiamata o retry verso un providerno
Consegna di webhookno
customer_action ed esitono
Query, dashboard, report, esportazioneno
4xx per autenticazione, autorizzazione o contratto non validono
5xx, un timeout da parte nostra, raccolta INCONCLUSIVE o FAILEDno
Snapshot di produzione, richiesto dall'integrazione, completatosì · 1
Proposta per volume, con l'utilizzo dello shadow mode sul tavolo.
Le domande che fanno un responsabile del rischio e un CTO.
Q01Come inizia l'integrazione?
In shadow mode. Installi l'SDK sul tuo sito, attivi la chiamata server-to-server e la risposta inizia a girare accanto al tuo flusso reale senza toccare alcuna decisione. Ci rimandi customer_action e l'esito, e nella console confronti, accesso per accesso, la raccomandazione con ciò che il tuo team ha dichiarato di aver fatto, e segui la copertura delle prove. Quando i numeri tornano, il tuo team decide se e dove la raccomandazione inizia a influire su una decisione, sempre eseguita dal tuo backend.
Q02Quali percorsi valutate?
Qualsiasi schermata tu scelga. Il tuo backend invia con ogni valutazione un tag tuo, uno slug minuscolo come login, withdrawal o pix_transfer: nessuna registrazione, nessun elenco chiuso e nessun limite. La console filtra, raggruppa ed esporta per tag, e i modelli (registrazione, login, recupero password, secondo fattore, modifica del profilo, deposito, prelievo, bonifico Pix, trading, checkout) sono una guida all'integrazione. Il tag non seleziona mai la policy, i rilevatori, il fallback o la scadenza: ogni valutazione con tag gira con la stessa policy e gli stessi 13 indicatori. Non deve mai contenere dati personali. La richiesta non porta importo, valuta né beneficiario.
Q03Perché non bloccate?
Perché un evento non è frode, un punteggio non è una decisione, e bloccare non prova nulla. Sei tu a conoscere l'account, il limite, lo storico e il costo dell'attrito. Noi forniamo prove, copertura e una raccomandazione spiegata. BLOCK_RECOMMENDED è la raccomandazione più forte che esista, ed è comunque una raccomandazione. Quando blocchi, registri customer_action: BLOCKED, e questo diventa un dato per misurare se la raccomandazione era giusta.
Q04VPN, Tor o una scheda privata abbassano il punteggio?
Nelle nostre policy gestite, nessuno di questi produce BLOCK_RECOMMENDED da solo; le regole configurate dalla tua azienda seguono i pesi e la soglia che ha scelto. Modalità privata e protezioni del browser sono contesto neutro: possono ridurre la copertura e compaiono nel dettaglio, senza alcun reason code avverso. Tor, proxy, VPN e hosting sono contesto di anonimizzazione: una policy può pesarli insieme a ciò che altro è stato visto, mai in base al tag. Nella policy gestita oggi solo automazione e contraffazione del browser spostano il punteggio, e la raccomandazione è MONITOR. Nell'esempio del contratto v1 sul prelievo in questa pagina, Tor rilevato ha portato a REVIEW, e il reason code lo dice. Non è mai frode di per sé.
Q05E se l'SDK non si carica, o l'utente blocca gli script?
Il percorso continua. Il tuo backend chiama l'API senza event_context_token e riceve INCONCLUSIVE, trust_score: null, evidence_coverage: 0, limitation_codes: ["COLLECTOR_NOT_LOADED"] e la raccomandazione di fallback, MONITOR. Mai un punteggio inventato. Mai ALLOW per mancanza di prove.
Q06Qual è la latenza? C'è uno SLA?
La scadenza la decidi tu. Il valore predefinito del contratto è 5000 ms, e deadline_ms lo imposta tra 250 e 5000 (con il valore predefinito tieni il timeout HTTP sopra circa 6 s); se viene superato, ricevi un Problem assessment-unavailable (503, retryable: true, con Retry-After), non una risposta parziale. Ripeti la stessa operazione logica con un nuovo request_id. Latenza e SLA entrano nella proposta, misurati nel tuo shadow mode prima che qualsiasi decisione dipenda dalla risposta.
Q07Come so che la risposta non è stata falsificata?
Non passa mai dal browser. Il tuo backend firma ogni chiamata con HMAC-SHA-256 su dieci righe canoniche, l'ultima delle quali è lo SHA-256 dei byte esatti del body; key_id UUIDv7 è l'unico locator pubblico; request_id è riservato contro il replay; un errore di autenticazione restituisce un 401 uniforme senza rivelare se la chiave esiste. Il segreto non viaggia mai. Il vettore di test normativo del protocollo fa parte del contratto; con esso riproduci la firma byte per byte.
Q08Devo inviare codice fiscale, email o numero di telefono?
No. La valutazione usa riferimenti opachi di persona e account che solo il tuo sistema risolve. I dati personali in chiaro non sono un requisito del prodotto. Il comportamento di puntatore e tastiera è disattivato nel contratto. I controlli su canvas, WebGL, audio e font girano secondo la policy di raccolta gestita di ogni azienda e lasciano il browser solo come hash, una famiglia di GPU e una maschera di presenza su un elenco fisso di font, mai come pixel, suoni, nomi di GPU o nomi di font. Password, testo digitato, appunti, screenshot, microfono e fotocamera sono vietati. Ogni tipo di prova ha una finalità dichiarata, una classe di privacy e una conservazione; la base giuridica viene esaminata con il tuo team legale prima di attivare la produzione, e nulla in questa pagina sostituisce quell'esame.
Q09Quanto costa e cosa deve fare il mio team?
Prezzo per volume di raccolte completate, in una proposta. L'unità di addebito candidata è uno snapshot completato in produzione; nulla al di fuori della produzione conta. Da parte tua: uno script sul sito, un endpoint server-to-server nel backend per chiedere la valutazione e due chiamate API per rimandare l'azione intrapresa e il risultato reale (l'esito). L'SDK è web e gira in qualsiasi browser moderno; non c'è nessuna app da installare.
Q10Cos'è la device intelligence, e in cosa differisce dal device fingerprinting?
Il device fingerprinting legge tratti stabili di un browser per riconoscerlo di nuovo. La device intelligence parte da lì e va oltre: verifica se quei tratti sono coerenti tra loro e con la rete, se sono all'opera automazione, un emulatore o un browser anti-detect, e come si comporta questo dispositivo tra i tuoi account. FingerTrackID lo restituisce come trust score, una corrispondenza del dispositivo con la propria fiducia, la copertura delle prove e 13 indicatori, ciascuno con la versione del rilevatore che lo ha letto.
Q11Possiamo definire regole, punteggi e liste nostri?
Sì. Nella console, la tua azienda assegna punti a qualsiasi dei 13 indicatori e dei 54 insight di contesto, sceglie le fasce di punteggio e la raccomandazione di ciascuna fascia, e può far girare qualsiasi regola prima in ghost, calcolata e registrata senza cambiare la risposta. Le liste di blocco e di autorizzazione accettano un dispositivo, un riferimento di account o un singolo IP, una voce alla volta, con una nota e il nome di chi l'ha aggiunta. Ogni pubblicazione è una nuova versione verificata. FingerTrackID non attiva mai una regola né aggiunge una voce di lista al posto tuo.
Q12Un agente AI di coding può fare l'integrazione?
Sì. L'SDK server @fingertrackid/server firma la chiamata, il server MCP @fingertrackid/mcp dà a Claude Code, Cursor o qualsiasi agente compatibile con MCP i contratti, i vettori di firma, un modulo server pronto per ogni tag e una verifica del tuo dominio di raccolta, tutto in sola lettura, e la documentazione pubblica llms.txt e un blocco di regole pronto per il tuo AGENTS.md. Il segreto resta nel tuo ambiente; l'agente non ha mai bisogno di vederlo.
Q13Quanto pesa l'SDK, e rallenta la pagina?
L'SDK raccoglie una volta, in parallelo, in un'unica richiesta al tuo sottodominio di raccolta. Su desktop la raccolta completa ha richiesto in mediana tra circa 80 e 125 ms in Chrome, Firefox e Safari, con un budget rigido di 250 ms; ogni controllo occupa al massimo 2 ms del thread principale, e quelli che attendono, come il timing dei frame o un Worker, attendono in parallelo. Non mostra mai una richiesta di permesso e non blocca mai la tua interfaccia.
17 · Contatti
Valuta il percorso che scegli, in shadow mode.
Inizia in shadow mode: la risposta gira accanto al tuo flusso reale senza toccare alcuna decisione, confronti, ci rimandi i risultati e solo allora inizi a usare la raccomandazione. Se hai schermate in cui la decisione conta e vuoi vedere la risposta spiegata prima di fidarti, parlaci.
Prenota una demo
Come si inizia
Una conversazione di 30 minuti sui percorsi che vuoi valutare e sul tuo flusso decisionale.
Credenziale server per la tua applicazione, contratto eseguibile e vettore HMAC. Non c'è sandbox: provi in produzione, in shadow mode.
Shadow mode con il tuo flusso reale: confronti e ci rimandi i risultati prima che la risposta influisca su qualsiasi decisione.
Produzione sulle schermate che etichetti, con policy versionata; ogni decisione resta al tuo backend.
Cosa è incluso
Console con la copertura delle prove e, accesso per accesso, la raccomandazione accanto all'azione che hai comunicato
Contratto event-assessment.v1 eseguibile, con un vettore di test HMAC
Shadow mode in produzione dal primo giorno: la risposta gira accanto al tuo flusso e non tocca mai una decisione