01 · Device intelligence för bedrägeribekämpning Flödena du taggar

API för device intelligence och bedrägeririsk på webben Bedöm varje åtkomst. Besluta med evidens.

En tagg per skärm du väljer

Ett skript på din webbplats läser webbläsaren och enheten på ungefär en tiondels sekund på dator. Ett signerat anrop från din backend, med en tagg du namnger, ger svaret direkt: en riskpoäng i form av ett förtroendevärde, evidenstäckning och 13 indikatorer, från bottar och automatisering, förfalskade webbläsare och emulatorer till VPN, proxy och Tor, med skälet bakom varje rekommendation. Upptäck kontokapning, falska registreringar och utbetalningsbedrägerier med evidens, inte gissningar. Vi rekommenderar. Du beslutar och agerar.

Synkront svar på varje skärm du taggar · Skuggläge innan det påverkar något beslut · Dina regler, dina listor, ditt beslut

Så läser du svaret · exempel v1.1/login_completed

  1. Varför den här rekommendationen

    ALLOWreason_codes · NO_ADVERSE_INDICATOR_MATCH

    Ingen indikator som policyn väger in kom tillbaka som detekterad. Kontraktsexempel: FingerTrackIDs förvaltade policy rekommenderar MONITOR vid varje poäng; ALLOW kommer från ett poängintervall som ditt företag satt i sina egna riskregler. Beslutat under policy-login-v1.

  2. Vad poängen är, och inte är

    trust_score 1000–100 · högre är bättre

    Förtroende för den här åtkomsten under den här policyversionen, inte en sannolikhet för bedrägeri. Utanför COMPLETED är den null, aldrig ett standardvärde.

  3. Hur mycket som kunde ses

    evidence_coverage 100limitation_codes · inga

    Andelen av de förväntade kontrollerna som kördes. Saknad evidens skulle namnges här: den sänker täckningen och är aldrig ett riskskäl.

  4. Sedan är det ditt

    customer_actionsedan utfallet

    Din backend beslutar och agerar, och rapporterar sedan vad den gjorde och det verkliga resultatet. Vi blockerar aldrig och håller aldrig inne pengar.

POST /v1/assessments → 201

event-assessment.v1.1 · kontraktsexempel

