SMS e messaggi
Controlla se un SMS è una truffa
Copertura: Risultato indicativo basato su segnali automatici, non sulla verifica del mittente. Nessun risultato garantisce che un messaggio sia sicuro.
Apri lo strumentoIn questa pagina
A cosa serve
Carica uno screenshot: ti diciamo se è una truffa, chi viene impersonato e cosa fare.
Requisiti
Piano dello strumento: Pro
Chiunque può leggere queste guide, senza account. Alcuni strumenti richiedono Pro, come indicato in ogni guida.
Attiva NoCall Pro per far analizzare all’IA il mittente e il messaggio, o uno screenshot dell’SMS.
Come usarlo
Incolla qui l’SMS sospetto
o incolla il mittente e il messaggio
Analizza uno screenshot SMS
Analizza PRO
Leggi i campi disponibili insieme ai loro limiti. Un risultato vuoto non dimostra sicurezza e non identifica una persona.
Esempio inventato
Esempio inventato, non una ricerca reale. Non chiamare e non aprire i suoi link.
DHL: Ultimo avviso. Il tuo pacco è bloccato. Azione richiesta su https://parcel.exampleInterpretare il risultato
Sospetto
Sicuro
Da verificare
Nessun dato
Affidabilità
Leggi i campi disponibili insieme ai loro limiti. Un risultato vuoto non dimostra sicurezza e non identifica una persona.
Limiti
Solo quando premi il pulsante, mittente e messaggio vengono inviati in modo sicuro per l’analisi remota. Nessun accesso alla posta né azione automatica.
Solo lo screenshot scelto viene inviato per questa analisi e NoCall non lo conserva.
Risultato indicativo basato su segnali automatici, non sulla verifica del mittente. Nessun risultato garantisce che un messaggio sia sicuro.
Risoluzione dei problemi
Scrivi il messaggio o aggiungi uno screenshot.
Non siamo riusciti a leggere l’immagine. Prova con un altro screenshot (JPG, PNG o WebP).
Lo screenshot è troppo grande. Provane uno più piccolo.
La tua sessione è scaduta. Accedi di nuovo.
Troppe richieste. Riprova più tardi.
Usare con l’API
Richiede una API key e dei crediti. Ogni chiamata completata costa 1 credito, anche quando non ci sono dati. Un account Pro attivo include 20 crediti per mese solare UTC, condivisi da tutte le rotte API e consumati per primi; i crediti mensili non usati non passano al mese successivo. I crediti acquistati nella pagina del tuo account funzionano senza Pro e non scadono mai.
Gli errori non vengono mai addebitati: 401 invalid_api_key (chiave mancante o non valida), 403 pro_required (nessun credito Pro e nessun credito acquistato), 422 input non valido, 429 quota_exceeded (crediti esauriti), rate_limit_exceeded o ai_busy (l’IA di sms-check è al limite della capacità), 503 tool_warming (i dati sono ancora in preparazione) o tool o provider non disponibile. Dopo un 429 o un 503, riprova quando sono trascorsi i secondi indicati nell’intestazione Retry-After.
Il messaggio viene analizzato dall’IA. Al modello arrivano solo il testo oscurato (senza numeri di telefono, indirizzi email e dati di carte o bancari), le caratteristiche ricavate da esso, il tipo di mittente, il paese facoltativo e la lingua, e le chiamate API non alimentano mai i dati delle campagne della community. L’IA è limitata a 20 chiamate al minuto, di cui 5 per account; quando è occupata la risposta è 429 ai_busy, che non viene addebitata.
Analisi IA di un SMS: allow o suspicious, con la confidenza del modello in quel verdetto (0–100) e una breve motivazione. Al modello arrivano solo il testo oscurato, le caratteristiche ricavate da esso, il tipo di mittente, il paese facoltativo e la lingua.
Invia il corpo JSON alla rotta specifica del tool, oppure a POST /v2/tools aggiungendo il campo tool. Entrambe le rotte restituiscono lo stesso risultato.
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"}Parametri
| Nome | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| message | string (1–4000) | Sì | Testo dell’SMS da analizzare. Numeri di telefono, indirizzi email e dati di carte e bancari vengono oscurati prima che l’IA lo veda. |
| sender | string (≤120) | No | Nome o numero del mittente mostrato nell’SMS. All’IA arriva solo il suo tipo (nome di marchio, numero breve, numero…). |
| language | string (enum, 33) | No (predefinito: "en") | Lingua della motivazione. |
| country | string (enum, 55) | No | Paese in cui è stato ricevuto l’SMS, indicato nell’analisi dell’IA. Facoltativo: senza di esso il paese è sconosciuto. |
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);Esempio di risposta (200)
Questo è l’esempio documentato nel riferimento API. Le ricerche usano un numero fittizio, mentre aggregati e risposte dell’IA mostrano la struttura del risultato, non dati reali.
{
"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
}
}
}Campi del risultato (data.result)
| Campo | Tipo | Descrizione |
|---|---|---|
| verdict | "allow" | "suspicious" | Verdetto dell’analisi IA. |
| confidence | integer (0–100) | La confidenza del modello nel verdetto, da 0 a 100. |
| reason | string (≤160) | Breve motivazione del verdetto, fino a 160 caratteri. |
