Imfassal biex jaqbel mal-stack tiegħek
REST sempliċi b'header wieħed, client Node tipizzat, server MCP, webhooks iffirmati u domains personalizzati. Ma hemm xejn x'tinstalla fuq is-server tiegħek sakemm ma tridx.
Ħames modi biex tidħol
L-istess avveniment, minn shell, mill-kodiċi tiegħek, minn assistent jew push.
curl "https://api.zeno.id/events/1792578564800.yU4Ety" \
-H "Auth-API-Key: sk_..."const event = await fetch(`https://api.zeno.id/events/${requestId}`, {
headers: { 'Auth-API-Key': process.env.FP_SECRET_KEY },
}).then(response => response.json())import { createClient } from '@zeno-id/server'
const fingerprint = createClient({ secretKey: process.env.FP_SECRET_KEY, endpoint: 'https://api.zeno.id' })
const event = await fingerprint.getEvent(requestId)
const page = await fingerprint.searchEvents({ externalId: user.id, signal: 'vpn' })
await fingerprint.updateEvent(requestId, { action: 'checkout' })
await fingerprint.forgetExternalId(user.id)# Your project's API as tools for Claude Code, Cursor or any MCP client.
claude mcp add zeno --env FP_SECRET_KEY=sk_... --env FP_ENDPOINT=https://api.zeno.id -- npx -y @zeno-id/mcpimport { verifyWebhook } from '@zeno-id/server'
app.post('/fingerprint', express.text({ type: 'application/json' }), (request, response) => {
if (!verifyWebhook(request.body, request.header('fingerprint-signature') ?? '', process.env.FP_WEBHOOK_SECRET)) {
return response.sendStatus(401)
}
const event = JSON.parse(request.body)
response.sendStatus(200)
})// Serve the agent and identify from a subdomain of your own site, so content
// blockers that list ours don't drop identifications. Add it in Settings ›
// Custom domain, create the one DNS record it shows, then:
import { start } from 'zeno-id'
const agent = start({ publicKey: 'pk_...', endpoint: 'https://metrics.example.com' })- Server API Aqra, fittex u ħassar avvenimenti u viżitaturi b'header wieħed.
- SDK tas-server Klijent Node tipizzat b'kontrolli tal-webhook u fetħ ta' riżultati siġillati.
- Server MCP L-API tal-proġett tiegħek bħala għodod għal assistent AI.
- Webhooks Kull avveniment ġdid jintbagħat bi POST lis-server tiegħek, iffirmat, b'tentattivi mill-ġdid.
- Dominju personalizzat Ipprovdi l-aġent minn subdominju tiegħek b'rekord DNS wieħed, kif jagħmel kull sit ħaj.
- Riżultati issiġillati Riżultat kriptat li s-server tiegħek jiftaħ mingħajr ma jsejjaħ l-API.
L-aġent f'kull paġna
Ibdieh hekk meta jinfetaħ il-formola, u itlob request ID meta l-utent jieħu azzjoni. Jaħdem fil-background u qatt ma jimblokka l-paġna.
- Ebda dipendenzi
- /agent.js bħala script tag biex tippruvah, jew loader npm żgħir li jiġbed l-aġent attwali permezz tad-dominju tiegħek.
- Kwalunkwe framework
- React, Svelte, Vue, Next.js, Nuxt, Angular, jew xejn.
- Madwar kilobyte
- Ir-rapport li jibgħat. Qatt ma jaqra l-indirizzi tan-netwerk tal-WebRTC.
- Cache
- Ir-riżultat jista' jinżamm għas-sessjoni, sabiex login u l-checkout wara jiswew identifikazzjoni waħda.
<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:
agent.get({ externalId: user.id }).then(({ requestId }) => verifyOnServer(requestId))
</script>Id-dejta tiegħek, ir-regoli tiegħek
Mibni għat-talbiet għad-dejta li tirċievi.
Ospitat fl-UE
L-avvenimenti huma maħżuna fuq AWS eu-west-1 sakemm tħassarhom, jew għal 1, 3 jew 5 snin jekk tagħżel dan.
Ħassar external ID b'sejħa waħda
Ħassar external ID u l-avvenimenti kollha u l-links tal-apparat tiegħu jitneħħew. Għal talba għad-data jew kont magħluq.
Xejn għall-browser biex jaġġusta ruħu magħha
Il-flags qatt ma jilħqux il-browser. Il-mod zero trust imur aktar 'il quddiem: il-browser jirċievi biss request ID u xejn aktar.
L-ewwel identifikazzjoni tiegħek, f'minuti
Public key fil-browser, secret key fuq is-server tiegħek.