Hanzo
OpenapiRisk

Score one event against your organisation's own model

Score judges one event against the caller organisation's OWN model and learns nothing from it.

POST /v1/risk/score

Addresshttps://api.hanzo.ai/v1/risk/score
MethodPOST
OperationriskScore
AuthAuthorization: Bearer $HANZO_API_KEY

Score judges one event against the caller organisation's OWN model and learns nothing from it. It is how a candidate is tried against real behaviour before anything depends on the answer, and it is the model's analogue of testing a rule.

Because it records nothing, the aggregates it reads do not include the event: the numbers are the organisation's history as it stands. A model still warming declines with a reason rather than answering zero, because silence must never read as a clean result.

Request

8 fields, body application/json (required).

FieldInTypeRequiredDescription
eventbodyriskEvent
event.atbodystringAt is when it happened, RFC 3339. Empty means now.
event.devicebodystringDevice is the device fingerprint, if any.
event.idbodystringID is the caller's own stable identifier for the event.
event.kindbodystringKind is whose behaviour this is: person, session or account.
event.nanobodyintegerNano is the value moved, in nano-USD. Omit it for an event that moves no money: the value features then read BLIND rather than being told the amount was zero,…
event.peerbodystringPeer is the counterparty, if any.
event.subjectbodystringSubject is the identifier on that kind.

Response

StatusBodyMeaning
200riskScoreOutok

200 body — 26 fields.

FieldInTypeAlwaysDescription
alertbodybooleanAlert is whether this would become evidence.
causesbodyriskCause[]Causes is the per-feature attribution, ordered by contribution.
causes[].baselinebodynumberBaseline is the number it was measured against — always this organisation's own history, never a fixed limit and never another organisation's.
causes[].citationbodystringCitation is where those words come from, so the claim is checkable rather than asserted — which is what a chargeback network or a regulator asks for.
causes[].featurebodystringFeature is the dimension that contributed.
causes[].indicatorbodystringIndicator is the supervisor's own words for the thing being looked for.
causes[].observedbodynumberObserved is the raw number the coordinate was computed from.
causes[].severitybodystringSeverity is how much weight this dimension carries.
causes[].sharebodynumberShare is this feature's part of the score, in [0,1].
causes[].typologybodystringTypology is the laundering or abuse pattern this dimension detects.
causes[].unitbodystringUnit is how to read Observed, which is what turns a coordinate into a sentence.
causes[].withoutbodynumberWithout is the score the same event would have received with this coordinate at its neutral value — the counterfactual itself.
cutbodynumberCut is the threshold in force, derived from the stated appetite as a quantile of the scores actually observed rather than fixed at a number.
policybodyintegerPolicy is the version of your organisation's decision regime this verdict was reached under, from its own policy history (GET /v1/risk/policy).
refusalbodystringRefusal names why the model declined, when it did.
scorebodynumberScore is where the event sits in the tenant's own density: 0 where its recent behaviour is densest, 1 where there is none of it.
scoredbodybooleanScored is false when the model declined, and Refusal says which refusal it was: warming, unusable or unidentified.
shadowbodybooleanShadow is whether the model is testing rather than deciding — scoring, learning and recording what it WOULD have alerted on, and changing no outcome.
shapebodystringShape is the model space this verdict was reached in, as <family>:<digest>: the KIND of model, and that family's own digest over your organisation's feature…
valuesbodyriskValue[]Values is every coordinate, including the ones that contributed nothing, so a reviewer sees what the model read and not only what it concluded.
values[].baselinebodynumberBaseline is what Observed was measured against: this organisation's own history for this subject.
values[].blindbodybooleanBlind marks a coordinate that could not be computed and took its neutral value.
values[].featurebodystringFeature is the dimension.
values[].observedbodynumberObserved is the raw number X was computed from, quoted so the coordinate reads back as a sentence rather than a bare ratio.
values[].unitbodystringUnit is how to read Observed.
values[].xbodynumberX is the coordinate in the model space, always dimensionless.

Failure carries the platform error shape — see Errors.

Examples

hanzo risk score

Risk API · All Hanzo APIs · Interactive reference

How is this guide?

On this page