Sukurta pagal jūsų steką
Paprastas REST su vienu antraštės lauku, tipizuotas Node klientas, MCP serveris, pasirašyti webhook ir pasirinktiniai domenai. Serveryje nieko diegti nereikia, nebent norite.
Penki būdai įeiti
Tas pats įvykis, iš shell, jūsų kodo, asistento ar 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 Skaitykite, ieškokite ir trinkite įvykius bei lankytojus su vienu header.
- Serverio SDK Tipizuotas Node klientas su webhook tikrinimu ir užantspauduotų rezultatų atidarymu.
- MCP serveris Jūsų projekto API kaip įrankiai DI asistentui.
- Webhooks Kiekvienas naujas įvykis siunčiamas POST užklausa į jūsų serverį, pasirašytas, su pakartotinais bandymais.
- Pasirinktinis domenas Agentą teikite iš savo subdomeno vienu DNS įrašu, kaip ir kiekviena veikianti svetainė.
- Užzandarinti rezultatai Šifruotas rezultatas, kurį jūsų serveris atidaro be API iškvietimo.
Agentas bet kuriame puslapyje
Paleiskite jį, kai atidaroma forma, ir paprašykite request ID, kai vartotojas atlieka veiksmą. Jis veikia fone ir niekada neblokuoja puslapio.
- Be priklausomybių
- /agent.js kaip script žymą išbandymui arba mažą npm įkroviklį, kuris gauna dabartinį agentą per jūsų domeną.
- Bet kuris framework
- React, Svelte, Vue, Next.js, Nuxt, Angular arba nė vieno.
- Maždaug kilobaitas
- Ataskaita, kurią jis siunčia. Jis niekada neskaito WebRTC tinklo adresų.
- Talpinta
- Rezultatas gali būti išsaugotas sesijai, todėl prisijungimas ir vėlesnis apmokėjimas kainuoja vieną identifikavimą.
<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>Jūsų duomenys, jūsų taisyklės
Sukurta duomenų užklausoms, kurias gausite.
Talpinama ES
Įvykiai saugomi AWS eu-west-1, kol juos ištrinsite, arba 1, 3 ar 5 metus, jei pasirinksite tai.
Ištrinkite external ID vienu iškvietimu
Ištrinkite external ID ir visi su juo susiję įvykiai bei įrenginių susiejimai bus pašalinti. Skirta duomenų užklausai ar uždarytai paskyrai.
Naršyklei nėra ko derinti
Žymos niekada nepasiekia naršyklės. Zero trust režimas eina toliau: naršyklė gauna tik request ID ir nieko daugiau.
Jūsų pirmoji identifikacija per kelias minutes
Public key naršyklėje, secret key jūsų serveryje.