Overview
24h rolling window · Auto-refreshes every 30s
Total Events
Loading…
Unique Visitors
New Devices
First-time visitors
High Risk Rate
Avg Risk Score
Linked Identities
Cross-device links
VPN Detected
Incognito Detected
Events · 24h
Trusted High Risk
Signal Coverage
22 signals · v3 SDK
Loading…
Merchants
MerchantAPI KeyEventsUnique DevicesHigh RiskRisk Rate
Loading…
Timestamp Visitor ID Merchant Match Tier Risk Score IP Address Signals New?

Loading events…
Visitor ID Merchant First Seen Last Seen Risk Score Signals Links Visits

Loading identities…
Active API Keys
NamePublic KeyStatusCreated
Loading…
API Endpoints
Base URL
https://api.arch-hayder.workers.dev
POST /v1/fingerprintIdentify device
GET /v1/dashboardPortfolio overview
GET /v1/visitor/:idDevice profile
GET /healthHealthcheck
SDK Quick Start
1. Add the SDK
<script src="https://deviceid-cdn.pages.dev/deviceid.min.js"></script>
2. Initialize & identify
const sdk = new DeviceID({ apiKey: 'pk_live_YOUR_KEY', endpoint: 'https://api.arch-hayder.workers.dev' }); sdk.identify().then(result => { console.log(result.visitorId); // stable device ID console.log(result.riskScore); // 0-100 console.log(result.confidence); // match certainty console.log(result.matchTier); // stored_id | exact | fuzzy | cross_device | new console.log(result.identity); // linked devices & cross-device graph console.log(result.riskSignals); // vpn, bot, incognito, ipChanged, linkedRisk console.log(result.geo); // country, city, ASN });
3. API Response Format
{ "visitorId": "dvc_a1b2c3d4e5f6", "isNew": false, "confidence": 0.92, "matchTier": "stored_id", // stored_id | exact | fuzzy | cross_device | new "matchedSignals": ["canvas", "webgl", "fonts", "browser", "audio"], "riskScore": 15, "riskSignals": { "vpn": false, "incognito": false, "headless": false, "bot": false, "tampered": false, "multiAccount": false, "ipChanged": true, "linkedRisk": { "vpn": false, "incognito": false, "headless": false, "bot": false } }, "identity": { "linkedDeviceCount": 2, "linkedVisitorIds": ["dvc_x9y8z7..."], "links": [{ "visitorId": "dvc_x9y8z7...", "linkType": "same_network", "confidence": 0.45 }], "previousIp": "203.0.113.5", "currentIp": "203.0.113.1" }, "signals": { "collected": 19, // out of 22 total "total": 19, "hashes": { ... }, // individual SHA-256 per signal "groups": { // 7 composite groups for matching "canvas": { "hash": "a1b2...", "signals": ["canvas"] }, "webgl": { "hash": "c3d4...", "signals": ["webgl","webglRender"] }, "audio": { "hash": "e5f6...", "signals": ["audio"] }, "screen": { "hash": "g7h8...", "signals": ["screen","clientRects"] }, "fonts": { "hash": "i9j0...", "signals": ["fonts","arabicFonts","emoji"] }, "browser": { "hash": "k1l2...", "signals": ["intlProbe","cssSupports","codecs","voices"] }, "hardware": { "hash": "m3n4...", "signals": ["hardware","mathml","browser"] } } }, "ip": "203.0.113.1", "geo": { "country": "IQ", "city": "Baghdad", "timezone": "Asia/Baghdad", "asOrganization": "..." }, "linkedDevices": 2, "processingMs": 42, "sdkVersion": "3.0.0" }
Visitor Profile