Skip to main content
Behavioral Biometrics analyzes how users interact with their device during the verification flow — typing cadence, mouse movements, scroll patterns, and touch gestures — to detect bots, remote access tools, and coerced sessions.

Signals Collected

The Verilock SDK passively collects behavioral signals during the hosted verification flow.
CategorySignals
TypingKeystroke timing, flight time between keys, dwell time, error rate
MouseMovement velocity, acceleration, curvature, click precision
TouchTap pressure, swipe speed, gesture patterns, screen contact area
ScrollScroll velocity, direction changes, momentum patterns
SessionTime on page, idle periods, tab switching, form interaction order
ClipboardPaste frequency, paste vs. typed ratio
Behavioral data is collected transparently during the hosted flow. No additional SDK configuration is required.

Risk Scoring

Each session receives a behavioral risk score from 0 (no risk) to 100 (highest risk).
Score RangeLevelDescription
0 — 20LowNatural human interaction patterns
21 — 50MediumMinor anomalies (e.g., unusually fast form completion)
51 — 80HighMultiple behavioral red flags
81 — 100CriticalStrong indicators of automation or remote access

Risk Factors

FactorDescription
bot_like_typingTyping cadence is unnaturally consistent, indicating automation
copy_paste_heavyMajority of form fields were filled via clipboard paste
remote_accessMouse movements consistent with remote desktop tools (TeamViewer, AnyDesk)
no_mouse_movementNo mouse activity detected (possible headless or automated session)
rapid_completionForm completed significantly faster than human average
linear_mouseMouse moves in perfectly straight lines between targets
coercion_signalsHesitation patterns and erratic behavior suggesting user duress
tab_switchingExcessive tab switching during verification (copying from reference)

API: Submit Behavioral Signals

If using a custom integration (not the hosted flow), submit behavioral signals directly:
POST /v1/verify/{token}/behavioral-signals
{
  "signals": {
    "typing": {
      "avg_dwell_ms": 85,
      "avg_flight_ms": 120,
      "error_rate": 0.03
    },
    "mouse": {
      "avg_velocity": 450,
      "avg_curvature": 0.15,
      "click_count": 12
    },
    "session": {
      "duration_ms": 45000,
      "idle_periods": 2,
      "paste_events": 0,
      "tab_switches": 1
    }
  },
  "collected_at": "2026-03-18T10:00:00Z"
}
FieldTypeDescription
signals.typing.avg_dwell_msnumberAverage key press duration in milliseconds
signals.typing.avg_flight_msnumberAverage time between keystrokes in milliseconds
signals.typing.error_ratenumberRatio of backspaces to total keystrokes (0-1)
signals.mouse.avg_velocitynumberAverage mouse speed in pixels per second
signals.mouse.avg_curvaturenumberAverage path curvature (0 = straight, 1 = circular)
signals.session.duration_msintegerTotal session duration in milliseconds
signals.session.paste_eventsintegerNumber of clipboard paste events
signals.session.tab_switchesintegerNumber of tab/window switches

API Response

Behavioral biometrics data is included in the session detail response:
{
  "id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "approved",
  "behavioral_biometrics": {
    "risk_score": 12,
    "risk_level": "low",
    "risk_factors": [],
    "session_duration_ms": 45000,
    "typing_pattern": "natural",
    "mouse_pattern": "natural",
    "analyzed_at": "2026-03-18T10:00:00Z"
  }
}

High-Risk Example

{
  "behavioral_biometrics": {
    "risk_score": 88,
    "risk_level": "critical",
    "risk_factors": ["bot_like_typing", "linear_mouse", "rapid_completion"],
    "session_duration_ms": 3200,
    "typing_pattern": "automated",
    "mouse_pattern": "automated",
    "analyzed_at": "2026-03-18T10:05:00Z"
  }
}

Response Fields

FieldTypeDescription
risk_scoreintegerBehavioral risk score (0-100)
risk_levelstringlow, medium, high, or critical
risk_factorsarrayList of detected behavioral anomalies
session_duration_msintegerTotal interaction duration in milliseconds
typing_patternstringnatural, suspicious, or automated
mouse_patternstringnatural, suspicious, or automated
analyzed_atstringISO 8601 timestamp of analysis
Behavioral biometrics requires the Verilock Web SDK or mobile SDKs. API-only flows must submit signals manually via POST /v1/verify/{token}/behavioral-signals.
Combine behavioral biometrics with device fingerprinting for a layered fraud detection approach. A session with both high device risk and high behavioral risk is almost certainly fraudulent.