Docs menuAll pages, quickstarts and this page’s contents

Sensitivity and what gets blocked

One setting decides how hard Kaidn acts on what it finds. This page says what the three choices do, which signals block on their own under each, and how several signals add up to one verdict.

The tables are generated from the live scoring configuration, so they are the numbers the API is using, not a description of them.

The three presets

A preset moves the two lines a score is compared with: the score at which an event goes to review, and the score at which it becomes block. Everything under the review line is allow. Presets are the one dial available on every plan, including Free.

presetidreview fromblock fromwhat it does
Strictstrict3560Acts harder on what it catches. Blocks VPN, proxy, Tor and datacenter IPs, temporary email and phone numbers, and automated browsers outright. Reviews any IP shared by a second account within 10 minutes, and blocks from the fifth (Apple Private Relay IPs excepted).
Balanceddefaultbalanced4070The shipped default. Blocks the clear-cut cases and sends the ambiguous middle to review.
Less strictlenient5080Fewest interventions. Cuts the review queue to about a third and blocks only clear cases.

A preset can also raise a few weights, not only the lines. That is why the table further down has a column per preset: the same signal can sit in a different place under each.

Setting one

In the dashboard, open Rules and pick a card. It applies to every event scored from then on, and the page lists what is blocked and what goes to review for your account as configured. Over the API, send the preset id with your secret key:

Terminal
curl -X PUT https://api.kaidn.io/v1/config \
  -H "x-api-key: $KAIDN_API_KEY" \
  -H "content-type: application/json" \
  -d '{"preset":"strict"}'

The preset must be one of strict, balanced, or lenient; anything else is a 400 listing them. GET /v1/config returns your current preset, every preset with its lines, and signals.block, signals.review and signals.contributes for your account as it is configured right now, custom weights included.

PUT /v1/config replaces everything you have stored. Sending only a preset on a paid account that has custom weights, thresholds or category dials removes them. Read your config first and send back what you want to keep, with the preset alongside.

What blocks, signal by signal

Every named signal, against every preset. Read a cell as “if this is the only thing found about an event”:

cellmeans
Blocks aloneOn its own it reaches the block line. One finding is enough.
Review aloneOn its own it reaches the review line, not the block line. A human look, no more.
Only with other signalsIt scores something, but not enough to decide anything. It matters only in company.
Scores nothingReported as a reason, adds nothing to the score.

One fact about a stranger is rarely enough to convict them, so a signal that decides alone is the exception. The weight column is the score each signal adds on its own under Balanced; where a preset changes it, the cell shows the new weight.

IP intelligence

Where the connection comes from: datacenter, proxy, Tor, known abuse.

SignalWeightStrictBalancedLess strict
Named VPN (NordVPN, Mullvad...)75
Blocks alone
Blocks alone
Review alone
Tor exit node75
Blocks alone
Blocks alone
Review alone
Datacenter / hosting IP60
Blocks alone
Review alone
Review alone
Proxy IP40
Blocks aloneweight 60
Review alone
Only with other signals
IP that hit our abuse trap40
Review alone
Review alone
Only with other signals
Network with a history of abuse40
Review alone
Review alone
Only with other signals
Apple Private Relay0
Scores nothing
Scores nothing
Scores nothing

Device reuse

How many other accounts have carried this same fingerprint, and how many of them were on the same network.

SignalWeightStrictBalancedLess strict
Same device and network on many accounts55
Review alone
Review alone
Review alone
Device shared by many accounts45
Review alone
Review alone
Only with other signals
Same device and network on several accounts40
Review alone
Review alone
Only with other signals
Device shared by several accounts25
Only with other signals
Only with other signals
Only with other signals
Same device and network on another account25
Only with other signals
Only with other signals
Only with other signals
Device also used by another account15
Only with other signals
Only with other signals
Only with other signals

Device integrity

Automation and anti-detect tells: headless, emulated, tampered, spoofed.

SignalWeightStrictBalancedLess strict
Headless / automated browser50
Blocks aloneweight 60
Review alone
Review alone
Browser fingerprint APIs tampered with45
Review alone
Review alone
Only with other signals
Fingerprint noise added (spoofing)45
Review alone
Review alone
Only with other signals
Browser engine contradicts its user agent40
Review alone
Review alone
Only with other signals
Emulated or virtual-machine browser40
Review alone
Review alone
Only with other signals
Connection fingerprint of a known spoofing tool35
Review alone
Only with other signals
Only with other signals
Browser contradicts itself across contexts30
Only with other signals
Only with other signals
Only with other signals
Operating system contradicts the user agent30
Only with other signals
Only with other signals
Only with other signals
Browser claims a different OS than it runs on25
Only with other signals
Only with other signals
Only with other signals
Tracker call forged by a script20
Only with other signals
Only with other signals
Only with other signals

Android app integrity

What the phone itself reports: emulator, root, cloning, instrumentation, and hardware that outlived its app identity.

