SMS et messages
Vérifier si un SMS est une arnaque
Couverture: Résultat indicatif fondé sur des signaux automatiques, et non sur une vérification de l’expéditeur. Aucun résultat ne garantit qu’un message est sûr.
Ouvrir l’outilSur cette page
Objectif
Envoyez une capture : nous vous disons si c'est une arnaque, qui est usurpé et que faire.
Prérequis
Offre de l’outil: Pro
Tout le monde peut lire ces guides, sans compte. Certains outils nécessitent Pro, comme indiqué dans chaque guide.
Activez NoCall Pro pour faire analyser par l’IA l’expéditeur et le message, ou une capture du SMS.
Mode d’emploi
Collez ici le SMS suspect
ou collez l’expéditeur et le message
Analyser une capture de SMS
Analyser PRO
Lisez les champs disponibles avec leurs limites. Un résultat vide ne prouve pas la sécurité et n’identifie personne.
Exemple fictif
Exemple inventé, pas une recherche réelle. N’appelez pas et n’ouvrez pas ses liens.
DHL : Dernier avertissement. Votre colis est bloqué. Action requise sur https://parcel.exampleInterpréter le résultat
Suspect
Sûr
À vérifier
Aucune donnée
Confiance
Lisez les champs disponibles avec leurs limites. Un résultat vide ne prouve pas la sécurité et n’identifie personne.
Limites
L’expéditeur et le message ne sont envoyés de façon sécurisée pour analyse à distance que lorsque vous appuyez sur le bouton. Aucun accès à la messagerie ni action automatique.
Seule la capture choisie est envoyée pour cette analyse et NoCall ne la conserve pas.
Résultat indicatif fondé sur des signaux automatiques, et non sur une vérification de l’expéditeur. Aucun résultat ne garantit qu’un message est sûr.
Résoudre un problème
Saisissez le message ou ajoutez une capture.
Nous n’avons pas pu lire l’image. Essayez une autre capture (JPG, PNG ou WebP).
La capture est trop lourde. Essayez-en une plus petite.
Votre session a expiré. Reconnectez-vous.
Trop de requêtes. Réessayez plus tard.
Utiliser avec l’API
Nécessite une API key et des crédits. Chaque appel abouti coûte 1 crédit, même sans données. Un compte Pro actif inclut 20 crédits par mois calendaire UTC, partagés entre toutes les routes de l’API et consommés en premier ; les crédits mensuels non utilisés ne sont pas reportés. Les crédits achetés sur la page de votre compte fonctionnent sans Pro et n’expirent jamais.
Les erreurs ne sont jamais facturées : 401 invalid_api_key (clé absente ou invalide), 403 pro_required (ni crédits Pro ni crédits achetés), 422 entrée invalide, 429 quota_exceeded (plus de crédits), rate_limit_exceeded ou ai_busy (l’IA de sms-check est à pleine capacité), 503 tool_warming (les données sont encore en préparation) ou tool ou fournisseur indisponible. Après un 429 ou un 503, réessayez une fois écoulées les secondes indiquées dans l’en-tête Retry-After.
Le message est analysé par IA. Seuls le texte masqué (sans numéros de téléphone, adresses e-mail ni données de carte ou bancaires), les caractéristiques qui en sont tirées, le type d’expéditeur, le pays facultatif et la langue parviennent au modèle, et les appels à l’API n’alimentent jamais les données communautaires sur les campagnes. L’IA est limitée à 20 appels par minute, dont 5 par compte ; lorsqu’elle est occupée, la réponse est 429 ai_busy, qui n’est pas facturée.
Analyse par IA d’un SMS : allow ou suspicious, avec la confiance du modèle dans ce verdict (0–100) et une brève justification. Seuls le texte masqué, les caractéristiques qui en sont tirées, le type d’expéditeur, le pays facultatif et la langue parviennent au modèle.
Envoyez le corps JSON à la route propre au tool, ou à POST /v2/tools en ajoutant le champ tool. Les deux routes renvoient le même résultat.
POST https://api.nocall.io/v2/sms-check
POST https://api.nocall.io/v2/tools {"tool":"sms-check","message":"Your parcel is held. Pay the fee at https://example.invalid/pay","sender":"Correos","language":"en","country":"GB"}Paramètres
| Nom | Type | Obligatoire | Description |
|---|---|---|---|
| message | string (1–4000) | Oui | Texte du SMS à analyser. Les numéros de téléphone, adresses e-mail et données de carte et bancaires sont masqués avant que l’IA ne le voie. |
| sender | string (≤120) | Non | Nom ou numéro de l’expéditeur affiché sur le SMS. Seul son type (nom de marque, numéro court, numéro…) parvient à l’IA. |
| language | string (enum, 33) | Non (par défaut: "en") | Langue de la justification. |
| country | string (enum, 55) | Non | Pays où le SMS a été reçu, mentionné dans l’analyse de l’IA. Facultatif : sans lui, le pays est inconnu. |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/sms-check' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"message":"Your parcel is held. Pay the fee at https://example.invalid/pay","sender":"Correos","language":"en","country":"GB"}'import json
import os
import urllib.request
import uuid
api_key = os.environ.get('NOCALL_API_KEY')
if not api_key:
raise SystemExit('Set NOCALL_API_KEY')
request = urllib.request.Request(
'https://api.nocall.io/v2/sms-check',
method='POST',
data=json.dumps({'message': 'Your parcel is held. Pay the fee at https://example.invalid/pay', 'sender': 'Correos', 'language': 'en', 'country': 'GB'}).encode(),
headers={
'Authorization': 'Bearer ' + api_key,
'Content-Type': 'application/json',
'Idempotency-Key': str(uuid.uuid4()),
},
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
print(result['data']['result'], result['meta']['unitsCharged'])import { randomUUID } from 'node:crypto';
const requestId = randomUUID();
const apiKey = process.env.NOCALL_API_KEY;
if (!apiKey) throw new Error('Set NOCALL_API_KEY');
const response = await fetch('https://api.nocall.io/v2/sms-check', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ message: 'Your parcel is held. Pay the fee at https://example.invalid/pay', sender: 'Correos', language: 'en', country: 'GB' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);Exemple de réponse (200)
Il s’agit de l’exemple documenté dans la référence de l’API. Les recherches utilisent un numéro fictif ; les agrégats et les réponses de l’IA montrent la structure du résultat, pas des données réelles.
{
"data": {
"tool": "sms-check",
"result": {
"verdict": "suspicious",
"confidence": 80,
"reason": "Unexpected payment request with a link."
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}Champs du résultat (data.result)
| Champ | Type | Description |
|---|---|---|
| verdict | "allow" | "suspicious" | Verdict de l’analyse IA. |
| confidence | integer (0–100) | La confiance du modèle dans le verdict, de 0 à 100. |
| reason | string (≤160) | Brève justification du verdict, 160 caractères maximum. |
