Zeno docs
Get API keys

Get started with device identification

Know the device behind every login, flag bots and spoofed browsers, and check it all on your server.

<script src="https://zenocdn.net/agent.js"></script>
<script>
const agent = FingerprintAgent.start({ endpoint: 'https://zenocdn.net', publicKey: 'pk_...' })

// Once the user logs in, hand the request ID to your server. A capped or
// failed identification sends none, and your server challenges the login.
agent
	.get({ externalId: user.id })
	.then(result => verifyOnServer(result.capped ? undefined : result.requestId))
	.catch(() => verifyOnServer(undefined))
</script>

How it works

  1. The agent on your page collects the browser's signals and calls the API with your public key.
  2. The API stores an event and answers with its request ID.
  3. Your page sends the request ID to your server, with the login or signup.
  4. Your server reads the event with your secret key.
  5. It decides on the event's flags, risk score, bot verdict, velocity and related IDs.

New here? Start with: Key terms Quickstart Reviewing a case without code

Building blocks

Browser agent

Typed

Collects device signals and answers with a visitor ID and a request ID.

Report size
About 1 KB
Install
Script tag or npm
Visitor ID
Usually survives incognito
Read docs

Server API

Read, search and erase events and visitors with a secret key.

Auth
Auth-API-Key header
Calls
GET, POST, PATCH, DELETE
Search filters
16
Read docs

Smart signals

Bots, VPNs, Tor, incognito, tampering and virtual machines, with a risk score.

Signals
21
Risk score
Weights 0 to 20
Velocity
5m, 1h, 24h
Read docs

All guides

From your first identification to erasing a user.