ScamVerify™
Text

Text Message Analysis

Analyze a text message (SMS) for scam indicators. Extracts embedded URLs and phone numbers, performs sub-lookups on each, detects scam patterns via AI, and returns a unified risk score. **How it works:** 1. AI analyzes message content for scam patterns (urgency, impersonation, social engineering) 2. Extracts up to 3 URLs and 3 phone numbers from the message 3. Performs full Phone and URL lookups on extracted items 4. Combines AI analysis (60% weight) with sub-lookup results (40% weight) **Quota:** Consumes 1 text quota. Extracted phone/URL sub-lookups do NOT consume additional quota.

POST
/text/analyze

Analyze a text message (SMS) for scam indicators. Extracts embedded URLs and phone numbers, performs sub-lookups on each, detects scam patterns via AI, and returns a unified risk score.

How it works:

  1. AI analyzes message content for scam patterns (urgency, impersonation, social engineering)
  2. Extracts up to 3 URLs and 3 phone numbers from the message
  3. Performs full Phone and URL lookups on extracted items
  4. Combines AI analysis (60% weight) with sub-lookup results (40% weight)

Quota: Consumes 1 text quota. Extracted phone/URL sub-lookups do NOT consume additional quota.

Authorization

BearerAuth
AuthorizationBearer <token>

API key from your Developer Dashboard. Keys start with sv_live_ (production) or sv_test_ (test mode).

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://scamverify.ai/api/v1/text/analyze" \  -H "Content-Type: application/json" \  -d '{    "message": "URGENT: Your bank account has been compromised! Click here to verify: https://bank-secure-login.example.com/verify Call 1-800-555-0199 immediately.",    "from_number": "+18005550199"  }'
{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "message_hash": "string",
  "risk_score": 100,
  "verdict": "safe",
  "confidence": 1,
  "explanation": "string",
  "red_flags": [
    "string"
  ],
  "scam_type": "string",
  "extracted": {
    "phone_numbers": [
      "string"
    ],
    "urls": [
      "string"
    ]
  },
  "sub_lookups": {
    "phones": [
      {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "phone_number": "string",
        "normalized": "string",
        "risk_score": 100,
        "verdict": "safe",
        "confidence": 1,
        "explanation": "string",
        "signals": {
          "ftc_complaints": 0,
          "ftc_most_recent": "2019-08-24",
          "ftc_categories": [
            "string"
          ],
          "fcc_complaints": 0,
          "carrier": "string",
          "line_type": "landline",
          "caller_name": "string",
          "robocall_flagged": true,
          "high_risk_carrier": true,
          "community_reports": 0,
          "community_scam_rate": 0
        },
        "sources_checked": [
          "string"
        ],
        "cached": true,
        "cache_expires_at": "2019-08-24T14:15:22Z",
        "created_at": "2019-08-24T14:15:22Z"
      }
    ],
    "urls": [
      {
        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
        "url": "string",
        "domain": "string",
        "risk_score": 100,
        "verdict": "safe",
        "confidence": 1,
        "explanation": "string",
        "signals": {
          "domain_age_days": 0,
          "registrar": "string",
          "ssl_issuer": "string",
          "ssl_age_days": 0,
          "redirect_count": 0,
          "brand_impersonation": {
            "detected": true,
            "brand": "string",
            "confidence": 0
          },
          "google_web_risk": "string",
          "urlhaus_listed": true,
          "threatfox_listed": true,
          "ipqs_risk_score": 0,
          "community_reports": 0
        },
        "sources_checked": [
          "string"
        ],
        "cached": true,
        "cache_expires_at": "2019-08-24T14:15:22Z",
        "created_at": "2019-08-24T14:15:22Z"
      }
    ]
  },
  "unified_risk_score": 100,
  "sources_checked": [
    "string"
  ],
  "cached": true,
  "created_at": "2019-08-24T14:15:22Z"
}
{
  "error": {
    "code": "validation_error",
    "message": "Invalid request body",
    "details": {
      "issues": [
        {
          "field": "phone_number",
          "message": "phone_number is required"
        }
      ]
    }
  }
}

{
  "error": {
    "code": "missing_api_key",
    "message": "Authorization header is required. Use 'Bearer sv_live_...' format."
  }
}

{
  "error": {
    "code": "quota_exhausted",
    "message": "Monthly phone quota exhausted. Upgrade your plan for more lookups.",
    "upgrade_url": "https://scamverify.ai/settings/api"
  }
}
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded. Please wait before making another request.",
    "retry_after": 12
  }
}
{
  "error": {
    "code": "internal_error",
    "message": "An unexpected error occurred. Please try again later."
  }
}