Yığınınıza uyacak şekilde tasarlandı
Tek bir header ile basit REST, tipli Node istemcisi, bir MCP sunucusu, imzalı webhook'lar ve özel alan adları. İstemezseniz sunucunuza hiçbir şey kurmanız gerekmez.
Başlamanın beş yolu
Aynı olay, bir shell, kodunuz, bir asistan veya bir push ile.
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 Tek bir header ile olayları ve ziyaretçileri okuyun, arayın ve silin.
- Sunucu SDK'sı Webhook kontrolleri ve mühürlü sonuçların açılmasıyla tipli bir Node istemcisi.
- MCP sunucusu Projenizin API'sini bir yapay zeka asistanı için araçlar olarak sunun.
- Webhook'lar Yeni her olay, imzalı olarak sunucunuza POST edilir ve yeniden denemelidir.
- Özel alan adı Ajanı kendi alt alan adınızdan tek bir DNS kaydıyla sunun, her canlı sitenin yapması gerektiği gibi.
- Mühürlü sonuçlar Sunucunuzun API'yi çağırmadan açabildiği şifreli bir sonuç.
Her sayfadaki ajan
Form açıldığında başlatın ve kullanıcı bir işlem yaptığında bir request ID isteyin. Arka planda çalışır ve sayfayı asla engellemez.
- Bağımlılık yok
- Denemek için script etiketi olarak /agent.js, veya güncel agent'ı kendi alan adınız üzerinden getiren küçük bir npm yükleyici.
- Herhangi bir framework
- React, Svelte, Vue, Next.js, Nuxt, Angular veya hiçbiri.
- Yaklaşık bir kilobayt
- Gönderdiği rapor. WebRTC ağ adreslerini asla okumaz.
- Önbellekte
- Sonuç oturum boyunca saklanabilir; böylece giriş ve ardından gelen ödeme tek bir tanımlama maliyeti oluşturur.
<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>Verileriniz, kurallarınız
Alacağınız veri isteklerine göre tasarlandı.
AB'de barındırılıyor
Olaylar, siz silinene kadar veya bu seçeneği seçerseniz 1, 3 veya 5 yıl boyunca AWS eu-west-1 bölgesinde saklanır.
Tek bir çağrıda bir external ID'yi silin
Bir external ID'yi silin; veri talebi veya kapatılan hesap için ona ait tüm olay ve cihaz bağlantıları kaldırılır.
Tarayıcının ayarlanacağı bir şey yok
Flag'ler tarayıcıya asla ulaşmaz. Zero trust modu bir adım ileri gider: tarayıcı yalnızca bir request ID alır.
İlk tanımlamanız, dakikalar içinde
Tarayıcıda public key, sunucunuzda secret key.