SignalWeightStrictBalancedLess strict
Android emulator50
Review alone
Review alone
Review alone
Frida / Xposed instrumentation50
Review alone
Review alone
Review alone
App-cloning container (Parallel Space...)45
Review alone
Review alone
Only with other signals
Device reset or re-registered under a new identity45
Review alone
Review alone
Only with other signals
Failed Google Play Integrity check45
Review alone
Review alone
Only with other signals
Rooted Android device40
Review alone
Review alone
Only with other signals
GPS-spoofing app installed20
Only with other signals
Only with other signals
Only with other signals
App not installed from Google Play15
Only with other signals
Only with other signals
Only with other signals
Debug build of the app15
Only with other signals
Only with other signals
Only with other signals
Device clock set ahead15
Only with other signals
Only with other signals
Only with other signals
VPN switched on in the device10
Only with other signals
Only with other signals
Only with other signals

Session behaviour

What changed mid-session: a VPN dropping, the IP hopping, impossible travel.

SignalWeightStrictBalancedLess strict
Browser connection fingerprint changed mid-session45
Review alone
Review alone
Only with other signals
Impossible travel between countries40
Review alone
Review alone
Only with other signals
VPN dropped and exposed the real IP40
Review alone
Review alone
Only with other signals
Started hiding behind a proxy mid-session30
Only with other signals
Only with other signals
Only with other signals
One device hopping across many IPs25
Only with other signals
Only with other signals
Only with other signals

Velocity

Bursts of attempts from one IP or device inside the window.

SignalWeightStrictBalancedLess strict
Burst of events from one IP75
Blocks aloneweight 65
Blocks alone
Blocks aloneweight 85
Many events from one IP45
Review aloneweight 40
Review alone
Review aloneweight 55
Burst of events from one device25
Only with other signals
Only with other signals
Only with other signals

Email integrity

Disposable domains, aliasing, deliverability and mail-host infrastructure.

SignalWeightStrictBalancedLess strict
Email domain on an abuse list45
Blocks aloneweight 60
Review alone
Only with other signals
Temporary / disposable email45
Blocks aloneweight 60
Review alone
Only with other signals
Email domain with no mail server40
Review alone
Review alone
Only with other signals
Catch-all mail domain30
Only with other signals
Only with other signals
Only with other signals
Mail server on a generic cloud host25
Only with other signals
Only with other signals
Only with other signals
Mail server run by a temp-mail service25
Only with other signals
Only with other signals
Only with other signals
Mistyped email domain (gmail.con)25
Only with other signals
Only with other signals
Only with other signals
Gibberish email address20
Only with other signals
Only with other signals
Only with other signals
Malformed email address20
Only with other signals
Only with other signals
Only with other signals
Email alias trick (dots, googlemail.com)15
Only with other signals
Only with other signals
Only with other signals
Plus-tagged email (name+tag@)10
Only with other signals
Only with other signals
Only with other signals

Mailbox reuse

How many accounts share one inbox, counted on the canonical address.

SignalWeightStrictBalancedLess strict
Same inbox behind many accounts65
Blocks alone
Review alone
Review alone
Same inbox behind several accounts55
Review alone
Review alone
Review alone
Same inbox behind another account45
Review alone
Review alone
Only with other signals

Phone intelligence

Validity, VOIP and virtual lines, carrier, country agreement.

SignalWeightStrictBalancedLess strict
Temporary SMS number45
Blocks aloneweight 60
Review alone
Only with other signals
VoIP phone number40
Blocks aloneweight 60
Review alone
Only with other signals
Invalid phone number40
Review alone
Review alone
Only with other signals
Phone carrier not a known mobile operator20
Only with other signals
Only with other signals
Only with other signals
Phone country differs from the IP country15
Only with other signals
Only with other signals
Only with other signals

Geo mismatch

The stated country against where the network and the clock say you are.

SignalWeightStrictBalancedLess strict
Browser timezone differs from the IP country35
Review alone
Only with other signals
Only with other signals
Stated country differs from the IP country20
Only with other signals
Only with other signals
Only with other signals

Cross-operator graph

Entities other operators on the network have already flagged.

SignalWeightStrictBalancedLess strict
Flagged by other Kaidn operators40
Review alone
Review alone
Only with other signals

Signals you do not see here are internal or too quiet to mean anything on their own. They still score; they are just not worth a row. The full list of reason codes is in the API reference.

The IP signals people confuse

Six different facts about a connection get called “VPN” in conversation. They are different findings with different confidence, which is why they are scored differently.

