Risk Scoring
A score, a decision, and the reason.
Every response carries a risk score, a recommended action, and the signals that produced it. Your team does not have to reverse-engineer the verdict.
Response
{ "event_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "fingerprint": "kvd_8f3a2c1e9b047d56", "visitor_id": "kvd_8f3a2c1e9b047d56", "risk_score": 42, "recommendation": "allow", "action": "allow", "reason": [ "VPN_DETECTED", "INCOGNITO_DETECTED" ], "score": 0.42, "trust_score": 70, "smart_signals": { "vpn_detected": true, "incognito_detected": true, "risk_score": 42, "action": "allow", "browser": "Chrome", "operating_system": "macOS" }, "created_at": "2026-07-25T12:00:00Z", "country_code": "KE", "country_name": "Kenya", "times_seen": 3, "first_seen": "2026-07-01T09:00:00Z", "last_seen": "2026-07-25T12:00:00Z"}Field walkthrough
Three fields drive the decision. Scroll the list to highlight each in the response.
Response
{ "event_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "fingerprint": "kvd_8f3a2c1e9b047d56", "visitor_id": "kvd_8f3a2c1e9b047d56", "risk_score": 42, "recommendation": "allow", "action": "allow", "reason": [ "VPN_DETECTED", "INCOGNITO_DETECTED" ], "score": 0.42, "trust_score": 70, "smart_signals": { "vpn_detected": true, "incognito_detected": true, "risk_score": 42, "action": "allow", "browser": "Chrome", "operating_system": "macOS" }, "created_at": "2026-07-25T12:00:00Z", "country_code": "KE", "country_name": "Kenya", "times_seen": 3, "first_seen": "2026-07-01T09:00:00Z", "last_seen": "2026-07-25T12:00:00Z"}Scores and reasons describe this event and this workspace. They do not expose other customers' data.
Acting on the score
- allowProceed. The event is within normal risk for this device.
- challengeStep the user up. Maps to soft_challenge or hard_challenge in the response.
- blockDeny the action. The signals crossed your risk threshold.
Integrate once
Quick integration
const keverdPromise = import( 'https://cdn.keverd.com/v1/YOUR_PUBLIC_API_KEY/keverd.min.js').then((Keverd) => Keverd.start()); keverdPromise .then((k) => k.getVisitorData()) .then((r) => { console.log(r.requestId); // billable event id — send to your server console.log(r.visitorId); // persistent device id });Compliance posture
Kenya Data Protection Act 2019
GDPR
Metadata only, no PII
Start free. 1,000 calls a month.