API-Referenz
Anti-Fraud-API
Ein Browser-SDK für die Identifikation, signierte Webhooks für Echtzeit-Events und eine nur lesende Server API für die Historie. Alles, was Sie brauchen, um Betrug auf Geräteebene zu stoppen.
Endpunkte
@tracio/sdkIdentifizieren Sie einen Besucher im Browser mit dem Client-SDK. Gibt eine stabile Besucher-ID und ein Bot-Verdict ohne Server-Roundtrip zurück. Der öffentliche Schlüssel kann gefahrlos in clientseitigem Code ausgeliefert werden.
Anfrage
import { Tracio } from '@tracio/sdk'const tracio = Tracio.init({ publicKey: '5ca175fc...' })const result = await tracio.getResult()Antwort
{ "visitorId": "X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y", "bot": { "detected": false, "confidence": 2, "reasons": [] }}/webhook/tracioTRACIO liefert bei jeder Identifikation ein signiertes Event an Ihren Endpunkt. Verifizieren Sie den Header X-Tracio-Signature und reagieren Sie dann auf die flache JSON-Payload. Dies ist die Push-Schnittstelle: Sie müssen dafür nicht pollen. Wenn Sie einen Besuch doch im Nachhinein lesen müssen, antwortet die Server API per requestId.
Anfrage
POST /webhook/tracio HTTP/1.1Host: your-server.comContent-Type: application/jsonX-Tracio-Payload-Version: 2X-Tracio-Event-Type: identificationX-Tracio-Signature: t=1710432000,v1=5257a869e7ecebed...Antwort
{ "version": 2, "event": "identification", "eventId": "9c1f4b2e-7d3a-4f18-8b6c-2e5a71d0c4f9:primary", "requestId": "9c1f4b2e-7d3a-4f18-8b6c-2e5a71d0c4f9", "phase": "primary", "visitorId": "X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y", "timestamp": "2026-03-12T16:00:00Z", "bot": { "result": "human", "score": 2 }, "identification": { "confidence": 0.95, "incognito": false }, "network": { "vpn": false, "proxy": false, "tor": false, "datacenter": false }, "decision": { "action": "real", "riskScore": 4 }}/.well-known/webhook-keysRufen Sie die öffentlichen Ed25519-Schlüssel der Plattform ab, mit denen Webhook-Zustellungen verifiziert werden. Diese Route benötigt keine Authentifizierung und wird fünf Minuten lang gecacht. Die kid im Signatur-Header sagt Ihnen, welcher Schlüssel zu verwenden ist.
Anfrage
curl https://api.tracio.ai/.well-known/webhook-keysAntwort
{ "keys": [ { "kid": "k1", "alg": "Ed25519", "publicKey": "MCowBQYDK2VwAyEA9tR2v1kQ..." } ]}/v1/visitors/{visitorId}Lesen Sie die Historie eines Besuchers über die Server API mit Ihrem Secret Key. Verfügbar ab dem Pro-Tarif. Das Fenster wird auf Ihren Tarif begrenzt, und das tatsächlich gelieferte Fenster wird in meta zurückgemeldet. Unterstützt Auskunftsersuchen (Auskunftsrecht) nach der DSGVO.
Anfrage
# Server API — available on the Pro plan and abovecurl "https://api.tracio.ai/v1/visitors/X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y" \ -H "Authorization: Bearer tracio_sk_XXXX...XXXX"Antwort
{ "visitorId": "X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y", "firstSeenAt": "2026-03-01T08:11:00Z", "lastSeenAt": "2026-03-16T14:22:01Z", "visits": 12, "incognitoVisits": 1, "uniqueIps": 4, "uniqueCountries": 2, "risk": { "maxRiskScore": 63, "lastDecision": "real" }, "network": { "vpnSeen": false, "proxySeen": false, "torSeen": false, "datacenterSeen": true }, "meta": { "plan": "pro", "retentionDays": 30, "from": "2026-02-14T00:00:00Z", "to": "2026-03-16T14:30:00Z" }}Authentifizierung
TRACIO verwendet drei Arten von Anmeldedaten, je eine pro Schnittstelle: einen öffentlichen Schlüssel für das Browser-SDK, einen Secret Key (tracio_sk_…), der als Authorization: Bearer an die Server API gesendet wird, und ein HMAC-Signing-Secret zur Verifikation von Webhook-Zustellungen. Der Secret Key wird im Dashboard erstellt, einmalig angezeigt und darf niemals in einen Browser gelangen — die Server API gibt bewusst keine CORS-Header zurück.
# Client SDK — public key (safe to ship in the browser)Tracio.init({ publicKey: '5ca175fc...' })# Server API — secret key, created in the dashboard and shown onceAuthorization: Bearer tracio_sk_XXXX...XXXX# Webhook verification — HMAC-SHA256 over "<t>.<rawBody>"X-Tracio-Signature: t=<unix>,v1=<hmac_sha256_hex>Rate-Limits
Die Limits gelten pro Workspace. Aufrufe der Server API werden getrennt von Identifikationen gezählt, sodass das Lesen der eigenen Historie nie das Kontingent verbraucht, für das Sie zahlen. Jede Antwort trägt X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset, bei einem 429 zusätzlich Retry-After. Die Server API ist nicht Teil des Free-Tarifs.
| Tarif | Server-API-Rate | Server API pro Tag | Webhook-Endpunkte | Abfragefenster |
|---|---|---|---|---|
| Free | Nicht enthalten | Nicht enthalten | 0 | 7 days |
| Pro | 10 req/s | 10,000 | 5 | 30 days |
| Business | 50 req/s | 100,000 | 20 | 90 days |
| Enterprise | 200 req/s | Unbegrenzt | 100 | 365 days |
Fehlercodes
Jeder Fehler kommt im selben Rahmen zurück: ein error-Objekt mit einem code als String, einer menschenlesbaren message und der requestId des fehlgeschlagenen Aufrufs.
Format der Fehlerantwort
{ "error": { "code": "rate_limited", "message": "too many requests", "requestId": "8f14e45fceea167a5a36dedd" }}Jetzt entwickeln
Holen Sie sich Ihren API-Schlüssel und senden Sie Ihre erste Identifikationsanfrage in unter 5 Minuten.