Know the device behind every request
A browser agent, a server API and a dashboard. Recognise returning devices, flag bots and spoofing, and decide on your own server.
How an identification works
From the browser to your decision in one round trip.
Collect
The browser agent gathers more than 100 device signals in the background and sends a report of about a kilobyte.
What the agent collects →Identify
The server turns the stable signals into a visitor ID, recognises returning devices and sets the smart signals.
The flags and the score →Decide
The browser only gets a request ID. Your server reads the full event with its secret key and decides.
Read it from your server →
Four parts, one event
Each has its own page; together they make the event your server reads.
- Identification A visitor ID that holds through incognito, cleared cookies, browser updates and new accounts, matched in order and honest about its confidence.
- Smart signals Bots, VPNs, Tor, incognito, tampering and virtual machines as flags on every event, with a risk score and a bot verdict worked out on the server.
- Dashboard Events as they arrive, one page per event, the external IDs that share a device, webhook deliveries and this month's usage.
- Integrations Plain REST with one header, a typed Node client, an MCP server, signed webhooks and custom domains.
One call on your server
The browser hands your server a request ID. One GET with the secret key returns the whole event, and the flags never reach the browser.
- Visitor ID
- The device, however it comes back.
- Risk score
- The detected signals' weights added up, a number to start from.
- Bot
- bad, good or not_detected.
- Detected signals
- Every smart signal that fired.
const event = await fetch(`https://api.zeno.id/events/${requestId}`, {
headers: { 'Auth-API-Key': process.env.FP_SECRET_KEY },
}).then(response => response.json())
event.visitorId // "q1yLOPpzvOstEQCFQQxE"
event.riskScore // 5
event.bot // "not_detected"
event.detected // ["vpn", "incognito"]Identify your first visitor today
Install the agent, read the event on your server, and you're done.