assessment_statusCompletedbedömning slutförd
trust_score1000–100 · högre är bättre
device_match_confidence0.980–1 · matchningens styrka
evidence_coverage1000–100 · tillräcklighet
ALLOWrecommendation_basis · EVALUATIONrekommendation, inte åtgärd
reason_codes NO_ADVERSE_INDICATOR_MATCH  ·  limitation_codes none
{  "schema_version": "event-assessment.v1.1",  "tag": "login",  "assessment_status": "COMPLETED",  "trust_score": 100,  "device_match_confidence": 0.98,  "evidence_coverage": 100,  "signals": [ … 13 objects ],  "limitation_codes": [],  "reason_codes": ["NO_ADVERSE_INDICATOR_MATCH"],  "recommended_action": "ALLOW",  "recommendation_basis": "EVALUATION",  "policy_version": "policy-login-v1"  // … 21 more fields in the full response: ids, snapshot, versions, timestamps}
Fullständigt svar · 54 rader · 13 signaler, ej detekterade hopfällda
1{2  "schema_version": "event-assessment.v1.1",3  "assessment_id": "01996f2a-0000-7000-8000-000000000101",4  "assessment_version": 1,5  "supersedes_assessment_id": null,6  "business_event_id": "01996f2a-0000-7000-8000-000000000102",7  "external_event_id": "login_20260904_000001",8  "tag": "login",9  "assessment_status": "COMPLETED",10  "retryable": false,11  "trust_score": 100,12  "device_intelligence_snapshot_id": "01996f2a-0000-7000-8000-000000000103",13  "device_intelligence_snapshot_version": 1,14  "device_id": "dev_0123456789abcdefghij",15  "device_match_confidence": 0.98,16  "evidence_coverage": 100,17  "data_freshness": {18    "evidence_cutoff_at": "2026-09-04T12:00:00Z",19    "oldest_required_observed_at": "2026-09-04T11:59:59Z",20    "maximum_required_age_ms": 300000,21    "all_required_fresh": true22  },23  "signals": [24    { "signal_code": "ANTI_FINGERPRINTING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },25    { "signal_code": "BOT_AUTOMATION", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },26    { "signal_code": "BROWSER_SPOOFING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },27    { "signal_code": "EMULATED_ENVIRONMENT", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },28    { "signal_code": "PRIVATE_BROWSING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },29    { "signal_code": "BROWSER_PRIVACY_BRAVE", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },30    { "signal_code": "BROWSER_PRIVACY_SAFARI", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },31    { "signal_code": "BROWSER_PRIVACY_SAMSUNG_INTERNET", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },32    { "signal_code": "NETWORK_PROXY", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },33    { "signal_code": "NETWORK_VPN", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },34    { "signal_code": "NETWORK_HOSTING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },35    { "signal_code": "NETWORK_TOR", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },36    { "signal_code": "DEVICE_MULTI_USER", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … }37  ],38  "limitation_codes": [],39  "reason_codes": ["NO_ADVERSE_INDICATOR_MATCH"],40  "recommended_action": "ALLOW",41  "recommendation_basis": "EVALUATION",42  "policy_version": "policy-login-v1",43  "fallback_policy_version": "production-observation-fallback-v2",44  "ruleset_version": "ruleset-web-v1",45  "signal_catalog_version": "signals-web-v1",46  "feature_schema_version": "features-v1",47  "resolver_version": "resolver-v1",48  "sdk_version": "web-sdk-1.0.0",49  "provider_versions": ["network-provider-2026-09-04"],50  "evidence_cutoff_at": "2026-09-04T12:00:00Z",51  "evaluated_at": "2026-09-04T12:00:01Z",52  "expires_at": "2026-09-04T12:05:00Z",53  "correlation_id": "corr-assessment-login-0001"54}

Versioner som formade det · policy-login-v1 · production-observation-fallback-v2 · ruleset-web-v1 · signals-web-v1 · features-v1 · resolver-v1 · web-sdk-1.0.0 · network-provider-2026-09-04

13 signaler i det fullständiga svaret · indikatormatris ↓

Produkten i siffror

Svaret

13

Webbindikatorer i varje svar

3

Tillstånd per indikator: detekterad, ej detekterad, ej utvärderad

14

Namngivna skäl till "ej utvärderad", aldrig ett tyst false

5

Möjliga rekommendationer

3

Separata mått: förtroende, enhetsmatchning, evidenstäckning

1

Signerat anrop per bedömd händelse

Insamlingen

17

Avsnitt med webbläsar- och enhetsevidens per insamling

48

Webbläsar-API:er kontrollerade mot den version webbläsaren uppger

125

Millisekunder eller mindre: median för insamling på dator i Chrome, Firefox och Safari

0

Behörighetsdialoger som visas för din användare

Dina regler och din utredning

54

Kontextinsikter som beräknas i varje bedömning

67

Regler ditt företag kan väga in i sin egen poäng: 13 indikatorer och 54 insikter

6

Publicerade referenslistor bakom nätverksindikatorerna

6

Konsolens språk: engelska, portugisiska (Brasilien och Portugal), spanska, franska, tyska

Aldrig — och det ändras inte med abonnemang

  • Pekarrörelser och tangenttryckningar: SDK:t samlar in ingetdera
  • Pixlar, ljudsampel, namn på GPU-tillverkare och renderare eller typsnittsnamn: canvas, WebGL, WebGPU, ljud och typsnitt lämnar webbläsaren endast som hashvärden, en GPU-familj och en närvaromask över en fast typsnittslista
  • WebRTC, lokala portar, batteri, rörelsesensorer: läses aldrig
  • Ingen behörighetsdialog, inget beslut fattat i webbläsaren, ingen åtgärd vidtagen av oss på ditt konto

— Varje värde är ett antal ur ett versionerat kontrakt, en katalog eller en lista, utom insamlingstiden, uppmätt på våra testmaskiner med kall cache. Inget av dem ändras med abonnemang eller volym.

03 · Användningsfall

Bedrägeribekämpning på de skärmar där beslutet spelar roll.

Device intelligence besvarar en fråga innan din backend släpper igenom åtgärden: vad finns egentligen på andra sidan den här skärmen? Samma anrop tjänar varje flöde; taggen du skickar sorterar det bara.

login · password_recovery · profile_change

Skydd mot kontokapning (account takeover)

Ett känt konto på en enhet det aldrig har använt, en webbläsare som ljuger om sig själv, en anti-detect-webbläsare, en resa som inte hinns med i tid. Allt kommer tillbaka som evidens, så att du bara ber om en andra faktor när det spelar roll.

signup · login · checkout

Botdetektering och automatisering

Headless-webbläsare, automatiseringsramverk, AI-agenter identifierade via signatur och trafik från datacenter. BOT_AUTOMATION och NETWORK_HOSTING säger vad som sågs; täckningen säger hur mycket som kunde ses.

signup · deposit · promotions

Falska konton och flera konton

Konton och personer per enhet och per IP, hur sällsynt enhetsprofilen är i din bas, en insamling som upprepas på en annan enhet. Kontext dina regler kan väga in, aldrig en automatisk dom: en person kan ha flera legitima konton.

withdrawal · pix_transfer · trade

Bedrägerier vid utbetalning, Pix och överföring

Ett uttag inom den första timmen efter en ny enhet, mottagare som delas mellan konton, grannar du markerat som bekräftat bedrägeri. Din backend håller inne eller granskar pengarna; det gör aldrig vi.

valfritt flöde

Emulatorer och förfalskade webbläsare

Android-emulatorer och virtualisering, en GPU som är omöjlig för det uppgivna systemet, en webbläsarversion som dess egna API:er motsäger. Signaler från device fingerprinting läses som hashvärden och familjer, aldrig som råa pixlar.

valfritt flöde

Detektering av VPN, proxy och Tor

Kända VPN-leverantörer, publika proxyer, Tor-utgångar, hostingintervall och Apple iCloud Private Relay, från publicerade listor som uppdateras på vår sida. Anonymisering är kontext, inte skuld: din policy avgör hur mycket den väger.

04 · Måtten

Separata mått. Inget medelvärde förklätt till säkerhet.

Att slå ihop förtroende, täckning och enhetsmatchning till ett enda tal döljer exakt det analytikern behöver se: om problemet är åtkomsten eller evidensen.

trust_score

Förtroende för åtkomsten

72

0100 · högre är bättre

Besvarar hur pålitlig den här åtkomsten är under den här policyversionen; taggen du skickar ändrar den inte. Heltal från 0 till 100. Finns bara när assessment_status = COMPLETED; i alla andra tillstånd är den null, aldrig ett standardvärde.

Inte en sannolikhet för bedrägeri, personens rykte eller ett standardvärde för saknade data. Vi visar 72/100, aldrig "72 % pålitlig".

device_match_confidence

Enhetsmatchning

0.94

01 · tak 0,98

Styrkan i evidensen för att den här åtkomsten kommer från samma enhet som redan setts, från 0 till 1. Levereras med device_id, en ogenomskinlig publik identifierare för det probabilistiska klustret.

Inte personens identitet, och inte bevis på hårdvara. Party och Account är olika saker.

evidence_coverage

Evidensens tillräcklighet

100

0100 · 13 av 13 utvärderade

Hur stor del av den förväntade uppsättningen kontroller som kunde köras, från 0 till 100. Varje tillämplig indikator som lämnas som NOT_EVALUATED sänker täckningen och syns i limitation_codes.

Inte en del av poängen. Låg täckning varken drar ner poängen eller trycker upp den: den lämnar bedömningen ofullständig.

Varför vi inte lägger ihop dem

En enda "misstankepoäng" blandar tre olika frågor: förtjänar den här åtkomsten förtroende? Räckte evidensen? Är det samma enhet? När svaret kommer separerat vet din analytiker om hen ska be om en andra faktor, vänta på insamlingen eller titta på historiken. När det kommer sammanslaget vet hen bara att "det fick 42".

05 · 13 indikatorer

Tretton indikatorer. Var och en säger om den såg, inte såg eller inte kunde utvärdera.

Varje webbedömning returnerar de 13 koderna, alltid. Det som ändras är tillståndet för var och en, aldrig listan. Varje indikator har sin egen versionerade detektor, och svaret namnger versionen som utvärderade den. En detektor som saknas, har löpt ut eller fallerar blir aldrig false.

signal_catalog web · 13 koder · exempel withdrawal_completed

  • Detekterad
  • Not_detected
  • — Ej utvärderad

Miljöns integritet

Webbläsarens integritetsskydd · neutral kontext

Nätverk · neutral kontext

Enhet

reason_codes · NETWORK_TOR_DETECTED REVIEW

I våra förvaltade policyer räcker Tor ensamt aldrig som skäl för BLOCK_RECOMMENDED; regler som ditt företag konfigurerar följer de vikter och den gräns det valt. I det här v1-kontraktsexemplet bad policy-withdrawal-v1 om granskning av uttaget, inte om blockering, och den enda skälskoden säger precis det. Den förvaltade policyn i produktion i dag rekommenderar MONITOR vid varje poäng.

Samma indikator, tre tillstånd

  • Detekterad · NETWORK_TOR PROVIDER · ftid-network-tor.v1 · 0.9 · exempel withdrawal_completed
  • Ej detekterad · NETWORK_TOR PROVIDER · ftid-network-tor.v1 · 0.9 · exempel login_completed
  • — Ej utvärderad · NETWORK_TOR not_evaluated_reason_code PROVIDER_UNAVAILABLE · limitation_codes ["PROVIDER_UNAVAILABLE"] · evidence_coverage 69 · exempel provider_unavailable

En detektor som saknas, har löpt ut eller fallerar blir aldrig false. NOT_APPLICABLE kommer bara från katalogens oföränderliga matris per kanal, motor och plattform; din tagg ändrar den aldrig, och en avstängd policy, en timeout eller ett avbrott tar aldrig den genvägen.

Neutral kontext som standard

PRIVATE_BROWSINGBROWSER_PRIVACY_BRAVEBROWSER_PRIVACY_SAFARIBROWSER_PRIVACY_SAMSUNG_INTERNETNETWORK_PROXYNETWORK_VPNNETWORK_TOR

De kan begränsa vad vi observerar. Täckningen sjunker bara där evidens inte utvärderas. De är inte bedrägeri. De beskriver miljön; de anklagar inte personen. I våra förvaltade policyer räcker de aldrig ensamma som skäl för BLOCK_RECOMMENDED; regler som ditt företag konfigurerar följer de vikter och den gräns det valt. När nätverkstypen inte går att särskilja, som bakom Apples iCloud Private Relay, förblir hosting, VPN och proxy alla NOT_EVALUATED med NETWORK_TYPE_AMBIGUOUS: vi markerar aldrig tre detekteringar utifrån ett enda booleskt värde.

Nätverksevidensen kommer från publicerade referenslistor som vi uppdaterar på vår egen infrastruktur: Tor-utgångsadresser, molnleverantörers intervall, listor över hostingnätverk, VPN-leverantörers intervall och en databas över publika proxyer. Dina användares adresser skickas aldrig till listornas utgivare. En lista som passerat sin maximala ålder lämnar sin indikator NOT_EVALUATED, aldrig NOT_DETECTED.

06 · Kontextinsikter

Utöver de 13 indikatorerna: 54 kontextinsikter. För utredningen, och för din poäng när du vill.

I varje bedömning, före svaret, beräknar vi 54 kontextinsikter utifrån det som samlats in och ditt företags egen historik: vem mer som använder enheten, hur snabbt kontot rör sig, från vilket nätverk, intill vilka konton. FingerTrackIDs förvaltade policy håller dem utanför poängen. I dina egna riskregler kan var och en vara av, spöke eller aktiv, med poäng för ovanligt och mycket ovanligt: en aktiv insikt som slår till drar av poäng från förtroendevärdet och namnger sig själv i reason_codes.

context-insight.v1 · 54 insikter i sex teman · grupperade som i konsolen och i dina regler

  • Konto och enhet · 10

    Ny enhet och nytt operativsystem för kontot · distinkta konton och personer på enheten under 30 dagar · samma persons konton på den · enheter per konto och per person under 24 timmar · enhet med hög aktivitet · hur vanlig, ovanlig eller sällsynt enhetsprofilen är i ditt företag · förlorad enhetscookie

  • Uttag och ordrar · 7

    Uttag inom den första timmen efter en ny enhet · mottagare per enhet och konton per mottagare under 30 dagar · antal uttag och belopp per konto · antal ordrar per konto och medianintervallet mellan ordrar

  • Nätverk och plats · 12

    Nytt land och ny internetleverantör (ASN) för kontot · distinkta länder, leverantörer och IP-adresser per konto · konton och personer per IP · omöjlig resa · webbläsarens tidszon stämmer inte med IP-adressens land · VPN-utgångens land · leverantör på en publik missbrukslista · Apple iCloud Private Relay

  • Webbläsarens och SDK:ts integritet · 16

    Utvecklarverktyg öppna · spår av automatisering · markör för anti-detect-webbläsare · TLS-signatur som inte stämmer med den uppgivna webbläsaren, och dess stabilitet under 30 dagar · mjukvarurenderare och GPU-familj · canvas eller ljud som ändras mellan två läsningar · inbyggd webbläsare i app · möjligt gästläge · AI-agent identifierad via signatur · botkategori · SDK som skiljer sig från det godkända paketet · en SDK-session på flera enheter · identisk insamling upprepad på en annan enhet · enhetscookie använd på platser för långt ifrån varandra

  • Hastighet · 5

    Åtkomster per enhet och per konto under 5 minuter, 1 timme och 24 timmar; per IP under 5 minuter och 1 timme · bedömningar med samma tagg per konto och per enhet under 1 minut, 5 minuter och 1 timme

  • Kopplingar mellan konton, ett steg · 4

    Andra konton som använt samma enheter · grannkonton där automatisering eller förfalskad webbläsare detekterats · grannkonton du markerat som bekräftat bedrägeri · uttagsmottagare som delas med andra konton

Tre tillstånd · ett skäl, aldrig en nolla

  • Observerad · villkoret föreligger, eller antalet eller måttet avviker från sitt neutrala värde.
  • Ej observerad · utvärderad, och frånvarande eller neutral.
  • Ej utvärderad · alltid med sitt skäl, visas aldrig som noll.

Vissa insikter beror på vad du skickar. Utan konto- eller personreferenser, utan tagg eller utan utfall säger posten det: konto inte skickat, bedömning utan tagg, inga utfall skickade. En taggad förfrågan bär inget belopp eller någon mottagare, så posterna för uttagsbelopp och mottagare säger det också. En första åtkomst, ett anonymiserat nätverk eller en IP utanför en kontrolls entimmesfönster är också skäl.

Vad de inte är

  • Inte en av de 13 indikatorerna, och aldrig en begränsningskod. De når reason_codes bara genom en regel som ditt företag gjort aktiv.
  • Aldrig med i poängen för FingerTrackIDs förvaltade policy. En aktiv insikt utan data drar inte av något: saknad evidens blir aldrig risk.
  • Inte en dold modell: varje insikt läses som förväntad, ovanlig eller mycket ovanlig mot en skala som ditt företag kan justera, med en publicerad standard som utgångspunkt.
  • Inte en anklagelse: ett högt antal konton eller personer på en enhet är inte bevis på bedrägeri, och det finns ingen regel om "N konton per enhet = bedrägeri".

Där analytikern läser dem

Åtkomstdetalj. Ett kort "Åtkomstkontext" grupperar insikterna efter tema, med deras tidsfönster, gränsen för den historik de beaktat, hur ovanlig var och en är på din skala och skälet för varje post som lämnats utan värde. En insikt som inte ryms i bedömningens tidsbudget slutförs i bakgrunden och säger det; den fördröjer eller fäller aldrig svaret.

Indikatorkatalog. En sida förklarar vad var och en av de 13 indikatorerna letar efter, vad som lämnar den ej utvärderad och om den kan påverka poängen, och listar kontextinsikterna med skälen till att de kan bli utan värde.

Canvas, WebGL, ljud och typsnitt läses under den förvaltade insamlingspolicyn för varje företag, endast som härledda värden, och matar några av dessa insikter, såsom GPU-familjen, en mjukvarurenderare eller en rendering som ändras mellan två läsningar. Där webbläsaren inte tillåter en kontroll förblir posten ej utvärderad, med sitt skäl.

07 · Ofullständigt är ett resultat

När vi inte kan bedöma säger vi det, och varför.

Saknad evidens ger inte förtroende 100, och den blir inte en bedrägerisignal. Utan poäng kommer rekommendationen från den reserv som är fryst i policyversionen och täcks av dess hash, och den är ett och samma svar för varje tillstånd utan poäng, oavsett tagg: MONITOR. Aldrig ALLOW.

Fall utan poäng ur kontraktsexemplen

Taggen väljer aldrig reserven. I den förvaltade policyn rekommenderar varje tillstånd utan poäng, på vilken tagg som helst, MONITOR: fortsätt och registrera det. Det gör även de tre kontraktsexemplen nedan.

  • INCONCLUSIVEtagg login · SDK:t laddades inte

    MONITOR

    Ingen insamling: trust_score: null, evidence_coverage: 0, COLLECTOR_NOT_LOADED, grund INSUFFICIENT_EVIDENCE. Ingenting släpps någonsin igenom som ALLOW.

  • INCONCLUSIVEnätverksevidens otillgänglig

    MONITOR

    Fyra nätverksindikatorer NOT_EVALUATED, evidence_coverage: 69, PROVIDER_UNAVAILABLE. Oavsett vilken operation det gäller stannar den i ditt system, under ditt beslut; vi håller aldrig inne pengar.

  • FAILEDtagg pix_transfer · policy otillgänglig

    MONITOR

    Tekniskt fel: POLICY_UNAVAILABLE, policy_version: null, grund TECHNICAL_FAILURE. Läses aldrig som "ingen risk".

Utan poäng rekommenderar vi aldrig ALLOW · fallback_policy_version production-observation-fallback-v2 i exemplen · reserven valideras med policyn varje gång policyn läses

Fyra bedömningstillstånd

Slutförd 72 grund EVALUATION · reason_codes förklarar poängen
Ofullständig null grund INSUFFICIENT_EVIDENCE · limitation_codes säger vad som saknades
Ej poängsättbar null grund OUT_OF_POLICY_SCOPE · giltig händelse, policyn täcker den inte
Misslyckad null grund TECHNICAL_FAILURE · POLICY_UNAVAILABLE, policy_version null · aldrig "ingen risk"

Katalogens 14 begränsningskoder · vad som saknades, aldrig varför det är riskabelt

NO_FIRST_PARTY_COOKIEINSTALLATION_COOKIE_REJECTEDNO_EDGE_SIGNALSSTALE_DEVICE_PROFILEPROVIDER_UNAVAILABLEPROVIDER_BUDGET_EXCEEDEDCOLLECTOR_NOT_LOADEDUNSUPPORTED_RUNTIMEREQUIRED_EVIDENCE_MISSINGDETECTOR_TIMEOUTDETECTOR_ERRORNETWORK_TYPE_AMBIGUOUSCLIENT_CLOCK_SKEWPOLICY_UNAVAILABLE

En begränsningskod förklarar insamling och kvalitet; en skälskod förklarar policy. Varje indikator NOT_EVALUATED pekar på sin egen; bedömningen samlar dem alla i limitation_codes. En insamlingsbegränsning är aldrig ett riskskäl.

08 · Du beslutar

Fem rekommendationer. Noll åtgärder vidtagna av oss.

recommended_action säger vad policyn föreslår. customer_action säger vad du gjorde. Två fält eftersom det är två fakta.

Vem rekommenderar, vem beslutar, vem agerar

FingerTrackID rekommenderar

  • ALLOW
  • MONITOR
  • STEP_UP
  • REVIEW
  • BLOCK_RECOMMENDED

Aldrig enbart på grund av integritetsskydd · Tor, VPN, proxy, inkognito, delad enhet

Ditt flöde beslutar

Din backend beslutar och agerar. Vi returnerar en rekommendation; i dag svarar den förvaltade policyn MONITOR, endast observation. Vad som händer med åtkomsten beslutas och utförs på din sida. Du känner kontot, gränsen, historiken och kostnaden för friktion. Det gör inte vi.

Du agerar och rapporterar tillbaka

  • ALLOWED
  • CHALLENGED
  • HELD
  • REVIEWED
  • BLOCKED
  • CANCELLED

customer_action · fältet du skickar tillbaka

  • Vi autentiserar aldrig en person.
  • Vi blockerar aldrig ditt gränssnitt.
  • Vi flyttar aldrig pengar.

Vad varje rekommendation inte betyder

  • ALLOW

    Policyn hittade inget skäl till friktion för den här åtkomsten. Betyder inte att personen är legitim eller att åtkomsten är certifierad. Den ges bara med en poäng och med den nödvändiga evidensen utvärderad.

  • MONITOR

    Fortsätt, men registrera det. Det är reserven utan poäng på varje tagg, och i dag även den förvaltade policyns svar vid varje poäng. Betyder inte bekräftad misstanke, och det kräver ingen åtgärd av användaren.

  • STEP_UP

    Be om en andra faktor eller en bekräftelse. Betyder inte att vi utmanar någon: det är du som visar utmaningen.

  • REVIEW

    Skicka till manuell granskning. Betyder inte att vi håller inne pengar: operationen stannar i ditt system, under ditt beslut.

  • BLOCK_RECOMMENDED

    Policyn föreslår att neka. Betyder inte en utförd blockering, bekräftat bedrägeri eller en avstängning. När du blockerar blir det customer_action: BLOCKED, en händelse hos dig, och den matar mätningen av träffsäkerhet.

09 · Integration

Tre steg, ett kontrakt. Webbläsaren samlar in; din backend frågar; vi svarar.

Ett skript på din webbplats, en server-till-server-endpoint i din backend och två anrop för att skicka tillbaka åtgärden och resultatet. Inget beslut på klienten.

SDK på din webbplats

SDK:t samlar in och returnerar en token. Det är allt.

Levereras från en egen underdomän. Innan du skickar förfrågan du vill få bedömd, oavsett skärm, samlar det in signaler från webbläsaren och miljön och tar emot 202 PROCESSING: det bekräftar mottagandet, inte ett resultat. Nätverkssignaler läggs till av edge på din insamlingsdomän, aldrig av skriptet. Ingen poäng, signal eller beslut går tillbaka till webbläsaren.

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

Din backend anropar

Ett signerat, synkront anrop, inom din tidsgräns.

HMAC-SHA-256 över tio kanoniska rader — markör, key_id, metod, sökväg, tidsstämpel, händelse- och förfrågnings-id, innehållsmetadata och SHA-256 av de exakta bodybytena på sista raden. Serialisera aldrig om JSON innan hashning; kontraktet innehåller den normativa vektorn. key_id är den enda publika lokaliseraren. Hemligheten färdas aldrig. Kanonisk vektor requests.both_refs_deadline_750 från v1.1-kontraktet: samma route och samma signatur som v1, med tag i stället för journey, action och journey_context.

POST /v1/assessments HTTP/1.1
Host: api.fingertrackid.com
Content-Type: application/json
X-FTID-Signature: v1=<key_id>:<mac-hex>
X-FTID-Timestamp: 1791720000
X-FTID-Request-Id: <uuidv7 of the attempt>
X-FTID-External-Event-Id: evt:tag-0003

{
  "schema_version": "event-assessment-request.v1.1",
  "external_event_id": "evt:tag-0003",
  "idempotency_key": "idem-tag-0003",
  "occurred_at": "2026-10-11T12:00:00.000Z",
  "subject_ref": "subject:synthetic",
  "account_ref": "account:synthetic",
  "event_context_token": "ctx.synthetic-token_0003",
  "tag": "pix_transfer_a1b2c3d4e5f6g7h8i9j0abcdeabcdeabcdeabcdeabcdeabcdez",
  "deadline_ms": 750
}

tag är en slug i gemener på högst 64 tecken (bokstäver, siffror och understreck, högst tio siffror), aldrig personuppgifter; den här vektorn ligger på den gränsen · subject_ref och account_ref får vara null, och en account_ref kräver en subject_ref · refs är egna ogenomskinliga koder, aldrig personnummer, e-post eller sekventiellt id · deadline_ms är ett heltal från 250 till 5000, eller null för 5000; överskrids den returneras ett 503 Problem som kan försökas igen, inte en partiell poäng

Synkront svar

Läs det, besluta, skicka tillbaka vad du gjorde.

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

Sedan två återkopplingsanrop: customer_action med vad du gjorde och, när du vet, truth_status med det verkliga resultatet (utfallet: legitimt, bekräftat bedrägeri eller otillräcklig evidens). Kontraktet håller båda till samma disciplin som bedömningsanropet: inget räknas som accepterat före en beständig commit, och ett identiskt nytt försök ger ingen andra effekt. Ett utfall kan korrigeras senare — korrigeringen läggs till som efterföljare, och den tidigare posten förblir läsbar.

POST /v1/assessments/{assessment_id}/customer-actions
POST /v1/assessments/{assessment_id}/outcomes

↑ tillbaka till det fullständiga exemplet

  • Web SDK
  • Synkront S2S-API
  • Server-SDK för Node.js
  • MCP-server för kodagenter
  • API för åtgärd och utfall
  • Konsol

Webb, i valfri modern webbläsare · ingen app att installera · SDK, bedömning och återkoppling i samma versionerade kontrakt

npm install @fingertrackid/server signerar anropet åt dig, och @fingertrackid/mcp låter Claude Code, Cursor eller valfri kodagent med MCP-stöd koppla in integrationen utifrån det publicerade kontraktet. Steg för steg i snabbstarten, guiden för Web SDK och API-referensen.

10 · Noll förtroende i webbläsaren

Webbläsaren samlar bara in. Beslut och identifierare passerar aldrig genom den.

Inget som kommer från webbläsaren behandlas som auktoritet. Bedömningen sker server till server, signerad, och varje försök räknas en gång: att upprepa det skapar ingen ny effekt.

Vem pratar med vem

Browser Your backend FingerTrackID event_context_token (that is all) HMAC · request_id assessment no decision no device_id

Webbläsaren tar bara emot ogenomskinliga sessions- och händelse-id. Poäng, signaler och rekommendation föds och stannar på servern. Förstapartscookien är signerad, HttpOnly, Secure och avgränsad till din tenant och applikation.

Anropets anatomi

POST /v1/assessmentssecurity ftidHmacV1 från kontraktet
X-FTID-Signature: v1=<key_id>:<mac-hex>key_id UUIDv7 är den enda lokaliseraren; tenant, applikation, miljö och behörigheter blir auktoritet först efter en giltig MAC vid jämförelse i konstant tid. X-Client-Id, äldre nonce och flera signaturer avvisas.
X-FTID-Timestamp: 1791720000Epoch i sekunder. Tolerans på ±300 s. En tidsstämpel i framtiden förlänger aldrig lagringstiden.
X-FTID-Request-Id: <uuidv7>En användning per försök, reserverad efter en giltig MAC. Ett logiskt nytt försök signerar ett nytt request_id; en ogiltig MAC skapar ingen reservation.
X-FTID-External-Event-Id: evt:tag-0003Byte för byte identiskt med det i bodyn och i den signerade strängen.
body.idempotency_keySamma nyckel, samma operation: ett identiskt nytt försök returnerar samma sparade bedömning, utan omberäkning.
body.deadline_msDin budget. Överskriden före bedömningen: Problem assessment-unavailable (503, retryable: true), inte en partiell poäng.
  • 401enhetligt: key_id som inte finns, har återkallats, eller en felaktig signatur ger alla samma authentication-failed.
  • 403en autentiserad credential utan routens bedömningsbehörighet.
  • 503hemlighetsberoendet otillgängligt: en global spärr gör svaret enhetligt utan att avslöja om key_id finns. Signera ett nytt request_id.

11 · Versionerad policy

Varje beslut har en version. Versionen fryser allt som formade det.

Att ändra känsligheten för en indikator skapar en ny version, med författare, giltighetsperiod, simulering och återställning. Historiken ändras inte. Saknas en verklig version blockeras användningen.

Versionen som beslutade · exempel withdrawal_completed

policy-withdrawal-v1

fallback_policy_version
production-observation-fallback-v2
ruleset_version
ruleset-web-v1
signal_catalog_version
web-detectors-v3
feature_schema_version
configured-assessment-features.v1
resolver_version
first-party-installation-v1
sdk_version
0.1.0
provider_versions
asn-reputation.v1 · cloud-ranges.v1 · icloud-private-relay.v1 · ip2proxy-lite-px2.v1 · tor-exit.v1 · x4b-vpn.v1
evidence_cutoff_at
2026-09-04T12:00:00Z
evaluated_at
2026-09-04T12:00:01Z
expires_at
2026-09-04T12:05:00Z
correlation_id
corr-assessment-withdrawal-0001

correlation_id är till för support utan att exponera en personlig identifierare. De exponerade versionerna är ogenomskinliga publika taggar; interna databas-id visas aldrig i API:et, i webhooken eller i konsolen.

Vad en policyversion fryser

  • signalkatalog
  • normalisering
  • features
  • enhetsresolver
  • regler
  • korrelationsstrategi
  • nivåer per indikator
  • tak och tröskelvärden

Reproducerbart, skrivs aldrig om

exempel login_completed

assessment_version1

supersedes_assessment_idnull

exempel login_completed_revision_2

assessment_version2

supersedes_assessment_id…0000000101

En operativ revision bevarar policyn och varje annan version som gällde vid händelsens received_at. En ny policy över en gammal händelse är en separat simulering; den skriver aldrig om vilken rekommendation som styrde det historiska beslutet.

12 · Skuggläge

Parallellt först. Först därefter påverkar svaret en åtgärd.

Skuggläge innebär att FingerTrackID körs sida vid sida med det du använder i dag, utan att svaret påverkar något beslut. Du jämför, skickar tillbaka de verkliga resultaten och börjar först därefter använda rekommendationen. Så rekommenderar vi att du börjar.

Hela cykeln

  1. 01

    SDK:t samlar in

    202 PROCESSING · event_context_token

  2. 02

    Din backend begär bedömningen

    POST /v1/assessments · synkront

  3. 03

    Du beslutar genom ditt flöde

    i skuggläge, utan att använda svaret

  4. 04

    Du rapporterar åtgärden

    customer_action · POST …/customer-actions

  5. 05

    Du rapporterar resultatet

    truth_status · POST …/outcomes

recommendation_alignment · härleds på servern ur paret rekommendation × åtgärd; deklareras aldrig av klienten. Sammanträffande bevisar varken kausalitet, träffsäkerhet eller bedrägeri.

Jämförelse, fält för fält

recommended_actioncustomer_actionrecommendation_alignment
REVIEWREVIEWED eller HELDALIGNED
STEP_UPALLOWEDNOT_ALIGNED
ALLOW eller MONITORALLOWEDALIGNED
BLOCK_RECOMMENDEDBLOCKEDALIGNED
valfriCANCELLEDNOT_COMPARABLE

Blockering bevisar inte bedrägeri. Att bekräfta bedrägeri kräver oberoende evidens: truth_status går från PENDING till LEGITIMATE, FRAUD_CONFIRMED eller INSUFFICIENT_EVIDENCE, med mognad PROVISIONAL eller MATURE. Endast en mogen etikett blir ett kvalitetsmått.

Vad cykeln matar

  • Falska positiva och falska negativa som mått härledda ur mogna etiketter, inte inmatade fält.
  • Omkalibrering av regler och tröskelvärden, alltid som en ny policyversion.
  • Detektorkvalitet mätt i ditt skuggläge, innan svaret påverkar någon åtgärd hos dig.
  • Vad det inte gör: blir automatisk verkställighet. customer_action och truth_status är separata fakta, och varje korrigering skapar en efterföljare.

13 · Integritet genom kontrakt

Avgränsat av kontraktet, inte av en inställning.

Personuppgifter i klartext är inget produktkrav. Du skickar ogenomskinliga person- och kontoreferenser; vi ber inte om personnummer, e-post eller telefonnummer för att bedöma en åtkomst.

packages/contracts/src/sdk-handshake-v1.ts · insamlingspolicy

canvas: z.boolean(),
audio: z.boolean(),
fonts: z.boolean(),
behavioral: z.literal(false),

packages/contracts/src/sdk-signals/rendering-v1.ts · utdrag

const Hash128 = z.string().regex(/^[0-9a-f]{32}$/)
canvas_hash: Hash128.optional(),
webgl_gpu_family: z.enum(SDK_RENDERING_GPU_FAMILY_V1).optional(),
audio_hash: Hash128.optional(),
fonts_count: z.number().int().min(0).max(SDK_RENDERING_FONT_COUNT_V1).optional(),

Beteendeinsamling, alltså pekarrörelser och tangenttryckningar, accepterar bara värdet av: att slå på den kräver att kontraktet ändras, inte en inställning. Canvas, WebGL, offline-ljud och förekomst av typsnitt läses under den förvaltade insamlingspolicyn, som slår på dem för varje företag, och de lämnar webbläsaren endast som härledda värden: hashvärden med fast längd, en sluten GPU-familj, ett antal och en närvaromask över en fast typsnittslista. Kontraktet har inget fält för pixlar, ljudsampel, namn på GPU-tillverkare eller renderare, eller typsnittsnamn. Tillsammans kan dessa härledda värden känna igen samma webbläsare igen, så de behandlas som enhetsdata, inte som anonyma data. Samlas aldrig in, som absolut regel: lösenord, inskriven text, innehåll i chatt eller dokument, urklipp, skärmdump, mikrofon, kamera. Varje bit evidens har en integritetsklass, och klass är inte riskvikt.

Garantier som inte hänger på god vilja

  • Personuppgifter hamnar inte i loggar. Rådata visas inte fritt i konsolen: varje åtkomst till den registreras. En identifierare eller ett personligt värde hamnar aldrig i en URL.
  • Korrelation mellan tenants är avstängd. Varje domäntabell bär tenant_id med isolering påtvingad i databasen. Det finns inget rykte eller etikett som delas mellan kunder.
  • Förstapartscookie som levereras från din domän: signerad, HttpOnly, Secure, begränsad till din tenant och applikation. Värdet färdas aldrig till en databas, kö eller logg; saknas eller avvisas den försämras kontinuiteten som en begränsning, och bedömningen stannar inte.
  • Varje sammanslagning av enheter är reversibel och registrerar vilken resolverversion som gjorde den. IP slår aldrig ensamt ihop enheter.
  • Varje typ av evidens har ett deklarerat syfte, en integritetsklass, en åtkomstregel och en lagringstid i vår datainventering. Rättslig grund, datalagringsplats och personuppgiftsbiträdesavtal (DPA) hanteras med ert juridiska team vid avtalsskrivning; inget på den här sidan är juridisk rådgivning.

Party är inte Account

Party Account Account Account

Kopplingen kommer från din backend · härleds aldrig ur fingerprint

En person, flera legitima konton. Ett konto byter aldrig person i tysthet; sessionen går bara från anonym till person och sedan till ett konto hos samma person. En motsägelse är en konflikt, inte en ny koppling och inte improviserad negativ evidens.

Var datan finns

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 · Konsol

En konsol för att integrera, utreda och sluta cirkeln.

Konsolen besvarar först "tar vi emot, bedömer och förklarar vi med kvalitet?", och låter först därefter någon tala om legitimitet. Varje procentsats namnger sin nämnare.

Schematisk, inte en skärmdump · konsolens färgtoner inom ramen

Åtkomstdetalj. De tre måtten som tre separata komponenter; rekommendationen med sin recommendation_basis, gällande policy och vad ditt team rapporterade att det gjorde; evidensens färskhet; de 13 indikatorerna med tillstånd, tillämplighet, källa, detektorns konfidens, färskhet och skälet till varje ej utvärderad; begränsningar och skälskoder; session, enhet och deras kopplingar; multiplicitet på enheten; en ungefärlig plats utifrån nätverket; åtkomstkontexten; och en flik med tekniska data med allt som SDK:t och edge samlat in, inklusive den verkliga webbläsarversionen avläst från de API:er den exponerar, bredvid den version den uppger.

Utredningsfilter. Åtkomstlistan avgränsas efter internetleverantör (ASN), nätverkets land, enhetsinstallation, skälet till att en indikator inte utvärderades och upp till två indikatorer i valda tillstånd samtidigt, och den hittar en åtkomst via din egen konto- eller personreferens. Det finns inget filter på IP-adress: det är en personuppgift. Varje åtkomstdetalj har också sina kontextinsikter ↑.

Utred på djupet. Från valfri åtkomst öppnar en kopplingsgraf enheterna och kontona runt den, ett steg i taget, över upp till 92 dagar av din egen historik. Varje expansion är en registrerad läsning; IP-adresser blir aldrig noder.

Block- och tillåtlistor. Från åtkomstdetaljen lägger ditt team en enhet, en kontoreferens eller en enskild IP på ditt företags blocklista (blockera eller granska) eller tillåtlista, med en anteckning och namnet på den som lade till den. På en poängsatt åtkomst i produktion åsidosätter en post rekommendationen och namnger sig själv i reason_codes. Inget raderas: att ta bort en post registrerar vem som tog bort den och när.

AI-assistent. En sidopanel förklarar varje skärm och besvarar frågor om din egen integration och dina åtkomster, inom ditt företag och din roll.

Riskkonfiguration. Ditt företags egna riskregler, per applikation: var och en av de 13 indikatorerna är av, spöke eller aktiv, med en vikt från 1 till 100 poäng, och du ställer in poängintervallen och åtgärden för vart och ett. En spökregel beräknas och registreras men ändrar aldrig svaret. Innan du publicerar spelar effektkortet upp ditt utkast över bedömningarna från de senaste 1, 7 eller 30 dagarna. Var och en av de 54 kontextinsikterna ↑ kan ansluta med egna poäng. Din administratör eller riskansvarige publicerar direkt; varje publicering är en ny granskad version, och allt till spöke stoppar alla dina regler på en gång. FingerTrackID aktiverar aldrig en regel åt dig: supporten kan bara sätta alla regler i en applikation i spökläge, med ett skäl som din konsol visar. Så länge ingen regel är aktiv svarar den förvaltade policyn, publicerad av FingerTrackID-teamet med registrerat godkännande.

Sexton skärmar i fyra grupper · huvud, detektering, drift, administration

  • 01Start
  • 09Integration och hälsa
  • 02Översikt
  • 10Användning
  • 03Åtkomster
  • 11Exporter
  • 04Granskningskö
  • 12Rapporter
  • 05Riskkonfiguration
  • 13Användare och åtkomst
  • 06Policysimuleringar
  • 14Granskningslogg
  • 07Listor
  • 15Kundens livscykel
  • 08Indikatorkatalog
  • 16Konto och säkerhet

Granskningskön är modulen för granskning av uttag: en operativ kö byggd på samma kärna, som för fram varje v1-uttag som rekommenderats för REVIEW till en person, med evidensen bredvid. Taggade bedömningar hamnar aldrig där, och den förblir tom så länge policyn rekommenderar MONITOR, som den förvaltade policyn gör i dag.

På engelska, portugisiska (Brasilien och Portugal), spanska, franska och tyska. Inloggning med passkey eller andra faktor; behörigheter per roll; en granskningslogg över vem som såg känsliga data och vem som ändrade vad. Rådata visas inte fritt: varje åtkomst till den registreras.

15 · Så tar vi betalt

En faktureringsenhet. Allt annat räknas inte.

Pris efter volym av slutförda insamlingar, fastställt i offerten. Skuggläge förbrukar samma enheter och visas i konsolen som uppskattad användning; vad som faktureras för den perioden definieras i offerten.

Enheten

En device intelligence-snapshot i produktion, begärd av din integration och slutförd.

Det är mätenheten och den tänkta faktureringsenheten. Varje device_intelligence_snapshot_id ger högst en enhet, oavsett hur många bedömningar, taggar, leverantörer eller omprocesseringar som använder den insamlingen.

  • Poäng, rekommendation, åtgärd och utfall avgör inte faktureringen. Ett riskfyllt resultat kostar inte mer; ett legitimt resultat kostar inte mindre.
  • En kommersiell gräns blir aldrig en blockering, en hastighetsbegränsning eller en automatisk försämring av tjänsten.
  • Varje begärd snapshot ger en oföränderlig användningspost, även när den inte är fakturerbar. Undantag bevisas av den posten, inte rekonstrueras ur loggar.

Händelse · skapar en enhet?

  • Applikationer utanför produktion (utveckling, staging)nej
  • Nytt försök med samma idempotency_keynej
  • Varje bedömning, på vilken tagg som helst, som återanvänder en färsk snapshotnej
  • Omprocessering, historisk uppspelning, policyändringnej
  • Asynkron berikning och uppdatering som vi startarnej
  • Anrop till leverantör eller nytt försöknej
  • Leverans av webhooknej
  • customer_action och utfallnej
  • Fråga, dashboard, rapport, exportnej
  • 4xx för autentisering, auktorisering eller ogiltigt kontraktnej
  • 5xx, en timeout på vår sida, insamling INCONCLUSIVE eller FAILEDnej
  • Snapshot i produktion, begärd av integrationen, slutfördja · 1

Offert efter volym, med användningen i skuggläge på bordet.

Begär en offert

16 · Vanliga frågor

Frågorna som en riskchef och en CTO ställer.

Q01Hur börjar integrationen?
I skuggläge. Du installerar SDK:t på din webbplats, slår på server-till-server-anropet, och svaret börjar köras parallellt med ditt verkliga flöde utan att påverka något beslut. Du skickar tillbaka customer_action och utfallet, och i konsolen jämför du, åtkomst för åtkomst, rekommendationen med vad ditt team rapporterade att det gjorde, och följer evidenstäckningen. När siffrorna går ihop beslutar ditt team om och var rekommendationen ska börja påverka ett beslut, alltid utfört av din backend.
Q02Vilka flöden bedömer ni?
Valfri skärm du väljer. Din backend skickar en egen tag med varje bedömning, en slug i gemener som login, withdrawal eller pix_transfer: ingen registrering, ingen sluten lista och ingen gräns. Konsolen filtrerar, grupperar och exporterar per tagg, och mallarna (registrering, inloggning, återställning av lösenord, andra faktor, profiländring, insättning, uttag, Pix-överföring, handel, kassa) är en integrationsguide. Taggen väljer aldrig policyn, detektorerna, reserven eller tidsgränsen: varje taggad bedömning körs under samma policy och samma 13 indikatorer. Den får aldrig bära personuppgifter. Förfrågan bär inget belopp, ingen valuta och ingen mottagare.
Q03Varför blockerar ni inte?
Eftersom en händelse inte är bedrägeri, en poäng inte är ett beslut och en blockering inte bevisar något. Det är du som känner kontot, gränsen, historiken och kostnaden för friktion. Vi levererar evidens, täckning och en förklarad rekommendation. BLOCK_RECOMMENDED är den starkaste rekommendation som finns, och den är fortfarande en rekommendation. När du blockerar registrerar du customer_action: BLOCKED, och det blir data för att mäta om rekommendationen var rätt.
Q04Drar VPN, Tor eller en privat flik ner poängen?
I våra förvaltade policyer ger ingen av dem BLOCK_RECOMMENDED på egen hand; regler som ditt företag konfigurerar följer de vikter och den gräns det valt. Privat läge och webbläsarens skydd är neutral kontext: de kan minska täckningen och syns i detaljen, utan någon negativ skälskod. Tor, proxy, VPN och hosting är kontext om anonymisering: en policy kan väga in dem tillsammans med vad mer som sågs, aldrig per tagg. I den förvaltade policyn i dag påverkar bara automatisering och förfalskad webbläsare poängen, och rekommendationen är MONITOR. I v1-kontraktsexemplet för uttag på den här sidan ledde detekterad Tor till REVIEW, och skälskoden säger det. Det är aldrig bedrägeri i sig.
Q05Vad händer om SDK:t inte laddas, eller om användaren blockerar skript?
Flödet fortsätter. Din backend anropar API:et utan event_context_token och får INCONCLUSIVE, trust_score: null, evidence_coverage: 0, limitation_codes: ["COLLECTOR_NOT_LOADED"] och reservrekommendationen, MONITOR. Aldrig en påhittad poäng. Aldrig ALLOW i brist på evidens.
Q06Vilken latens är det? Finns det ett SLA?
Tidsgränsen är din. Kontraktets standard är 5000 ms, och deadline_ms ställer in den någonstans mellan 250 och 5000 (håll din HTTP-timeout över cirka 6 s för standardvärdet); överskrids den får du ett Problem assessment-unavailable (503, retryable: true, med Retry-After), inte ett partiellt svar. Upprepa samma logiska operation med ett nytt request_id. Latens och SLA ingår i offerten, uppmätta i ditt skuggläge innan något beslut beror på svaret.
Q07Hur vet jag att svaret inte är förfalskat?
Det passerar aldrig genom webbläsaren. Din backend signerar varje anrop med HMAC-SHA-256 över tio kanoniska rader, varav den sista är SHA-256 av de exakta bodybytena; key_id UUIDv7 är den enda publika lokaliseraren; request_id reserveras mot replay; ett autentiseringsfel returnerar ett enhetligt 401 utan att avslöja om nyckeln finns. Hemligheten färdas aldrig. Protokollets normativa testvektor är en del av kontraktet; med den återskapar du signaturen byte för byte.
Q08Måste jag skicka personnummer, e-post eller telefonnummer?
Nej. Bedömningen använder ogenomskinliga person- och kontoreferenser som bara ditt system kan slå upp. Personuppgifter i klartext är inget produktkrav. Pekar- och tangentbordsbeteende är avstängt i kontraktet. Kontroller av canvas, WebGL, ljud och typsnitt körs under den förvaltade insamlingspolicyn för varje företag och lämnar webbläsaren endast som hashvärden, en GPU-familj och en närvaromask över en fast typsnittslista, aldrig som pixlar, ljud, GPU-namn eller typsnittsnamn. Lösenord, inskriven text, urklipp, skärmdump, mikrofon och kamera är förbjudna. Varje typ av evidens har ett deklarerat syfte, en integritetsklass och en lagringstid; den rättsliga grunden granskas med ert juridiska team innan produktion slås på, och inget på den här sidan ersätter den granskningen.
Q09Vad kostar det och vad behöver mitt team göra?
Pris efter volym av slutförda insamlingar, i en offert. Den tänkta faktureringsenheten är en snapshot som slutförts i produktion; inget utanför produktion räknas. På din sida: ett skript på webbplatsen, en server-till-server-endpoint i backend för att begära bedömningen och två API-anrop för att skicka tillbaka den vidtagna åtgärden och det verkliga resultatet (utfallet). SDK:t är för webben och körs i valfri modern webbläsare; det finns ingen app att installera.
Q10Vad är device intelligence, och hur skiljer det sig från device fingerprinting?
Device fingerprinting läser stabila egenskaper hos en webbläsare för att känna igen den igen. Device intelligence börjar där och går längre: det kontrollerar om egenskaperna stämmer med varandra och med nätverket, om automatisering, en emulator eller en anti-detect-webbläsare är i farten, och hur enheten beter sig över dina konton. FingerTrackID returnerar det som ett förtroendevärde (riskpoäng), en enhetsmatchning med egen konfidens, evidenstäckning och 13 indikatorer, var och en med versionen av detektorn som läste den.
Q11Kan vi sätta egna regler, poäng och listor?
Ja. I konsolen ger ditt företag poäng till valfri av de 13 indikatorerna och 54 kontextinsikterna, väljer poängintervallen och rekommendationen för varje intervall, och kan först köra vilken regel som helst i spökläge, beräknad och registrerad utan att ändra svaret. Block- och tillåtlistor tar en enhet, en kontoreferens eller en enskild IP, en post i taget, med en anteckning och namnet på den som lade till den. Varje publicering är en ny granskad version. FingerTrackID aktiverar aldrig en regel eller lägger till en listpost åt dig.
Q12Kan en AI-kodagent göra integrationen?
Ja. Server-SDK:t @fingertrackid/server signerar anropet, MCP-servern @fingertrackid/mcp ger Claude Code, Cursor eller valfri agent med MCP-stöd kontrakten, signaturvektorerna, en färdig servermodul per tagg och en kontroll av din insamlingsdomän, allt skrivskyddat, och dokumentationen publicerar llms.txt och ett färdigt regelblock för din AGENTS.md. Hemligheten stannar i din miljö; agenten behöver aldrig se den.
Q13Hur tungt är SDK:t, och gör det sidan långsammare?
SDK:t samlar in en gång, parallellt, i en enda förfrågan till din egen insamlingsunderdomän. På dator tog hela insamlingen mellan cirka 80 och 125 ms i median i Chrome, Firefox och Safari, under en hård budget på 250 ms; varje kontroll tar högst 2 ms av huvudtråden, och de som väntar, som bildtiming eller en Worker, väntar parallellt. Det visar aldrig en behörighetsdialog och blockerar aldrig ditt gränssnitt.

17 · Kontakt

Bedöm flödet du väljer, i skuggläge.

Börja i skuggläge: svaret körs parallellt med ditt verkliga flöde utan att påverka något beslut, du jämför, skickar tillbaka resultaten och börjar först därefter använda rekommendationen. Om du har skärmar där beslutet spelar roll och vill se svaret förklarat innan du litar på det, hör av dig.

Boka en demo

Ange en e-postadress med domän.
Ange företagets namn.
Vad du vill bedöma

Ett flöde är valfri skärm du väljer, med det namn du ger den. Kryssa i dem du redan har i åtanke; resten kommer fram i samtalet.

Inget nyhetsbrev · vi svarar via e-post, en person i taget · eller skriv direkt till contato@fingertrackid.com

Så börjar det

  1. Ett 30 minuter långt samtal om flödena du vill bedöma och ditt beslutsflöde.
  2. Serverlegitimation för din applikation, körbart kontrakt och HMAC-vektor. Det finns ingen sandlåda: du testar i produktion, i skuggläge.
  3. Skuggläge med ditt verkliga flöde: du jämför och skickar tillbaka resultat innan svaret påverkar något beslut.
  4. Produktion på skärmarna du taggar, med versionerad policy; varje beslut ligger kvar hos din backend.

Vad som ingår

  • Konsol med evidenstäckning och, åtkomst för åtkomst, rekommendationen bredvid åtgärden du rapporterade
  • Körbart event-assessment.v1-kontrakt, med en HMAC-testvektor
  • Skuggläge i produktion från dag ett: svaret körs bredvid ditt flöde och påverkar aldrig ett beslut
  • Direktkanal till dem som skriver policyn