Référence API
API antifraude
Un SDK navigateur pour l'identification, des webhooks signés pour les événements en temps réel et une Server API en lecture seule pour l'historique. Tout ce qu'il vous faut pour stopper la fraude au niveau de l'appareil.
Endpoints
@tracio/sdkIdentifiez un visiteur dans le navigateur avec le SDK client. Renvoie un identifiant visiteur stable et un verdict de bot sans aller-retour serveur. La clé publique peut être livrée en toute sécurité dans le code côté client.
Requête
import { Tracio } from '@tracio/sdk'const tracio = Tracio.init({ publicKey: '5ca175fc...' })const result = await tracio.getResult()Réponse
{ "visitorId": "X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y", "bot": { "detected": false, "confidence": 2, "reasons": [] }}/webhook/tracioTRACIO délivre un événement signé à votre endpoint à chaque identification. Vérifiez l'en-tête X-Tracio-Signature, puis agissez sur le payload JSON à plat. C'est la surface push : vous n'avez pas à l'interroger. Et si vous devez relire une visite après coup, la Server API répond par requestId.
Requête
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...Réponse
{ "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-keysRécupérez les clés publiques Ed25519 de la plateforme utilisées pour vérifier les livraisons webhook. Cette route ne demande aucune authentification et est mise en cache pendant cinq minutes. Le kid dans l'en-tête de signature vous indique quelle clé utiliser.
Requête
curl https://api.tracio.ai/.well-known/webhook-keysRéponse
{ "keys": [ { "kid": "k1", "alg": "Ed25519", "publicKey": "MCowBQYDK2VwAyEA9tR2v1kQ..." } ]}/v1/visitors/{visitorId}Lisez l'historique d'un visiteur depuis la Server API avec votre clé secrète. Disponible à partir du plan Pro. La fenêtre est bornée par votre plan et celle que vous avez réellement obtenue est indiquée dans meta. Prend en charge les demandes de droit d'accès au titre du RGPD.
Requête
# Server API — available on the Pro plan and abovecurl "https://api.tracio.ai/v1/visitors/X7fh2Hg9LkMn3pQr5tBvQw3xZa9mK2pL4nR8dT6y" \ -H "Authorization: Bearer tracio_sk_XXXX...XXXX"Réponse
{ "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" }}Authentification
TRACIO utilise trois identifiants, un par surface : une clé publique pour le SDK navigateur, une clé secrète (tracio_sk_…) envoyée en Authorization: Bearer pour la Server API, et un secret de signature HMAC pour vérifier les livraisons webhook. La clé secrète est créée dans le tableau de bord, affichée une seule fois, et ne doit jamais atteindre un navigateur — la Server API ne renvoie délibérément aucun en-tête CORS.
# 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>Limites de débit
Les limites sont par espace de travail. Les appels à la Server API sont comptés séparément des identifications : relire votre propre historique ne consomme jamais le quota que vous payez. Chaque réponse porte X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset, plus Retry-After sur un 429. La Server API ne fait pas partie du plan Free.
| Plan | Débit Server API | Server API par jour | Endpoints webhook | Fenêtre de consultation |
|---|---|---|---|---|
| Gratuit | Non inclus | Non inclus | 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 | Illimité | 100 | 365 days |
Codes d'erreur
Toutes les erreurs renvoient la même enveloppe : un objet error avec un code sous forme de chaîne, un message lisible et le requestId de l'appel en échec.
Format de la réponse d'erreur
{ "error": { "code": "rate_limited", "message": "too many requests", "requestId": "8f14e45fceea167a5a36dedd" }}Commencez à développer
Obtenez votre clé API et effectuez votre première requête d'identification en moins de 5 minutes.