On this page

SMS & messages

Where to report a scam text

API · Pro

Coverage: A verified channel for each country where NoCall has checked one; general advice everywhere else. We only name a channel, a phone number or a website after verifying it.

Open tool
On this page

Purpose

Where to report a scam text message in your country, a report text you can copy, and how to warn other people about the number in NoCall.

Requirements

Anyone can read these guides, no account needed. Some tools require Pro, as indicated in each guide.

The reporting channel we have verified for your country, a text you can copy into your report and how to warn other people about the number.

How to use it

  1. The reporting channel we have verified for your country, a text you can copy into your report and how to warn other people about the number.

  2. If you lost money or gave card or bank details, call your bank right away and report it to the police.

  3. If you entered passwords, change them and turn on two-step verification.

  4. Tell your mobile operator about the message and the number it came from.

  5. Report the number in NoCall so that other people are warned.

  6. Keep a screenshot of the message, then delete it.

Synthetic example

Note

Invented example, not a real lookup. Do not call or open its links.

Synthetic example
https://delivery.example/notice

Interpret the result

A verified channel for each country where NoCall has checked one; general advice everywhere else. We only name a channel, a phone number or a website after verifying it.

Limitations

Warning

Scammers can make a text message show a brand’s name or someone else’s number (spoofing), and the fake can even land in the same conversation as the real messages. What gives a fake away is where its link goes.

The report text is built in your browser: nothing you type is sent or saved.

Troubleshooting

We haven’t verified an official channel for reporting phone scams in your country, so we don’t name one. The steps below apply anywhere.

Use with the API

Warning

Needs an API key and credits. Each completed call costs 1 credit, even when there is no data. An active Pro account includes 20 credits per UTC calendar month, shared by every API route and spent first; unused monthly credits do not roll over. Credits bought on your account page work without Pro and never expire.

Note

Errors are never charged: 401 invalid_api_key (missing or invalid key), 403 pro_required (no Pro credits and no purchased credits), 422 invalid input, 429 quota_exceeded (no credits left), rate_limit_exceeded or ai_busy (the AI of sms-check is at capacity), 503 tool_warming (the data is still being prepared) or tool or provider unavailable. After a 429 or 503, retry once the seconds in the Retry-After header have passed.

Steps to report a scam SMS, with the report fields tidied for copying. With country, channel is that country's verified reporting body; without country, or when there is no verified body, channel is null.

Send the JSON body to the tool's own route, or to POST /v2/tools with the tool field added. Both routes return the same result.

Endpoint
POST https://api.nocall.io/v2/sms-report
POST https://api.nocall.io/v2/tools  {"tool":"sms-report","sender":"Correos","tapped":false,"gaveData":false,"country":"ES"}

Parameters

NameTypeRequiredDescription
senderstring (≤200)NoSender name or number, as shown on the SMS.
receivedstring (≤200)NoWhen you received the SMS, as free text.
linkstring (≤200)NoLink in the message. It is never opened.
tappedbooleanNoWhether you tapped the link.
gaveDatabooleanNoWhether you entered personal or bank details.
countrystring (enum, 56)NoCountry whose verified reporting body is returned in channel. Optional: without it channel is null.
bash
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/sms-report' \
  --header "Authorization: Bearer $NOCALL_API_KEY" \
  --header 'Content-Type: application/json' \
  --header "Idempotency-Key: $REQUEST_ID" \
  --data '{"sender":"Correos","tapped":false,"gaveData":false,"country":"ES"}'

Example response (200)

This is the documented example from the API reference. Lookups use a fictional number, and aggregates and AI answers show the shape of the result, not live data.

JSON
{
  "data": {
    "tool": "sms-report",
    "result": {
      "channel": {
        "name": "INCIBE",
        "fullName": "Instituto Nacional de Ciberseguridad de España",
        "url": "https://www.incibe.es/linea-de-ayuda-en-ciberseguridad",
        "phone": "017"
      },
      "verified": true,
      "stepCodes": [
        "contact_bank",
        "change_passwords",
        "tell_operator",
        "report_number",
        "keep_screenshot"
      ],
      "reportFields": {
        "sender": "Correos",
        "received": null,
        "link": null,
        "tapped": false,
        "gaveData": false
      }
    }
  },
  "meta": {
    "requestId": "req_example",
    "unitsCharged": 1,
    "usage": {
      "periodStart": "2026-10-01",
      "unitLimit": 20,
      "unitsUsed": 3,
      "unitsRemaining": 17
    }
  }
}

Result fields (data.result)

FieldTypeDescription
channelobject | nullThat country's verified reporting body, when country is given and one exists; otherwise null.
verifiedbooleanWhether channel is a verified reporting body. false when channel is null.
stepCodesarray<"contact_bank" | "change_passwords" | "tell_operator" | "report_number" | "keep_screenshot">Codes of the five general steps that apply anywhere, in order.
reportFieldsobjectYour answers, tidied for copying into a report.

Frequently asked questions

Should I forward the text message to someone?

Only to the channel listed here, or to your bank or operator if they ask for it. Don’t forward it to friends: the link stays dangerous.

Is it worth reporting if I didn’t fall for it?

Yes. Reports help to spot a campaign sooner, and in NoCall your report warns everyone who looks up that number.

Why don’t you give a phone number for my country?

We only give channels, phone numbers and websites that we have verified for each country. If we haven’t verified one, we say so rather than guess.