Explainable by design
Every score ships with the reasoning attached, so you never act on a black box. The score travels with aDetails array: one entry per signal that fired, each { "Value": <int>, "Description": "<signal>" }. Value is the points that signal added; Description names it in plain language.
A realistic webhook body for a visit on a proxy with a timezone mismatch:
20 because the two signals add 10 points each. Because both reasons are visible, your code can treat that 20 on a payment screen differently from a 20 on a blog read.
The Risk Score is delivered by webhook and readable from the History API. The browser does not compute it. See Webhooks and the Management API.
Bands and recommended actions
The score maps to four bands, and these labels are the only ones ShieldLabs uses. The recommended action is a guide, not a rule: you set the action per band that fits your own risk tolerance.| Band | Range | Meaning | Recommended action (a guide, not a rule) |
|---|---|---|---|
| Clean | 0–9 | No meaningful signals | Pass through, no friction |
| Low | 10–29 | One minor signal | Allow, worth logging |
| Medium | 30–59 | Several overlapping signals, or one moderate signal | Step-up challenge, second look, or review |
| High | 60–100 | Strong anonymity or abuse signals | Block, review, or require verification |
How signals combine
The score is additive: each signal inDetails contributes its points, the total is summed, then capped at 100. A few rules shape which signals are added.
- The strongest anonymity signal takes priority. Tor, Privacy Relay, and VPN are evaluated in that order; if one fires, the weaker anonymity signals are not added on top of it.
- Proxy-family signals stack. Proxy, Datacenter, and Abuser reputation signals add up with each other.
- Everything is summed, then capped at 100. A very high total is clamped down to the 100 ceiling.
999 is not a score
The customer-facing scale is 0 to 100 only. You may see the value 999 referenced internally: it is a rate-limit ban marker, never a customer score and never a band. A rate-limit ban surfaces as a separate gateway behavior, HTTP 429, not as a value in the payload. See Rate limits.Next steps
Acting on the Risk Score
Turn Score plus Details into allow, challenge, review, or block in your own code.
Patterns
Ready-made abuse patterns that link activity across accounts, devices, and IPs.
Anonymity Signals
Every signal that can fire, its weight, and what it means.