SafeCaller

Developers

Enterprise Risk API

Check a phone number's spam risk and business verification before a payout, onboarding step or callback — one signed request, answered in milliseconds.

Signed & scoped

HMAC-signed requests, single-use nonces, IP allowlists and per-client scopes.

One number at a time

Built for decisions, not data mining. No batch input and no directory export.

Privacy by design

Only verified business names are returned. The numbers you check are never stored.

Request
import hashlib, hmac, json, secrets, time, requests

path = "/enterprise/v1/risk-check"
body = json.dumps({"number": "+918041234567"})
ts, nonce = str(int(time.time())), secrets.token_hex(16)
canonical = "\n".join([ts, nonce, "POST", path,
                        hashlib.sha256(body.encode()).hexdigest()])
sig = hmac.new(SECRET.encode(), canonical.encode(),
               hashlib.sha256).hexdigest()

r = requests.post("https://api.synsafecaller.com" + path, data=body,
    headers={"Content-Type": "application/json", "X-SSC-Key": KEY_ID,
             "X-SSC-Timestamp": ts, "X-SSC-Nonce": nonce,
             "X-SSC-Signature": sig})
200 OKResponse~40 ms
{
  "request_id": "5b1f0c2e-8c4d-4a6e-9d51-2f7c3a9e1b20",
  "number": "+918041234567",
  "verification": {
    "status": "verified_business",
    "business_name": "Acme Bank",
    "purpose": "support"
  },
  "risk": { "level": "low", "confidence": "high", "category": null },
  "ttl_seconds": 3600,
  "v": 1
}

What you get

verification.status
verified_business, claimed or unverified
verification.business_name
Only for verified businesses — never a person's name
risk.level
unknown, low, medium, elevated or high — from community reports and burst detection
risk.category
Most reported category, e.g. loan_fraud or telemarketing

Limits & security

  • 10 requests / second per client by default
  • Monthly quota by contract
  • ±5 minute timestamp window, nonces never reused
  • Emergency numbers (112, 100, 108…) are never scored

Who it is for

  • Banks and NBFCs — verify a caller before sharing account details
  • Fintech & payments — risk-check payout and refund numbers
  • Collections & support teams — confirm a callback number is genuine

Get API access

Access is by contract with purpose limitation. Tell us about your use case and expected volume.

Talk to us — contact@synsafecaller.com

Integration guide with Python, Node.js and PHP examples is shared with approved clients.