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
- Référence de GET /v1/lookup/:ipRéférence complète des champs pour le point de terminaison de recherche d'IP arbitraire.
- AuthentificationClés publiables ou secrètes, restriction par origine et limites de débit.
- Détection de déplacement impossibleComparer la localisation déduite de l'IP d'une connexion avec le point précédemment enregistré pour cet utilisateur.
- Détection de risque de connexionUtiliser les changements de localisation déduits de l'IP pour orienter la revue des connexions, une fois l'accès à la vérification de risque confirmé.