POST /v1/verify · 3 credits

At least one of email, phone, or ip must be provided. The more signals you include, the more accurate the fraud score.

Request

{
  "email": "jhon.doe@gmial.com",
  "phone": "+905321234567",
  "ip": "84.17.45.10"
}
Field Type Required Description
email string Email to include in scoring
phone string Phone to include in scoring
ip string IP to include in scoring
Note
At least one field is required.

Response

{
  "fraud_score": 65,
  "risk": "medium",
  "email": {
    "input": "jhon.doe@gmial.com",
    "valid_syntax": true,
    "score": 61,
    "deliverability": "risky",
    "credits_used": 1
  },
  "phone": {
    "input": "+905321234567",
    "valid": true,
    "country": "TR",
    "line_type": "mobile",
    "credits_used": 1
  },
  "ip": {
    "input": "84.17.45.10",
    "vpn": true,
    "abuse_score": 72,
    "credits_used": 1
  },
  "credits_used": 3
}
Field Type Description
fraud_score integer 0–100 combined fraud risk (higher = more risk)
risk enum low medium high
email EmailResult Full email result (if email provided)
phone PhoneResult Full phone result (if phone provided)
ip IpResult Full IP result (if IP provided)
credits_used integer Always 3

Example

    curl -X POST https://api.checkharbor.com/v1/verify \
      -H "X-Api-Key: chk_live_..." \
      -H "Content-Type: application/json" \
      -d '{
        "email": "jhon.doe@gmial.com",
        "ip": "84.17.45.10"
      }'
    ```
    const result = await checkharbor.verify({
      email: "jhon.doe@gmial.com",
      ip: "84.17.45.10",
    });
if (result.risk === "high") {
  // block or require additional verification
}
```

    result = client.verify(email="jhon.doe@gmial.com", ip="84.17.45.10")
if result["risk"] == "high":
    # block or require additional verification
    pass
```