お使いのスタックに合わせて設計
ヘッダー1つのシンプルなREST、型付きNodeクライアント、MCPサーバー、署名付きwebhook、カスタムドメイン。必要でなければ、サーバーに何もインストールする必要はありません。
始める5つの方法
同じイベントを、シェル、コード、アシスタント、プッシュのいずれからでも。
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' })どのページにもエージェント
フォームが開いたときに開始し、ユーザーが操作したらrequest IDを要求します。バックグラウンドで動作し、ページをブロックすることはありません。
- 依存関係なし
- 試すには script タグとして /agent.js を使用するか、自社ドメイン経由で最新のエージェントを取得する小さな npm ローダーを使用します。
- あらゆるフレームワーク
- React、Svelte、Vue、Next.js、Nuxt、Angular、またはなし。
- 約1キロバイト
- 送信されるレポートです。WebRTCのネットワークアドレスは読み取りません。
- キャッシュ済み
- 結果はセッション中保持できるので、ログインとその後のチェックアウトで識別は1回で済みます。
<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>データはあなた次第
届くデータ要求に対応するために構築。
EU内でホスト
イベントは、削除するまで、または選択した場合は1年、3年、5年間、AWS eu-west-1に保存されます。
1回の呼び出しで外部IDを削除
外部IDを削除すると、そのイベントとデバイスリンクがすべて削除されます。データリクエストや解約したアカウント向けです。
ブラウザが調整できるものはありません
フラグがブラウザに届くことはありません。ゼロトラストモードではさらに、ブラウザはrequest IDのみを受け取ります。
最初の識別を数分で
ブラウザでは public key、サーバーでは secret key。