Watch-IP

Référence de l'API de détection de déplacement impossible

POST/v1/risk/check

Compare la position résolue d'une IP fournie à une base de référence stockée par utilisateur, et classe la vitesse de déplacement impliquée. Un signal brut pour votre propre traitement de la fraude, pas un verdict final — contactez-nous pour confirmer la disponibilité avant toute intégration ; l'application indépendante d'un forfait de risque et la disponibilité du paiement n'ont pas été vérifiées.

Authentification

Fournissez une clé secrète via Authorization: Bearer YOUR_SECRET_KEY, le même type de clé que les points de terminaison de recherche. Envoyez un corps JSON avec userId, ip, et un booléen optionnel commit (true par défaut ; réglez-le sur false pour une vérification spéculative qui ne doit pas modifier la base de référence stockée).

Champs de la réponse

risk
low, medium, ou high.
impossibleTravel
Raccourci booléen indiquant si la vitesse implicite entre la position précédente et la position actuelle dépasse une vitesse de déplacement plausible.
distanceKm, impliedSpeedKmh, elapsedSeconds
La distance et le temps entre l'observation précédente et l'observation actuelle, et la vitesse que cela implique. Null lors de la toute première vérification d'un utilisateur, lorsqu'il n'y a aucune position précédente à comparer.
previousLocation
country, latitude, longitude et observedAt pour la base de référence stockée avant cet appel. Null s'il s'agit de la toute première vérification pour ce userId.
currentLocation
country, latitude et longitude pour l'ip que vous avez fournie lors de cet appel.

Erreurs

400
Adresse IP malformée ou userId manquant.
401
Clé API manquante ou invalide.
403
Une clé publiable a été utilisée au lieu d'une clé secrète.
422
L'IP fournie n'a pas pu être résolue en une position.
429
Limite de débit dépassée pour la fenêtre d'une minute en cours.

Exemple

Requête

curl https://api.watch-ip.com/v1/risk/check \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"userId": "u_123", "ip": "203.0.113.1"}'

Réponse

{
  "risk": "high",
  "impossibleTravel": true,
  "distanceKm": 8843.2,
  "impliedSpeedKmh": 4421.6,
  "elapsedSeconds": 7200,
  "previousLocation": { "country": "FR", "latitude": 48.8566, "longitude": 2.3522, "observedAt": "2026-09-06T12:00:00.000Z" },
  "currentLocation": { "country": "US", "latitude": 30.2672, "longitude": -97.7431 }
}

Limites

La v1 ne stocke qu'une seule position la plus récente par utilisateur, pas une fenêtre d'historique — attendez-vous à des faux positifs en cas de bascule rapide de VPN ou de changement d'IP sur un réseau mobile, car il n'existe pour l'instant aucune suppression tenant compte des VPN/centres de données. Traitez le résultat comme un signal brut, pas un verdict final. Comme ce point de terminaison stocke une position liée à un userId au-delà d'un seul cycle requête/réponse, son utilisation fait de Watch-IP un sous-traitant de ces données pour votre compte — voir l'Accord de traitement des données.

Pages associées