API reference

Base URL https://fraudcheckapi.com. All responses are JSON with stable, snake_case field names. Fields are added, never renamed or removed.

Authentication

Send your key as a bearer token or the X-Api-Key header.

curl https://fraudcheckapi.com/v1/screen \
  -H "X-Api-Key: fck_live_…" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]"}'
POST/v1/screen

Full composite screen. At least one of ip, email, phone, shipping_country is required.

request
{
  "ip": "203.0.113.9",
  "email": "[email protected]",
  "phone": "+14045551234",
  "shipping_country": "US"
}
200 response
{
  "score": 62,
  "email": {
    "is_disposable": true,
    "domain_has_mx": true
  },
  "reasons": ["DISPOSABLE_EMAIL"]
}

À-la-carte endpoints

Same checks, one family at a time.

MethodPathReturns
GET/v1/ip/{ip}IP checks + location block
GET/v1/geo/{ip}Full IP geolocation
GET/v1/email/{address}Email checks
GET/v1/phone/{number}Phone checks

Append ?format=xml or ?format=csv to any endpoint for content negotiation (JSON is the default).

GET/v1/geo/{ip}

Full IP geolocation. Available on every plan — limited by volume and rate only. Returns location data, not a verdict. Non-routable addresses come back with bogon: true and a scope label instead of a location.

GET /v1/geo/8.8.8.8
curl https://fraudcheckapi.com/v1/geo/8.8.8.8 \
  -H "X-Api-Key: fck_live_…"
200 response
{
  "ip": "8.8.8.8",
  "version": 4,
  "scope": "public",
  "bogon": false,
  "country_code": "US",
  "country_name": "United States",
  "region": "California",
  "city": "Mountain View",
  "latitude": 37.751,
  "longitude": -97.822,
  "timezone": "America/Chicago",
  "asn": 15169,
  "org": "GOOGLE"
}

Reason codes

Stable codes returned in reasons[]. A representative set:

DISPOSABLE_EMAIL EMAIL_NO_MX ROLE_ACCOUNT HIGH_RISK_TLD PHONE_INVALID PHONE_VOIP SANCTIONED_COUNTRY FATF_HIGH_RISK COUNTRY_MISMATCH TOR_EXIT_NODE DATACENTER_IP CLOUD_HOSTING_IP

Errors & rate limits

Errors return a JSON body of { "code": "…", "message": "…" } with a stable machine-readable code. 401 invalid_key · 400 invalid_request / missing_input / invalid_ip · 403 ip_not_allowed · 429 rate_limited / quota_exceeded / spend_cap_reached.

Inputs carry generous size limits — email 254, phone 32, ip 1024 (enough for a forwarded-for chain), and a 256 KB request body. Anything longer returns 400 invalid_request naming the field. Your dashboard docs list the full table.

Check results are derived from publicly available databases and are provided as-is. We are not responsible for their accuracy or completeness — don't treat them as fact; use them to inform your own judgement.