The client SDK runs an evaluation at the moment of the action. Your server reads it back with one GET request and gets the verdict. That is the whole integration.
SDKs for web, iOS, Android, React Native, Node, and .NET, or plain REST if you'd rather not add a dependency.
Read the quick startimport Rupt from "@ruptjs/client";
const rupt = new Rupt({ clientId: "your_client_id" });
const response = await rupt.evaluate.login({
user: "USER_ID",
email: "EMAIL",
});import { RuptAPI } from "@ruptjs/api";
const rupt = new RuptAPI("API_SECRET");
const evaluation = await rupt.getEvaluation(evaluation_id);
if (evaluation.verdict === "deny") {
// refuse the action
} Signals alone leave the interpretation to you. Every Rupt evaluation scores them into named risks, so your code branches on verdict and your fraud team reads risks without a data science project.
Policies decide when a risk becomes a challenge or a block, and you edit them in the dashboard without shipping code.
How the rules engine works{
"action": "login",
"verdict": "allow",
"user": { "rupt_id": "...", "id": "USER_ID" },
"policy": { "name": "...", "action": { "type": "allow" } },
"risks": [
{
"name": "ato",
"severity": "low",
"score": 3,
"indicators": ["new_fingerprint", "new_ip"]
}
]
}Fake accounts
Disposable emails, datacenter IPs, device reuse across signups.
Account takeover
New fingerprints, impossible travel, credential stuffing patterns.
Account sharing
Concurrent sessions and device counts that don't match one person.
Bots and AI agents
Headless browsers, automation frameworks, and LLM-driven agents.
Multiaccounting
One person behind many accounts, even across browsers.
Promo and referral abuse
Repeat trials, self-referrals, and coupon farming.
Book a demo to see Rupt against your use case, or log in to your dashboard.