The fraud detection API.

One call at signup, login, or checkout. Back comes a verdict, scored risks, and 60+ signals about the device, email, phone, and network behind the request.

Two calls, wired in a day.

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 start
Client
import Rupt from "@ruptjs/client";

const rupt = new Rupt({ clientId: "your_client_id" });

const response = await rupt.evaluate.login({
  user: "USER_ID",
  email: "EMAIL",
});
Server
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
}

Risks you can act on.

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
The evaluation
{
  "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"]
    }
  ]
}

How do you want to work with Rupt?

Book a demo to see Rupt against your use case, or log in to your dashboard.