Skip to main content
Identity Graph maps relationships between verification sessions, linking shared devices, documents, phone numbers, email addresses, and facial biometrics into a network graph. Use it to uncover fraud rings, detect synthetic identities, and identify repeat offenders.

Overview

Every verification session generates identity data points — device fingerprints, phone numbers, email addresses, facial embeddings, and document numbers. Identity Graph connects sessions that share any of these data points, building a network of linked identities over time. Verilock detects the following relationship types between sessions:
Link TypeDescription
same_deviceSessions from the same device fingerprint
same_faceFace match detected across sessions (above similarity threshold)
same_documentSame document number used in multiple sessions
same_phoneSame phone number across sessions
same_emailSame email address across sessions
same_ipSessions from the same IP address
same_addressMatching extracted address across sessions
name_similarityHigh name similarity with different documents

Cluster Detection

When multiple sessions share links, they form clusters. Verilock automatically identifies clusters and assigns a risk level:
Cluster SizeRisk LevelDescription
2 — 3 sessionsLowMay be legitimate (e.g., re-verification, family members)
4 — 7 sessionsMediumWorth investigation — possible identity farming
8+ sessionsHighStrong indicator of a fraud ring or synthetic identity operation
Clusters with mixed link types (e.g., same device AND same face with different documents) receive elevated risk scores.

Dashboard Visualization

Access Identity Graph from Dashboard > Intelligence > Identity Graph:
  • Graph view — interactive node-and-edge visualization showing connections between sessions
  • Cluster list — all detected clusters sorted by risk level and size
  • Session drilldown — click any node to view the full session detail
  • Link filtering — filter by link type to focus on specific relationship patterns
  • Time range — narrow the graph to sessions within a date range

API: Get Identity Graph

Retrieve the identity graph for a specific session:
GET /v1/sessions/{id}/identity-graph
{
  "session_id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "cluster_id": "cluster_x9y8z7",
  "cluster_size": 4,
  "cluster_risk_level": "medium",
  "links": [
    {
      "linked_session_id": "ses_f6e5d4c3-b2a1-0987-fedc-ba9876543210",
      "link_type": "same_device",
      "confidence": 0.98,
      "detected_at": "2026-03-18T10:00:00Z"
    },
    {
      "linked_session_id": "ses_11223344-5566-7788-99aa-bbccddeeff00",
      "link_type": "same_face",
      "confidence": 0.91,
      "detected_at": "2026-03-17T15:30:00Z"
    },
    {
      "linked_session_id": "ses_aabbccdd-eeff-0011-2233-445566778899",
      "link_type": "same_phone",
      "confidence": 1.0,
      "detected_at": "2026-03-16T08:00:00Z"
    }
  ],
  "nodes": [
    {
      "session_id": "ses_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "person_name": "John Smith",
      "status": "approved",
      "created_at": "2026-03-18T09:45:00Z"
    },
    {
      "session_id": "ses_f6e5d4c3-b2a1-0987-fedc-ba9876543210",
      "person_name": "Jon Smyth",
      "status": "declined",
      "created_at": "2026-03-15T14:00:00Z"
    }
  ]
}

Response Fields

FieldTypeDescription
session_idstringThe queried session ID
cluster_idstringIdentifier for the linked cluster
cluster_sizeintegerNumber of sessions in the cluster
cluster_risk_levelstringlow, medium, or high
linksarrayConnections to other sessions
links[].linked_session_idstringID of the linked session
links[].link_typestringType of relationship
links[].confidencenumberLink confidence score (0-1)
nodesarraySummary of all sessions in the cluster

List Clusters

Retrieve all detected clusters:
GET /v1/identity-graph/clusters?risk_level=high&min_size=4
ParameterTypeDefaultDescription
risk_levelstringallFilter by low, medium, or high
min_sizeinteger2Minimum cluster size
pageinteger1Page number
per_pageinteger20Results per page
Identity Graph data requires at least two sessions with shared data points. Single isolated sessions will not appear in the graph.
Set up orchestration rules to automatically flag or decline sessions that belong to high-risk clusters with 8 or more linked identities.