signalwhat it actually meansStrictBalancedLess strict
Named VPNThe connection leaves from a positively identified consumer VPN: a brand we can name (NordVPN, Mullvad), or a network whose address space is mostly VPN exits. It is a finding, not a guess.Blocks aloneBlocks aloneReview alone
Proxy IPThe address appears on a proxy list. Those lists are large, merged from many sources and partly out of date, so this says “probably relayed”, not “this is NordVPN”.Blocks aloneReview aloneOnly with other signals
Datacenter IPThe address belongs to a hosting or cloud company rather than a home or a phone. Scripts and tunnels live there; ordinary people rarely sit there on purpose.Blocks aloneReview aloneReview alone
TorThe address is a published Tor exit node: a deliberate choice to hide where you are.Blocks aloneBlocks aloneReview alone
Abusive networkKaidn’s own data shows this network is mostly fraud. It is not a VPN check and says nothing about a tunnel: it is a statement about the neighbourhood the address lives in. A real person on a mixed network can land here, which is why it is judged against the others.Review aloneReview aloneOnly with other signals
Apple Private RelayAn iCloud+ feature that is on by default for subscribers, so a relay address is almost always an ordinary iPhone or Mac user. It is reported as a reason so you can see it, and it is not penalised.Scores nothingScores nothingScores nothing

Two of these are easy to mix up. Named VPN is the high-confidence one: we identified the service. Proxy IP is a list hit, which is weaker evidence. And Abusive network is not about tunnels at all: a person on no VPN, on an ordinary connection, can still share a network that Kaidn has watched produce mostly fraud.

Apple Private Relay is the one that is deliberately never penalised. It is switched on by default for iCloud+ subscribers, so treating it as hiding would flag a large share of honest iPhone and Safari users. If you run geo-locked offers and genuinely need to treat masked origins as risk, a paid account can give it a weight of its own.

How signals combine

Three rules, applied in this order:

  1. Signals that describe the same fact count once. One throwaway domain trips more than one email check; one Tor exit also looks like a hosting address. Within a group only the strongest scores. Every detection is still listed as a reason, so the explanation is complete even though the arithmetic is not inflated.
  2. Different facts add. An anonymous connection plus a throwaway email are two independent pieces of evidence, so their weights sum.
  3. The total is capped at 100, then compared with the two lines of your preset.

The groups that count once together:

  • Tor exit node, Named VPN (NordVPN, Mullvad...), Proxy IP, Datacenter / hosting IP, Apple Private Relay
  • IP that hit our abuse trap, Network with a history of abuse
  • Device also used by another account, Device shared by several accounts, Device shared by many accounts, Same device and network on another account, Same device and network on several accounts, Same device and network on many accounts
  • Browser fingerprint APIs tampered with, Fingerprint noise added (spoofing), Browser contradicts itself across contexts, Operating system contradicts the user agent, Browser engine contradicts its user agent, Emulated or virtual-machine browser, Connection fingerprint of a known spoofing tool
  • Android emulator, Rooted Android device, Frida / Xposed instrumentation, Failed Google Play Integrity check
  • VPN dropped and exposed the real IP, Started hiding behind a proxy mid-session
  • Many events from one IP, Burst of events from one IP
  • Temporary / disposable email, Email domain on an abuse list
  • Email domain with no mail server, Mistyped email domain (gmail.con), Catch-all mail domain, Mail server on a generic cloud host, Mail server run by a temp-mail service
  • Email alias trick (dots, googlemail.com), Plus-tagged email (name+tag@)
  • Same inbox behind another account, Same inbox behind several accounts, Same inbox behind many accounts
  • Gibberish email address, Malformed email address
  • Temporary SMS number, VoIP phone number
  • Stated country differs from the IP country, Browser timezone differs from the IP country
  • On Balanced and Less strict only: a device shared by 3 to 5 accounts on the same network (or 2 to 5 through a replayed device token), and a shared IP. Both say the accounts share a connection, like a family on one tablet, so they count once. Strict adds them, and from 6 accounts on one device they add on every preset.

A worked example

A signup from a Tor exit node, which also reads as a hosting address, using a throwaway email address. Computed from the live configuration:

signalStrictBalancedLess strict
Tor exit node+75+75+75
Datacenter / hosting IP60, already counted60, already counted60, already counted
Temporary / disposable email+60+45+45
Score100 (sum 135, capped)100 (sum 120, capped)100 (sum 120, capped)
Verdictblockblockblock

Scored the way the engine does it: the strongest signal in each group, summed, capped at 100, compared with the review and block lines of each preset.

Custom weights and category dials

Presets are the shipped answer. If your traffic needs a different one, paid plans can go further, in order of how much you should reach for each:

  • Category dials. One percentage per category (IP, email, device and so on), where 100 is as shipped and 0 switches the category off. The way to say “IP matters more here” once.
  • Individual weights and thresholds. Advanced: the request has to carry "advanced": true. For when one signal needs a different number.

Your own numbers always win over a preset. A weight you set replaces the preset’s raised weight for that signal, and thresholds you set are applied after the preset’s lines. On Free, the preset is the whole surface; sending weights, thresholds or dials returns a 402 pointing to a paid plan.

The tables on this page show the shipped presets. For your account with everything applied, read signals from GET /v1/config. The wider picture of how a verdict is made is in core concepts.