01 · Device intelligence voor fraudepreventie·De journeys die u tagt
Device intelligence- en fraudedetectie-API voor het webBeoordeel elke toegang.Beslis op basis van bewijs.
Eén tag per scherm dat u kiestsignuploginpassword_recoverymfa_challengeprofile_changedepositwithdrawalpix_transfertradecheckout
signup
login
password_recovery
mfa_challenge
profile_change
deposit
withdrawal
pix_transfer
trade
checkout
+ de tag die u zelf benoemt
Eén script op uw site leest de browser en het apparaat in ongeveer een tiende seconde op desktop. Eén ondertekende call vanuit uw backend, met een tag die u zelf benoemt, levert direct het antwoord: een risicoscore (trust score), bewijsdekking en 13 indicatoren, van bots en automatisering, browser-spoofing en emulators tot VPN, proxy en Tor, met de reden achter elke aanbeveling. Herken accountovername (account takeover), nepregistraties en uitbetalingsfraude op basis van bewijs, niet op gevoel. Wij adviseren. U beslist en handelt.
Synchrone response op elk scherm dat u tagt · Shadow mode voordat het een beslissing beïnvloedt · Uw regels, uw lijsten, uw keuze
Zo leest u deze response · voorbeeld v1.1/login_completed
01
Waarom deze aanbeveling
ALLOWreason_codes · NO_ADVERSE_INDICATOR_MATCH
Geen enkele indicator die de policy weegt, kwam terug als gedetecteerd. Contractvoorbeeld: de managed policy van FingerTrackID adviseert MONITOR bij elke score; ALLOW komt uit een scoreband die uw bedrijf in zijn eigen risicoregels heeft ingesteld. Besloten onder policy-login-v1.
02
Wat de score is, en wat niet
trust_score 1000–100 · hoger is beter
Vertrouwen in deze toegang onder deze policyversie, geen fraudekans. Buiten COMPLETED is het null, nooit een standaardwaarde.
03
Hoeveel er gezien kon worden
evidence_coverage 100limitation_codes · geen
Het aandeel van de verwachte controles dat is uitgevoerd. Ontbrekend bewijs zou hier worden benoemd: het verlaagt de dekking en is nooit een risicoreden.
04
Daarna is het aan u
customer_actiondaarna de uitkomst
Uw backend beslist en handelt, en meldt daarna wat hij deed en wat de echte uitkomst was. Wij blokkeren nooit en houden nooit geld vast.
POST /v1/assessments → 201
event-assessment.v1.1 · contractvoorbeeld
assessment_statusVoltooidbeoordeling voltooid
trust_score1000–100 · hoger is beter
device_match_confidence0.980–1 · sterkte van de match
evidence_coverage1000–100 · toereikendheid
ALLOWrecommendation_basis · EVALUATIONaanbeveling, geen actie
Statussen per indicator: gedetecteerd, niet gedetecteerd, niet geëvalueerd
14
Benoemde redenen voor “niet geëvalueerd”, nooit een stille false
5
Mogelijke aanbevelingen
3
Aparte maten: vertrouwen, device match, bewijsdekking
1
Ondertekende call per beoordeeld event
De collectie
17
Secties met browser- en apparaatbewijs per collectie
48
Browser-API’s getoetst aan de versie die de browser opgeeft
125
Milliseconden of minder: mediane collectie op desktop in Chrome, Firefox en Safari
0
Toestemmingsvragen die uw gebruiker te zien krijgt
Uw regels en uw onderzoek
54
Contextinzichten berekend binnen elke beoordeling
67
Regels die uw bedrijf in zijn eigen score kan laten meewegen: 13 indicatoren en 54 inzichten
6
Gepubliceerde referentielijsten achter de netwerkindicatoren
6
Talen van de console: Engels, Portugees (Brazilië en Portugal), Spaans, Frans, Duits
Nooit — en dat verandert niet per abonnement
Muisbewegingen en toetsaanslagen: de SDK verzamelt geen van beide
Pixels, audiosamples, namen van GPU-leverancier en renderer of lettertypenamen: canvas, WebGL, WebGPU, audio en lettertypen verlaten de browser alleen als hashes, een GPU-familie en een aanwezigheidsmasker over een vaste lijst lettertypen
WebRTC, lokale poorten, batterij, bewegingssensoren: worden nooit gelezen
Geen toestemmingsvraag, geen beslissing in de browser, geen actie van onze kant op uw account
— Elke waarde is een telling uit een geversioneerd contract, catalogus of lijst, behalve de collectietijd, gemeten op onze testmachines met een koude cache. Geen ervan verandert per abonnement of volume.
03 · Toepassingen
Fraudepreventie op de schermen waar de beslissing ertoe doet.
Device intelligence beantwoordt één vraag voordat uw backend de actie doorlaat: wat zit er echt aan de andere kant van dit scherm? Dezelfde call dient elke journey; de tag die u meestuurt, archiveert hem alleen.
login · password_recovery · profile_change
Preventie van accountovername
Een bekend account op een apparaat dat het nooit eerder gebruikte, een browser die over zichzelf liegt, een anti-detect browser, een reis die onmogelijk op tijd te maken is. Elk daarvan komt terug als bewijs, zodat u alleen om een tweede factor vraagt als het ertoe doet.
signup · login · checkout
Botdetectie en detectie van automatisering
Headless browsers, automatiseringsframeworks, AI-agents herkend aan hun signatuur, en verkeer uit datacenters. BOT_AUTOMATION en NETWORK_HOSTING zeggen wat er gezien is; de dekking zegt hoeveel er gezien kon worden.
signup · deposit · promotions
Nepaccounts en meerdere accounts
Accounts en personen per apparaat en per IP, hoe zeldzaam het apparaatprofiel in uw bestand is, één collectie herhaald op een ander apparaat. Context die uw regels kunnen laten meewegen, nooit een automatisch oordeel: één persoon kan meerdere legitieme accounts hebben.
withdrawal · pix_transfer · trade
Fraude bij uitbetalingen, Pix en overboekingen
Een opname binnen het eerste uur na een nieuw apparaat, begunstigden die accounts met elkaar delen, buren die u als bevestigde fraude hebt gemarkeerd. Uw backend houdt het geld vast of beoordeelt het; wij nooit.
elke journey
Emulators en gespoofte browsers
Android-emulators en virtualisatie, een GPU die onmogelijk is voor het opgegeven systeem, een browserversie die door zijn eigen API’s wordt tegengesproken. Device fingerprinting-signalen gelezen als hashes en families, nooit als ruwe pixels.
elke journey
VPN-, proxy- en Tor-detectie
Bekende VPN-aanbieders, publieke proxy’s, Tor-exits, hostingranges en Apple iCloud Private Relay, uit gepubliceerde lijsten die wij zelf actualiseren. Anonimisering is context, geen schuld: uw policy bepaalt hoe zwaar het weegt.
04 · De maten
Aparte maten. Geen gemiddelde vermomd als zekerheid.
Wie vertrouwen, dekking en device match samenvoegt tot één getal, verbergt precies wat de analist moet zien: of het probleem bij de toegang ligt of bij het bewijs.
trust_score
Vertrouwen in de toegang
72
0100 · hoger is beter
Geeft aan hoe betrouwbaar deze toegang is onder deze policyversie; de tag die u meestuurt, verandert dat niet. Geheel getal van 0 tot 100. Bestaat alleen bij assessment_status = COMPLETED; in elke andere status is het null, nooit een standaardwaarde.
Geen fraudekans, geen reputatie van de persoon en geen standaardwaarde voor ontbrekende data. Wij tonen 72/100, nooit “72% betrouwbaar”.
device_match_confidence
Device match
0.94
01 · plafond 0,98
Sterkte van het bewijs dat deze toegang van hetzelfde, al eerder geziene apparaat komt, van 0 tot 1. Komt met device_id, een ondoorzichtige publieke identifier van het probabilistische cluster.
Niet de identiteit van de persoon, en geen bewijs van hardware. Party en Account zijn verschillende dingen.
evidence_coverage
Toereikendheid van het bewijs
100
0100 · 13 van 13 geëvalueerd
Hoeveel van de verwachte set controles kon worden uitgevoerd, van 0 tot 100. Elke toepasselijke indicator die als NOT_EVALUATED achterblijft, verlaagt de dekking en verschijnt in limitation_codes.
Geen onderdeel van de score. Lage dekking trekt de score niet omlaag en duwt hem ook niet omhoog: de beoordeling blijft dan onbeslist.
Waarom we ze niet optellen
Eén enkele “verdachtheidsscore” vermengt drie verschillende vragen: verdient deze toegang vertrouwen? Was het bewijs toereikend? Is het hetzelfde apparaat? Komt het antwoord gescheiden, dan weet uw analist of hij om een tweede factor moet vragen, op de collectie moet wachten of de geschiedenis moet bekijken. Komt het samengevoegd, dan weet hij alleen dat “het 42 scoorde”.
05 · 13 indicatoren
Dertien indicatoren. Elk zegt of hij iets zag, niets zag, of niet kon evalueren.
Elke webbeoordeling geeft altijd de 13 codes terug. Wat verandert is de status van elk, nooit de lijst. Elke indicator heeft een eigen geversioneerde detector, en de response noemt de versie die hem evalueerde. Een detector die ontbreekt, verlopen is of faalt, wordt nooit false.
signal_catalog web · 13 codes · voorbeeld withdrawal_completed
Detected
Not_detected
— Not_evaluated
Integriteit van de omgeving
Browserprivacy · neutrale context
Netwerk · neutrale context
Apparaat
reason_codes · NETWORK_TOR_DETECTEDREVIEW
In onze managed policies rechtvaardigt Tor alleen nooit BLOCK_RECOMMENDED; regels die uw bedrijf configureert, volgen de gewichten en de grens die het zelf koos. In dit v1-contractvoorbeeld vroeg policy-withdrawal-v1 om een beoordeling van de opname, geen blokkade, en de enige reason code zegt precies dat. De managed policy die vandaag in productie draait, adviseert MONITOR bij elke score.
Een detector die ontbreekt, verlopen is of faalt, wordt nooit false. NOT_APPLICABLE komt alleen uit de onveranderlijke matrix van de catalogus per kanaal, engine en platform; uw tag verandert dat nooit, en een uitgeschakelde policy, een timeout of een storing nemen nooit die kortere weg.
Ze kunnen beperken wat wij waarnemen. De dekking daalt alleen waar bewijs niet geëvalueerd is. Ze zijn geen fraude. Ze beschrijven de omgeving; ze beschuldigen de persoon niet. In onze managed policies rechtvaardigen ze op zichzelf nooit BLOCK_RECOMMENDED; regels die uw bedrijf configureert, volgen de gewichten en de grens die het zelf koos. Als het type netwerk niet te onderscheiden is, zoals achter Apples iCloud Private Relay, blijven hosting, VPN en proxy alle drie NOT_EVALUATED met NETWORK_TYPE_AMBIGUOUS: we markeren nooit drie detecties op basis van één enkele boolean.
Netwerkbewijs komt uit gepubliceerde referentielijsten die wij op onze eigen infrastructuur actualiseren: Tor-exitadressen, ranges van cloudproviders, lijsten van hostingnetwerken, ranges van VPN-aanbieders en een database van publieke proxy’s. De adressen van uw gebruikers worden nooit naar de uitgevers van de lijsten gestuurd. Een lijst die zijn maximale leeftijd heeft overschreden, laat zijn indicator op NOT_EVALUATED, nooit op NOT_DETECTED.
06 · Contextinzichten
Naast de 13 indicatoren: 54 contextinzichten. Voor het onderzoek, en voor uw score als u daarvoor kiest.
Binnen elke beoordeling, vóór de response, berekenen we 54 contextinzichten uit wat er is verzameld en uit de eigen geschiedenis van uw bedrijf: wie het apparaat nog meer gebruikt, hoe snel het account beweegt, vanaf welk netwerk, naast welke accounts. De managed policy van FingerTrackID houdt ze buiten de score. In uw eigen risicoregels kan elk ervan uit, ghost of actief staan, met punten voor ongebruikelijk en zeer ongebruikelijk: een actief inzicht dat afgaat, trekt punten af van de trust score en noemt zichzelf in reason_codes.
context-insight.v1 · 54 inzichten in zes thema’s · gegroepeerd zoals in de console en in uw regels
Account en apparaat · 10
Nieuw apparaat en nieuw besturingssysteem voor het account · verschillende accounts en personen op het apparaat over 30 dagen · accounts van dezelfde persoon erop · apparaten per account en per persoon over 24 uur · apparaat met hoge activiteit · hoe gewoon, ongewoon of zeldzaam het apparaatprofiel in uw bedrijf is · apparaatcookie kwijt
Opnames en bestellingen · 7
Opnames binnen het eerste uur na een nieuw apparaat · begunstigden per apparaat en accounts per begunstigde over 30 dagen · aantal en bedrag van opnames per account · aantal bestellingen per account en het mediane interval tussen bestellingen
Netwerk en locatie · 12
Nieuw land en nieuwe internetprovider (ASN) voor het account · verschillende landen, providers en IP’s per account · accounts en personen per IP · onmogelijke reis · tijdzone van de browser die niet past bij het land van het IP · uitgangsland van de VPN · provider op een publieke misbruiklijst · Apple iCloud Private Relay
Integriteit van browser en SDK · 16
Ontwikkelaarstools open · sporen van automatisering · marker van een anti-detect browser · TLS-signatuur die niet past bij de opgegeven browser, en de stabiliteit ervan over 30 dagen · softwarerenderer en GPU-familie · canvas of audio die verandert tussen twee metingen · in-app browser · mogelijke gastmodus · AI-agent herkend aan signatuur · botcategorie · SDK die afwijkt van het goedgekeurde pakket · één SDK-sessie op meerdere apparaten · identieke collectie herhaald op een ander apparaat · apparaatcookie gebruikt op plaatsen die te ver uit elkaar liggen
Snelheid · 5
Toegangen per apparaat en per account over 5 minuten, 1 uur en 24 uur; per IP over 5 minuten en 1 uur · beoordelingen met dezelfde tag per account en per apparaat over 1 minuut, 5 minuten en 1 uur
Verbanden tussen accounts, één stap · 4
Andere accounts die dezelfde apparaten gebruikten · naburige accounts waar automatisering of browser-spoofing is gedetecteerd · naburige accounts die u als bevestigde fraude hebt gemarkeerd · begunstigden van opnames die met andere accounts worden gedeeld
Drie statussen · een reden, nooit een nul
Waargenomen · de conditie is aanwezig, of de telling of meting wijkt af van de neutrale waarde.
Niet waargenomen · geëvalueerd, en afwezig of neutraal.
Niet geëvalueerd · altijd met de reden, nooit getoond als nul.
Sommige inzichten hangen af van wat u meestuurt. Zonder account- of persoonsrefs, zonder tag of zonder uitkomsten zegt het item dat ook: account niet meegestuurd, beoordeling zonder tag, geen uitkomsten meegestuurd. Een request met tag bevat geen bedrag of begunstigde, dus de items voor opnamebedrag en begunstigde zeggen dat eveneens. Een eerste toegang, een geanonimiseerd netwerk of een IP buiten het venster van één uur van een controle zijn ook redenen.
Wat ze niet zijn
Geen van de 13 indicatoren, en nooit een limitation code. Ze bereiken reason_codes alleen via een regel die uw bedrijf actief heeft gezet.
Nooit in de score van de managed policy van FingerTrackID. Een actief inzicht zonder data trekt niets af: ontbrekend bewijs wordt nooit risico.
Geen verborgen model: elk inzicht wordt gelezen als verwacht, ongebruikelijk of zeer ongebruikelijk tegen een meetlat die uw bedrijf kan bijstellen, vanaf een gepubliceerde standaard.
Geen beschuldiging: een hoog aantal accounts of personen op één apparaat is geen bewijs van fraude, en er is geen regel “N accounts per apparaat = fraude”.
Waar de analist ze leest
Toegangsdetail. Een kaart “Toegangscontext” groepeert de inzichten per thema, met hun tijdvensters, de grens van de geschiedenis die ze meenamen, hoe ongebruikelijk elk is op uw meetlat en de reden voor elk item zonder waarde. Een inzicht dat niet binnen het tijdsbudget van de beoordeling past, wordt op de achtergrond afgerond en zegt dat; het vertraagt de response nooit en laat hem nooit mislukken.
Indicatorcatalogus. Eén pagina legt uit waar elk van de 13 indicatoren naar zoekt, wat hem niet-geëvalueerd laat en of hij de score kan bewegen, en somt de contextinzichten op met de redenen waarom ze zonder waarde kunnen blijven.
Canvas, WebGL, audio en lettertypen worden voor elk bedrijf gelezen onder de managed collectiepolicy, alleen als afgeleide waarden, en voeden een paar van deze inzichten, zoals de GPU-familie, een softwarerenderer of een weergave die verandert tussen twee metingen. Waar de browser een controle niet toestaat, blijft het item niet geëvalueerd, met de reden.
07 · Onbeslist is een resultaat
Als we niet kunnen beoordelen, zeggen we dat, en waarom.
Ontbrekend bewijs levert geen vertrouwen van 100 op, en het wordt geen fraudesignaal. Zonder score komt de aanbeveling van de fallback die in de policyversie is vastgelegd en door haar hash wordt gedekt, en is het één antwoord voor elke status zonder score, ongeacht de tag: MONITOR. Nooit ALLOW.
Gevallen zonder score uit de contractvoorbeelden
De tag kiest nooit de fallback. In de managed policy adviseert elke status zonder score, op elke tag, MONITOR: doorgaan en vastleggen. Dat doen ook de drie contractvoorbeelden hieronder.
INCONCLUSIVEtag login · SDK niet geladen
MONITOR
Geen collectie: trust_score: null, evidence_coverage: 0, COLLECTOR_NOT_LOADED, basis INSUFFICIENT_EVIDENCE. Niets wordt ooit vrijgegeven als ALLOW.
INCONCLUSIVEnetwerkbewijs niet beschikbaar
MONITOR
Vier netwerkindicatoren NOT_EVALUATED, evidence_coverage: 69, PROVIDER_UNAVAILABLE. Wat de operatie ook is, ze blijft in uw systeem, onder uw beslissing; wij houden nooit geld vast.
FAILEDtag pix_transfer · policy niet beschikbaar
MONITOR
Technische storing: POLICY_UNAVAILABLE, policy_version: null, basis TECHNICAL_FAILURE. Nooit te lezen als “geen risico”.
Zonder score adviseren we nooit ALLOW · fallback_policy_version production-observation-fallback-v2 in de voorbeelden · de fallback wordt gevalideerd met de policy, elke keer dat de policy wordt gelezen
Vier statussen van een beoordeling
Voltooid72basis EVALUATION · reason_codes verklaren de score
Onbeslistnullbasis INSUFFICIENT_EVIDENCE · limitation_codes zeggen wat er ontbrak
Niet te scorennullbasis OUT_OF_POLICY_SCOPE · geldig event, de policy dekt het niet
Een limitation code verklaart collectie en kwaliteit; een reason code verklaart de policy. Elke indicator NOT_EVALUATED verwijst naar zijn eigen code; de beoordeling bundelt ze allemaal in limitation_codes. Een collectiebeperking is nooit een risicoreden.
08 · U beslist
Vijf aanbevelingen. Nul acties door ons.
recommended_action zegt wat de policy voorstelt. customer_action zegt wat u deed. Twee velden, omdat het twee feiten zijn.
Wie adviseert, wie beslist, wie handelt
FingerTrackID adviseert
ALLOW
MONITOR
STEP_UP
REVIEW
BLOCK_RECOMMENDED
Nooit op basis van privacy alleen · Tor, VPN, proxy, incognito, gedeeld apparaat
→
Uw flow beslist
Uw backend beslist en handelt. Wij geven een aanbeveling terug; vandaag antwoordt de managed policy MONITOR, alleen observatie. Wat er met de toegang gebeurt, wordt aan uw kant besloten en uitgevoerd. U kent het account, de limiet, de geschiedenis en de kosten van frictie. Wij niet.
→
U handelt en meldt terug
ALLOWED
CHALLENGED
HELD
REVIEWED
BLOCKED
CANCELLED
customer_action · het veld dat u terugstuurt
Wij authenticeren nooit een persoon.
Wij blokkeren nooit uw interface.
Wij verplaatsen nooit geld.
Wat elke aanbeveling niet betekent
ALLOW
De policy vond geen reden voor frictie bij deze toegang. Betekent niet dat de persoon legitiem is of dat de toegang gecertificeerd is. Wordt alleen afgegeven met een score en met het vereiste bewijs geëvalueerd.
MONITOR
Ga door, maar leg het vast. Het is de fallback zonder score op elke tag, en vandaag ook het antwoord van de managed policy bij elke score. Betekent niet een bevestigd vermoeden, en vraagt geen enkele actie van de gebruiker.
STEP_UP
Vraag om een tweede factor of een bevestiging. Betekent niet dat wij iemand uitdagen: u bent degene die de challenge toont.
REVIEW
Stuur het naar menselijke beoordeling. Betekent niet dat wij geld vasthouden: de operatie blijft in uw systeem, onder uw beslissing.
BLOCK_RECOMMENDED
De policy stelt voor om te weigeren. Betekent niet een uitgevoerde blokkade, bevestigde fraude of een ban. Als u blokkeert, wordt dat customer_action: BLOCKED, een event van uzelf, en het voedt de meting van de nauwkeurigheid.
09 · Integratie
Drie stappen, één contract. De browser verzamelt; uw backend vraagt; wij antwoorden.
Eén script op uw site, één server-to-server-endpoint in uw backend en twee calls om de actie en het resultaat terug te sturen. Geen beslissing op de client.
01
SDK op uw site
De SDK verzamelt en geeft een token terug. Dat is alles.
Geserveerd vanaf een subdomein van u. Voordat u het request verstuurt dat u beoordeeld wilt hebben, op welk scherm ook, verzamelt hij browser- en omgevingssignalen en ontvangt hij 202 PROCESSING: dat bevestigt ontvangst, geen resultaat. Netwerksignalen worden door de edge op uw collectiedomein toegevoegd, nooit door het script. Geen score, signaal of beslissing gaat terug naar de 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
Uw backend roept aan
Eén ondertekende, synchrone call, binnen uw deadline.
HMAC-SHA-256 over tien canonieke regels — marker, key_id, methode, pad, timestamp, event- en request-id’s, contentmetadata, en op de laatste regel de SHA-256 van de exacte bytes van de body. Serialiseer de JSON nooit opnieuw vóór het hashen; het contract bevat de normatieve vector. key_id is de enige publieke locator. Het secret reist nooit mee. Canonieke vector requests.both_refs_deadline_750 uit het v1.1-contract: dezelfde route en dezelfde handtekening als v1, met een tag in plaats van journey, action en journey_context.
tag is een slug in kleine letters van maximaal 64 tekens (letters, cijfers en underscore, hooguit tien cijfers), nooit persoonsgegevens; deze vector zit precies op die limiet · subject_ref en account_ref mogen null zijn, en een account_ref vereist een subject_ref · refs zijn ondoorzichtige codes van u, nooit een identiteitsnummer, e-mailadres of volgnummer · deadline_ms is een geheel getal van 250 tot 5000, of null voor 5000; wordt die overschreden, dan komt er een herhaalbare 503 Problem terug, geen gedeeltelijke score
03
Synchrone response
Lees hem, beslis, stuur terug wat u deed.
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
Daarna twee feedbackcalls: customer_action met wat u deed en, zodra u het weet, truth_status met het echte resultaat (de uitkomst: legitiem, bevestigde fraude of onvoldoende bewijs). Het contract houdt beide aan dezelfde discipline als de beoordelingscall: niets telt als geaccepteerd vóór een duurzame commit, en een identieke retry voegt geen tweede effect toe. Een uitkomst kan later worden gecorrigeerd — de correctie wordt als opvolger toegevoegd, en het eerdere record blijft leesbaar.
POST /v1/assessments/{assessment_id}/customer-actions POST /v1/assessments/{assessment_id}/outcomes
Web, in elke moderne browser · geen app te installeren · SDK, beoordeling en feedback in hetzelfde geversioneerde contract
npm install @fingertrackid/server ondertekent de call voor u, en met @fingertrackid/mcp kunnen Claude Code, Cursor of elke coding agent die MCP ondersteunt de integratie opzetten vanuit het gepubliceerde contract. Stap voor stap in de quickstart, de Web SDK-gids en de API-referentie.
10 · Zero trust in de browser
De browser verzamelt alleen. Beslissing en identifier gaan er nooit doorheen.
Niets wat uit de browser komt, wordt als autoriteit behandeld. De beoordeling is server-to-server, ondertekend, en elke poging telt één keer: herhalen veroorzaakt geen nieuw effect.
Wie met wie praat
De browser ontvangt alleen ondoorzichtige sessie- en event-id’s. Score, signalen en aanbeveling ontstaan op de server en blijven daar. De first-party cookie is ondertekend, HttpOnly, Secure en beperkt tot uw tenant en applicatie.
Anatomie van de call
POST /v1/assessmentssecurity ftidHmacV1 uit het contract
X-FTID-Signature: v1=<key_id>:<mac-hex>key_id UUIDv7 is de enige locator; tenant, applicatie, omgeving en capabilities worden pas autoriteit na een geldige MAC in een vergelijking met constante tijd. X-Client-Id, legacy nonce en meerdere handtekeningen worden geweigerd.
X-FTID-Timestamp: 1791720000Epoch in seconden. Tolerantie van ±300 s. Een timestamp in de toekomst verlengt de bewaartermijn nooit.
X-FTID-Request-Id: <uuidv7>Eén gebruik per poging, gereserveerd na een geldige MAC. Een logische retry ondertekent een nieuwe request_id; een ongeldige MAC maakt geen reservering.
X-FTID-External-Event-Id: evt:tag-0003Byte voor byte identiek aan die in de body en in de ondertekende string.
body.idempotency_keyZelfde sleutel, zelfde operatie: een identieke retry geeft dezelfde opgeslagen beoordeling terug, zonder opnieuw te rekenen.
body.deadline_msUw budget. Overschreden vóór de beoordeling: Problem assessment-unavailable (503, retryable: true), geen gedeeltelijke score.
401uniform: een key_id die niet bestaat, is ingetrokken of een verkeerde handtekening leveren allemaal dezelfde authentication-failed op.
403een geauthenticeerde credential zonder de beoordelingscapability van de route.
503secret-afhankelijkheid niet beschikbaar: een globale latch maakt de response uniform zonder te verraden of de key_id bestaat. Onderteken een nieuwe request_id.
11 · Geversioneerde policy
Elke beslissing heeft een versie. De versie bevriest alles wat haar bepaalde.
De gevoeligheid van één indicator wijzigen maakt een nieuwe versie aan, met auteur, geldigheidsperiode, simulatie en rollback. De geschiedenis verandert niet. Ontbreekt een echte versie, dan wordt gebruik geblokkeerd.
Versie die besliste · voorbeeld withdrawal_completed
correlation_id is er voor support zonder een persoonlijke identifier bloot te geven. De zichtbare versies zijn ondoorzichtige publieke tags; interne database-id’s verschijnen nooit in de API, in de webhook of in de console.
Wat een policyversie bevriest
signaalcatalogus
normalisatie
features
device resolver
regels
correlatiestrategie
niveaus per indicator
plafonds en drempels
Reproduceerbaar, nooit herschreven
voorbeeld login_completed
assessment_version1
supersedes_assessment_idnull
voorbeeld login_completed_revision_2
assessment_version2
supersedes_assessment_id…0000000101
Een operationele revisie behoudt de policy en elke andere versie die gold op het received_at van het event. Een nieuwe policy over een oud event is een aparte simulatie; die herschrijft nooit welke aanbeveling de historische beslissing stuurde.
12 · Shadow mode
Eerst parallel. Pas daarna beïnvloedt de response een actie.
Shadow mode betekent FingerTrackID naast uw huidige oplossing laten draaien, zonder dat de response enige beslissing raakt. U vergelijkt, stuurt de echte resultaten terug en begint pas daarna de aanbeveling te gebruiken. Zo raden wij aan te beginnen.
De volledige cyclus
01
De SDK verzamelt
202 PROCESSING · event_context_token
02
Uw backend vraagt de beoordeling aan
POST /v1/assessments · synchroon
03
U beslist via uw flow
in shadow, zonder de response te gebruiken
04
U meldt de actie
customer_action · POST …/customer-actions
05
U meldt het resultaat
truth_status · POST …/outcomes
recommendation_alignment · op de server afgeleid uit het paar aanbeveling × actie; nooit door de client opgegeven. Overeenkomst bewijst geen causaliteit, geen nauwkeurigheid en geen fraude.
Vergelijking, veld voor veld
recommended_action
customer_action
recommendation_alignment
REVIEW
REVIEWED of HELD
ALIGNED
STEP_UP
ALLOWED
NOT_ALIGNED
ALLOW of MONITOR
ALLOWED
ALIGNED
BLOCK_RECOMMENDED
BLOCKED
ALIGNED
elke
CANCELLED
NOT_COMPARABLE
Blokkeren bewijst geen fraude. Fraude bevestigen vereist onafhankelijk bewijs: truth_status gaat van PENDING naar LEGITIMATE, FRAUD_CONFIRMED of INSUFFICIENT_EVIDENCE, met maturiteit PROVISIONAL of MATURE. Alleen een volwassen label wordt een kwaliteitsmetriek.
Wat de cyclus voedt
Fout-positief en fout-negatief als metrieken afgeleid uit volwassen labels, geen ingetypte velden.
Herkalibratie van regels en drempels, altijd als een nieuwe policyversie.
Kwaliteit van de detectoren gemeten in uw shadow mode, voordat de response een actie van u beïnvloedt.
Wat het niet doet: automatische handhaving worden. customer_action en truth_status zijn aparte feiten, en elke correctie maakt een opvolger aan.
13 · Privacy per contract
Begrensd door het contract, niet door een instelling.
PII in leesbare vorm is geen productvereiste. U stuurt ondoorzichtige persoons- en accountrefs; wij vragen geen identiteitsnummer, e-mailadres of telefoonnummer om een toegang te beoordelen.
Gedragscollectie, dat wil zeggen muisbewegingen en toetsaanslagen, accepteert alleen de waarde uit: aanzetten vereist een wijziging van het contract, geen instelling. Canvas, WebGL, offline audio en de aanwezigheid van lettertypen worden gelezen onder de managed collectiepolicy, die ze voor elk bedrijf aanzet, en ze verlaten de browser alleen als afgeleide waarden: hashes met een vaste lengte, een gesloten GPU-familie, een telling en een aanwezigheidsmasker over een vaste lijst lettertypen. Het contract heeft geen veld voor pixels, audiosamples, namen van GPU-leverancier of renderer, of lettertypenamen. Samen kunnen deze afgeleide waarden dezelfde browser opnieuw herkennen, dus worden ze behandeld als apparaatgegevens, niet als anonieme gegevens. Als absolute regel nooit verzameld: wachtwoord, getypte tekst, inhoud van chats of documenten, klembord, schermafbeelding, microfoon, camera. Elk stuk bewijs heeft een privacyklasse, en klasse is geen risicogewicht.
Garanties die niet van goede wil afhangen
PII komt niet in logs. Ruwe data verschijnt niet vrij in de console: elke toegang ertoe wordt vastgelegd. Een identifier of persoonlijke waarde gaat nooit in een URL.
Correlatie tussen tenants staat uit. Elke domeintabel draagt tenant_id met isolatie die in de database wordt afgedwongen. Er is geen reputatie of label dat tussen klanten wordt gedeeld.
First-party cookie geserveerd vanaf uw domein: ondertekend, HttpOnly, Secure, beperkt tot uw tenant en applicatie. De waarde reist nooit naar een database, queue of log; ontbreekt hij of wordt hij geweigerd, dan degradeert de continuïteit als beperking en stopt de beoordeling niet.
Elke samenvoeging van apparaten is omkeerbaar en legt de versie vast van de resolver die haar maakte. IP voegt nooit op zichzelf apparaten samen.
Elk soort bewijs heeft in onze data-inventaris een opgegeven doel, privacyklasse, toegangsregel en bewaartermijn. Rechtsgrond, dataresidentie en de verwerkersovereenkomst worden bij het contracteren met uw juridische team afgehandeld; niets op deze pagina is juridisch advies.
Party is geen Account
De koppeling komt van uw backend · nooit afgeleid uit een fingerprint
Eén persoon, meerdere legitieme accounts. Een account wisselt nooit stilzwijgend van persoon; de sessie gaat alleen van anoniem naar persoon en daarna naar een account van dezelfde persoon. Een tegenstrijdigheid is een conflict, geen nieuwe koppeling en geen geïmproviseerd negatief bewijs.
Waar de data staat
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
Een console om te integreren, te onderzoeken en de cirkel te sluiten.
De console beantwoordt eerst “ontvangen, beoordelen en verklaren we met kwaliteit?”, en laat pas daarna iemand over legitimiteit praten. Elk percentage noemt zijn noemer.
Schematisch, geen screenshot · consoletinten binnen het kader
Toegangsdetail. De drie maten als drie aparte componenten; de aanbeveling met haar recommendation_basis, de geldende policy en wat uw team meldde te hebben gedaan; actualiteit van het bewijs; de 13 indicatoren met status, toepasselijkheid, bron, detectorvertrouwen, actualiteit en de reden voor elke niet-geëvalueerde; beperkingen en reason codes; sessie, apparaat en hun koppelingen; multipliciteit op het apparaat; een globale locatie op basis van het netwerk; de toegangscontext; en een tabblad met technische data met alles wat de SDK en de edge verzamelden, inclusief de echte browserversie, gelezen uit de API’s die hij blootgeeft, naast de versie die hij opgeeft.
Onderzoeksfilters. De lijst met toegangen filtert op internetprovider (ASN), land van het netwerk, apparaatinstallatie, de reden waarom een indicator niet geëvalueerd is, en op maximaal twee indicatoren tegelijk in gekozen statussen, en vindt een toegang via uw eigen account- of persoonsref. Er is geen filter op IP-adres: dat is een persoonsgegeven. Elk toegangsdetail bevat ook de contextinzichten ↑.
Diepgaand onderzoeken. Vanuit elke toegang opent een koppelingsgraaf de apparaten en accounts eromheen, stap voor stap, over maximaal 92 dagen van uw eigen geschiedenis. Elke uitbreiding is een vastgelegde leesactie; IP-adressen worden nooit knooppunten.
Block- en allowlists. Vanuit het toegangsdetail zet uw team een apparaat, een accountref of één IP op de blocklist (blokkeren of beoordelen) of de allowlist van uw bedrijf, met een notitie en de naam van wie het toevoegde. Bij een gescoorde productietoegang overschrijft een vermelding de aanbeveling en noemt zichzelf in reason_codes. Er wordt niets verwijderd: bij het weghalen van een vermelding wordt vastgelegd wie dat deed en wanneer.
AI-assistent. Een zijpaneel legt elk scherm uit en beantwoordt vragen over uw eigen integratie en toegangen, binnen uw bedrijf en uw rol.
Risicoconfiguratie. De eigen risicoregels van uw bedrijf, per applicatie: elk van de 13 indicatoren staat uit, ghost of actief, met een gewicht van 1 tot 100 punten, en u stelt de scorebanden en de actie per band in. Een ghost-regel wordt berekend en vastgelegd, maar verandert de response nooit. Vóór publicatie speelt de impactkaart uw concept opnieuw af over de beoordelingen van de laatste 1, 7 of 30 dagen. Elk van de 54 contextinzichten ↑ kan meedoen met eigen punten. Uw beheerder of risicosupervisor publiceert direct; elke publicatie is een nieuwe geauditeerde versie, en alles naar ghost zet al uw regels in één keer stil. FingerTrackID activeert nooit een regel voor u: de support kan alleen alle regels van een applicatie in ghost zetten, met een reden die uw console toont. Zolang er geen regel actief is, antwoordt de managed policy, gepubliceerd door het FingerTrackID-team met vastgelegde goedkeuring.
Zestien schermen in vier groepen · hoofd, detectie, operatie, beheer
01Home
09Integratie en status
02Overzicht
10Gebruik
03Toegangen
11Exports
04Beoordelingswachtrij
12Rapporten
05Risicoconfiguratie
13Gebruikers en toegang
06Policysimulaties
14Audit
07Lijsten
15Klantlevenscyclus
08Indicatorcatalogus
16Account en beveiliging
De beoordelingswachtrij is de module voor beoordeling van opnames: een operationele wachtrij op dezelfde kern, die elke v1-opname waarvoor REVIEW wordt geadviseerd met het bewijs ernaast bij een mens brengt. Beoordelingen met een tag komen er nooit in, en hij blijft leeg zolang de policy MONITOR adviseert, zoals de managed policy vandaag doet.
In het Engels, Portugees (Brazilië en Portugal), Spaans, Frans en Duits. Inloggen met passkey of tweede factor; rechten per rol; een audittrail van wie gevoelige data zag en wie wat wijzigde. Ruwe data verschijnt niet vrij: elke toegang ertoe wordt vastgelegd.
15 · Hoe we factureren
Eén factureringseenheid. Al het andere telt niet.
Prijs op basis van het volume voltooide collecties, vastgelegd in het voorstel. Shadow mode verbruikt dezelfde eenheden en verschijnt in de console als geschat gebruik; wat voor die periode op de factuur komt, staat in het voorstel.
De eenheid
Eén device intelligence-snapshot in productie, aangevraagd door uw integratie en voltooid.
Het is de meeteenheid en de beoogde factureringseenheid. Elke device_intelligence_snapshot_id levert hoogstens één eenheid op, hoeveel beoordelingen, tags, providers of herverwerkingen die collectie ook gebruiken.
Score, aanbeveling, actie en uitkomst bepalen de facturering niet. Een riskant resultaat kost niet meer; een legitiem resultaat kost niet minder.
Een commerciële limiet wordt nooit een blokkade, een rate limit of een automatische degradatie van de dienst.
Elke aangevraagde snapshot levert een onveranderlijk gebruiksrecord op, ook als hij niet factureerbaar is. Uitzonderingen worden door dat record bewezen, niet uit logs gereconstrueerd.
De vragen die een head of risk en een CTO stellen.
Q01Hoe begint de integratie?
In shadow mode. U installeert de SDK op uw site, zet de server-to-server-call aan, en de response gaat naast uw echte flow draaien zonder enige beslissing te raken. U stuurt customer_action en de uitkomst terug, en in de console vergelijkt u, toegang voor toegang, de aanbeveling met wat uw team meldde te hebben gedaan, en volgt u de bewijsdekking. Als de cijfers kloppen, beslist uw team of en waar de aanbeveling een beslissing gaat beïnvloeden, altijd uitgevoerd door uw backend.
Q02Welke journeys beoordelen jullie?
Elk scherm dat u kiest. Uw backend stuurt bij elke beoordeling een eigen tag mee, een slug in kleine letters zoals login, withdrawal of pix_transfer: geen registratie, geen gesloten lijst en geen limiet. De console filtert, groepeert en exporteert per tag, en de templates (registratie, login, wachtwoordherstel, tweede factor, profielwijziging, storting, opname, Pix-overboeking, trade, checkout) zijn een integratiegids. De tag kiest nooit de policy, de detectoren, de fallback of de deadline: elke beoordeling met tag draait onder dezelfde policy en dezelfde 13 indicatoren. Hij mag nooit persoonsgegevens bevatten. Het request bevat geen bedrag, valuta of begunstigde.
Q03Waarom blokkeren jullie niet?
Omdat een event geen fraude is, een score geen beslissing, en blokkeren niets bewijst. U bent degene die het account, de limiet, de geschiedenis en de kosten van frictie kent. Wij leveren bewijs, dekking en een onderbouwde aanbeveling. BLOCK_RECOMMENDED is de sterkste aanbeveling die er is, en het blijft een aanbeveling. Als u blokkeert, legt u customer_action: BLOCKED vast, en dat wordt data om te meten of de aanbeveling klopte.
Q04Trekken VPN, Tor of een privétabblad de score omlaag?
In onze managed policies levert geen van deze op zichzelf BLOCK_RECOMMENDED op; regels die uw bedrijf configureert, volgen de gewichten en de grens die het zelf koos. Privémodus en browserbescherming zijn neutrale context: ze kunnen de dekking verlagen en verschijnen in het detail, zonder ongunstige reason code. Tor, proxy, VPN en hosting zijn context van anonimisering: een policy kan ze laten meewegen met wat er verder is gezien, nooit per tag. In de managed policy bewegen vandaag alleen automatisering en browser-spoofing de score, en de aanbeveling is MONITOR. In het v1-contractvoorbeeld voor opnames op deze pagina leidde gedetecteerde Tor tot REVIEW, en de reason code zegt dat. Het is op zichzelf nooit fraude.
Q05Wat als de SDK niet laadt, of de gebruiker scripts blokkeert?
De journey gaat door. Uw backend roept de API aan zonder event_context_token en ontvangt INCONCLUSIVE, trust_score: null, evidence_coverage: 0, limitation_codes: ["COLLECTOR_NOT_LOADED"] en de fallback-aanbeveling, MONITOR. Nooit een verzonnen score. Nooit ALLOW bij gebrek aan bewijs.
Q06Wat is de latency? Is er een SLA?
De deadline bepaalt u. De standaard in het contract is 5000 ms, en deadline_ms zet hem ergens tussen 250 en 5000 (houd uw HTTP-timeout boven ongeveer 6 s voor de standaard); wordt hij overschreden, dan krijgt u een Problem assessment-unavailable (503, retryable: true, met Retry-After), geen gedeeltelijke response. Herhaal dezelfde logische operatie met een nieuwe request_id. Latency en SLA komen in het voorstel, gemeten in uw shadow mode voordat enige beslissing van de response afhangt.
Q07Hoe weet ik dat de response niet vervalst is?
Hij gaat nooit door de browser. Uw backend ondertekent elke call met HMAC-SHA-256 over tien canonieke regels, waarvan de laatste de SHA-256 is van de exacte bytes van de body; key_id UUIDv7 is de enige publieke locator; request_id wordt gereserveerd tegen replay; een mislukte authenticatie geeft een uniforme 401 terug zonder te verraden of de sleutel bestaat. Het secret reist nooit mee. De normatieve testvector van het protocol is onderdeel van het contract; daarmee reproduceert u de handtekening byte voor byte.
Q08Moet ik een identiteitsnummer, e-mailadres of telefoonnummer meesturen?
Nee. De beoordeling gebruikt ondoorzichtige persoons- en accountrefs die alleen uw systeem kan herleiden. PII in leesbare vorm is geen productvereiste. Gedrag van muis en toetsenbord staat in het contract uit. Controles op canvas, WebGL, audio en lettertypen draaien voor elk bedrijf onder de managed collectiepolicy en verlaten de browser alleen als hashes, een GPU-familie en een aanwezigheidsmasker over een vaste lijst lettertypen, nooit als pixels, geluid, GPU-namen of lettertypenamen. Wachtwoord, getypte tekst, klembord, schermafbeelding, microfoon en camera zijn verboden. Elk soort bewijs heeft een opgegeven doel, privacyklasse en bewaartermijn; de rechtsgrond wordt met uw juridische team beoordeeld voordat productie wordt aangezet, en niets op deze pagina vervangt die beoordeling.
Q09Wat kost het en wat moet mijn team doen?
Prijs op basis van het volume voltooide collecties, in een voorstel. De beoogde factureringseenheid is een in productie voltooide snapshot; niets buiten productie telt. Aan uw kant: één script op de site, één server-to-server-endpoint in de backend om de beoordeling aan te vragen, en twee API-calls om de genomen actie en het echte resultaat (de uitkomst) terug te sturen. De SDK is web en draait in elke moderne browser; er is geen app te installeren.
Q10Wat is device intelligence, en wat is het verschil met device fingerprinting?
Device fingerprinting leest stabiele kenmerken van een browser om hem opnieuw te herkennen. Device intelligence begint daar en gaat verder: het controleert of die kenmerken met elkaar en met het netwerk kloppen, of er automatisering, een emulator of een anti-detect browser in het spel is, en hoe dit apparaat zich gedraagt over uw accounts heen. FingerTrackID levert het als een trust score, een device match met een eigen vertrouwen, bewijsdekking en 13 indicatoren, elk met de versie van de detector die hem las.
Q11Kunnen we eigen regels, scores en lijsten instellen?
Ja. In de console kent uw bedrijf punten toe aan elk van de 13 indicatoren en 54 contextinzichten, kiest het de scorebanden en de aanbeveling per band, en kan het elke regel eerst als ghost draaien: berekend en vastgelegd zonder de response te veranderen. Block- en allowlists nemen een apparaat, een accountref of één IP op, één vermelding tegelijk, met een notitie en de naam van wie het toevoegde. Elke publicatie is een nieuwe geauditeerde versie. FingerTrackID activeert nooit een regel en voegt nooit een lijstvermelding voor u toe.
Q12Kan een AI coding agent de integratie doen?
Ja. De server-SDK @fingertrackid/server ondertekent de call, de MCP-server @fingertrackid/mcp geeft Claude Code, Cursor of elke agent die MCP ondersteunt de contracten, de handtekeningvectoren, een kant-en-klare servermodule per tag en een controle van uw collectiedomein, allemaal alleen-lezen, en de documentatie publiceert llms.txt en een kant-en-klaar regelblok voor uw AGENTS.md. Het secret blijft in uw omgeving; de agent hoeft het nooit te zien.
Q13Hoe zwaar is de SDK, en maakt hij de pagina trager?
De SDK verzamelt één keer, parallel, in één request naar uw eigen collectiesubdomein. Op desktop duurde de volledige collectie mediaan tussen ongeveer 80 en 125 ms in Chrome, Firefox en Safari, binnen een hard budget van 250 ms; elke controle neemt hooguit 2 ms van de main thread, en de controles die wachten, zoals frametiming of een Worker, wachten parallel. Hij toont nooit een toestemmingsvraag en blokkeert nooit uw interface.
17 · Contact
Beoordeel de journey die u kiest, in shadow mode.
Begin in shadow mode: de response draait naast uw echte flow zonder enige beslissing te raken, u vergelijkt, u stuurt de resultaten terug, en pas daarna begint u de aanbeveling te gebruiken. Hebt u schermen waar de beslissing ertoe doet en wilt u de response onderbouwd zien voordat u erop vertrouwt, neem dan contact met ons op.
Plan een demo
Hoe het begint
Een gesprek van 30 minuten over de journeys die u wilt beoordelen en uw beslisflow.
Servercredential voor uw applicatie, uitvoerbaar contract en HMAC-vector. Er is geen sandbox: u test in productie, in shadow mode.
Shadow mode met uw echte flow: u vergelijkt en stuurt resultaten terug voordat de response een beslissing beïnvloedt.
Productie op de schermen die u tagt, met geversioneerde policy; elke beslissing blijft bij uw backend.
Wat u erbij krijgt
Console met bewijsdekking en, toegang voor toegang, de aanbeveling naast de actie die u meldde
Uitvoerbaar event-assessment.v1-contract, met een HMAC-testvector
Shadow mode in productie vanaf dag één: de response draait naast uw flow en raakt nooit een beslissing
Direct contact met de mensen die de policy schrijven