---
title: "Scam message checker"
method: POST
path: "/api/v1/ai/scam-message-check"
tags: ["ai"]
---

# Scam message checker

`POST /api/v1/ai/scam-message-check`

## Request

- Base URL: `https://toolforte.com`
- URL: `https://toolforte.com/api/v1/ai/scam-message-check`
- Auth: one of:
  - HTTP bearer
  - none

Judge whether a text message, email, WhatsApp, voicemail transcript or web message is a scam. Returns a verdict (scam, suspicious or likely legitimate), a risk score, the concrete signals found with the evidence quoted from the message, what the reader should do next, and a safe reply. Knows Dutch scams (bankhelpdeskfraude, WhatsApp 'hoi mam/pap' family emergency, fake Tikkie and iDEAL links, DigiD, Belastingdienst, CJIB fines, parcel delivery fees, Marktplaats payment requests, energy refunds) as well as international phishing, tech support, investment and romance scams. Answers in the language of the message unless told otherwise. This is an AI assessment, not proof: a legitimate message can look suspicious and a scam can look clean. Costs 10 credits per call with an API key or a signed-in session, drawn from the same monthly balance as REST calls (1 credit) and renders (25). Without either, a small free demo allowance per day. Also available on the MCP server as check_scam_message.

## Request body

- object
  - `message` string, required: The message to check, pasted as received.
  - `channel` 'sms' | 'whatsapp' | 'email' | 'phone' | 'social' | 'website' | 'other', required: Where it arrived: sms, whatsapp, email, phone (a voicemail or call transcript), social, website or other.
  - `sender` string: The sender as shown: a phone number, email address or display name.
  - `language` string, required: Language for the explanation, for example en or nl. auto answers in the message's language.

## Response `200`

The tool's answer plus metering

- object
  - `ok` boolean
  - `data` object
    - `verdict` 'scam' | 'suspicious' | 'likely_legitimate', required
    - `riskScore` number, required
    - `language` string, required
    - `summary` string, required
    - `knownPattern` string, nullable, required
    - `signals` object[], required
      - `type` string, required
      - `evidence` string, required
      - `whyItMatters` string, required
    - `recommendedActions` string[], required
    - `safeReply` string, nullable, required

## Other responses

- `400`: Missing or invalid request fields
- `429`: Daily demo allowance or monthly credits used up
- `502`: The model did not return a usable answer
- `503`: AI temporarily unavailable

---

[API](https://skmtc.dev/toolforte/apis/toolforte-api.md) · [All operations](https://skmtc.dev/toolforte/apis/toolforte-api/llms.txt) · [OpenAPI document](https://skmtc.dev/toolforte/apis/toolforte-api/revisions/4d814d484dfc?raw)
