Loodud sobima teie stäkiga
Lihtne REST ühe päisega, tüübitud Node klient, MCP server, allkirjastatud webhook'id ja kohandatud domeenid. Serverisse pole midagi vaja installida, kui just ei soovi.
Viis sisenemisviisi
Sama sündmus, shellist, sinu koodist, assistendist või push-ist.
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 Lugege, otsige ja kustutage sündmusi ja külastajaid ühe headeriga.
- Serveri SDK Tüüpidega Node klient webhook-kontrollide ja suletud tulemuste avamisega.
- MCP server Teie projekti API tööriistadena tehisintellekti assistendile.
- Webhooks Iga uus sündmus saadetakse teie serverisse POST-päringuna, allkirjastatult ja uuesti proovides.
- Kohandatud domeen Serveerige agent oma alamdomeenist ühe DNS-kirjega, nagu iga toimiv veebileht peaks.
- Pitseeritud tulemused Krüpteeritud tulemus, mille teie server avab ilma API-d kutsumata.
Agent igal lehel
Käivitage see vormi avamisel ja küsige request ID-d, kui kasutaja midagi teeb. See töötab taustal ega blokeeri lehte.
- Sõltuvusteta
- /agent.js script-sildina testimiseks või väike npm-laadur, mis toob praeguse agendi läbi sinu enda domeeni.
- Mis tahes framework
- React, Svelte, Vue, Next.js, Nuxt, Angular või mitte ühtegi.
- Umbes kilobait
- Aruanne, mida see saadab. See ei loe kunagi WebRTC võrguaadresse.
- Vahemällu salvestatud
- Tulemust saab salvestada seansi jaoks, nii et sisselogimine ja sellele järgnev ostu sooritamine maksavad ühe tuvastuse.
<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>Teie andmed, teie reeglid
Loodud andmepäringute jaoks, mida saate.
Hostitud EL-is
Sündmused salvestatakse AWS eu-west-1 kuni need kustutate või 1, 3 või 5 aastaks, kui valite selle võimaluse.
Kustutage external ID ühe päringuga
Kustutage external ID ning kõik sellega seotud sündmused ja seadmeseosed kaovad. Andmepäringu või suletud konto puhul.
Brauseril pole midagi, mille järgi kohaneda
Lipud ei jõua kunagi brauserini. Zero trust režiim läheb kaugemale: brauser saab ainult request ID ja mitte midagi muud.
Esimene tuvastus paari minutiga
Public key brauseris, secret key teie serveris.