Free tool · signup

Would you let this signup in?

Fill in what you have. One verdict, with every reason behind it.

Your result prints here.Free, no signup, 40 checks a day per visitor.
From your code

The same check, one API call.

Send it from your server and read risk.verdict. Costs 3 credits; 1,000 free each month.

API reference →

curl https://veqen-app.com/v1/signup/check \
  -H "Authorization: Bearer $VEQEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "jane@example.com", "ip": "185.220.101.1", "phone": "+14155552671"}'
import os, requests

r = requests.post(
    "https://veqen-app.com/v1/signup/check",
    headers={"Authorization": f"Bearer {os.environ['VEQEN_API_KEY']}"},
    json={"email": "jane@example.com", "ip": "185.220.101.1", "phone": "+14155552671"},
    timeout=10,
)
result = r.json()
print(result["risk"]["verdict"], result["risk"]["reasons"])
const res = await fetch("https://veqen-app.com/v1/signup/check", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.VEQEN_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"email": "jane@example.com", "ip": "185.220.101.1", "phone": "+14155552671"}),
});
const result = await res.json();
console.log(result.risk.verdict, result.risk.reasons);
Questions

About the signup risk checker

What do admit, review and refuse mean?

Admit: let them straight in. Review: add friction such as email or phone verification, or hold rewards until they're verified. Refuse: block, or ask for a different email or payment method.

Which IP address should I send?

The visitor's IP as your server sees it (behind a proxy, the first address in X-Forwarded-For that your proxy added), never one reported by the browser.

Is this the same as a fraud score from a payments company?

No. This runs before any payment, on the details a person gives at signup, to stop fake and throwaway accounts early.

Related tools