Set AML risk thresholds
Risk thresholds turn a continuous score into a discrete action. The risk endpoint returns a 0-100 score and a risk_level; your thresholds decide where allow becomes review and review becomes block. Version the mapping so decisions can be replayed.
- A live API key with AML scope.
- A sample set of addresses spanning your expected traffic.
1Read a representative score
Call the risk endpoint on sample addresses to see the score and risk_level distribution you need to band. This is a C3 call.
curl https://api.1st-node.com/v1/aml/eth/0x1a2b.../risk \
-H "Authorization: Bearer sk_live_..."
> { "score": 72, "risk_level": "high", "confidence": 0.86, "exposure": [{ "category": "mixer", "hops": 1 }] }2Define the action bands
Pick score cutoffs for each action. A common starting split is allow below 40, review 40 to 74, block 75 and above, then adjust to your appetite.
const decide = (score) => score >= 75 ? "block" : score >= 40 ? "review" : "allow";
3Combine score with exposure category
Override the numeric band for specific categories. For example, any mixer exposure at hop 1 can force review regardless of the aggregate score.
4Version and store the mapping
Record which threshold version produced each decision. When appetite changes, a new version keeps historical decisions reproducible for audit.
Frequently asked
Should I use score or risk_level for the decision?
Use the numeric score for your own bands so you control the cutoffs. Treat risk_level as a coarse label for display and reconciliation.
Why fold exposure category into the threshold?
A moderate aggregate score can still hide direct mixer or sanctioned exposure. Category overrides let you act on those regardless of the headline number.
Keep reading
Top up, get a key, ship.
Self-serve. Pay in crypto or card. Metered by credits — heavy primitives cost more, simple ones are cheap.
Get API key