Guides

Stop resource abuse

Catch free-tier farming of AI tokens, API calls, credits or any other metered resource.

Your own limits stop one account from using too much. They can't see one person running ten free accounts. The Usage Screening scenario compares each account's usage with the accounts linked to it (same device, look-alike email, payment method or phone), with its age and with its own pace.

You keep counting usage and enforcing limits as you do today. isCredible only needs a snapshot now and then.

Send usage with any verify call#

Add a usage object (or an array, one per metric) with the user's current total and limit:

const result = await iscredible.verify(
  {
    eventType: "usage",
    userId: user.id,
    deviceId: session.deviceId,
    ip: req.ip,
    accountCreatedAt: user.createdAt,
    usage: { metric: "ai_tokens", used: 85000, limit: 100000, window: "month" }
  },
  { scenarioId: "SYS_USAGE_SCREENING_001" }
);

There are no special moments to remember. Any timing works: more often just means fresher data.

Let the SDK pace it#

Each answer says when to check again: usage[].recheckAfter holds a usage amount and a time, whichever comes first. Trusted users get long gaps; risky users short ones. The SDK applies this for you, so you can call it before every expensive action and it only reaches the API when needed:

const { action, reasons } = await iscredible.checkUsage(
  user.id,
  { metric: "ai_tokens", used: tokensUsed, limit: 100000 },
  { deviceId: session.deviceId, ip: req.ip, accountCreatedAt: user.createdAt }
);
if (action === "DENY") return res.status(429).json({ error: "Free limit reached" });

Routine approved checks don't appear in your Verifications list; anything flagged does.

Suggested handling#

DecisionSuggested action
APPROVEContinue
CHALLENGEAsk for phone verification or a card before more free usage
REVIEWSlow the account down and take a look
DENYStop free usage; offer the paid plan

Link accounts at signup too

Usage Screening recognises linked accounts from devices, email look-alikes, payment methods and phones seen on your account. Sending signups through the Verify API with a deviceId makes those links stronger.