Policy Modes
Control how VertexY risk decisions translate into transaction actions with HYBRID, ADVISORY, and SHADOW modes.
A policy is the ruleset that converts a raw risk score into the final action returned by VertexY. You can read it with GET /risk-engine/policy and update it with PUT /risk-engine/policy without redeploying your integration.
The three modes
HYBRID (recommended for production)
The engine's recommendation is enforced. Your application should treat action as authoritative.
If riskScore is at or below allowMaxScore, VertexY returns action: allow and recommendedAction: allow.
If riskScore is above allowMaxScore and at or below reviewMaxScore,
VertexY returns action: review and recommendedAction: review.
If riskScore is above reviewMaxScore, VertexY returns action: block
and recommendedAction: block.
Flow:
- VertexY receives the assess request.
- The engine computes
riskScore. - The score is compared with
allowMaxScoreandreviewMaxScore. - The same outcome is returned in both
actionandrecommendedAction.
Default score thresholds:
allowMaxScoreDefault is30. Valid range is 0 to 100.reviewMaxScoreDefault is75. Valid range is 0 to 100.
Scores above reviewMaxScore → block. The constraint allowMaxScore ≤ reviewMaxScore is enforced.
Use hybrid when you want VertexY to make real-time allow, review, and block decisions.
ADVISORY
The engine scores every transaction normally, but the action field is always allow regardless of the score. The true recommendation is available in recommendedAction.
The client-facing action is always allow, even when the internal score
is high.
VertexY still computes the normal threshold-based recommendation and returns
it as recommendedAction.
The response includes POLICY_MODE_ADVISORY in reasonCodes.
Flow:
- VertexY scores the request normally.
- The engine computes the threshold-based recommendation.
- The public
actionis forced toallow. - The true recommendation remains available in
recommendedAction.
Use advisory when:
- Rolling out to a new market or user segment where you want to observe scores without affecting conversions
- Evaluating VertexY's accuracy against your existing fraud system before full cutover
- Compliance requires human review of all blocks (use
recommendedActionto queue reviews)
Every response in ADVISORY mode includes POLICY_MODE_ADVISORY in
reasonCodes, making it easy to filter these decisions in your event
explorer.
SHADOW
Full scoring runs and is stored, but the response always returns action: allow and suppresses the reason codes. Designed for completely invisible evaluation.
VertexY still computes the score and stores the internal evaluation.
The client-facing action is returned as allow, so your live workflow is
unaffected.
The response carries POLICY_MODE_SHADOW so shadow-mode traffic can be
segmented later.
Flow:
- VertexY runs the full scoring pipeline.
- The score and recommendation are stored internally.
- The live response stays permissive with
action: allow. - The response is marked as shadow-mode output.
Use shadow when:
- You want zero impact on your existing checkout flow while collecting a scoring baseline
- Comparing VertexY's model against a legacy system with no risk to live conversions
- Onboarding a new payment method or user cohort where you want to build a risk history first
In SHADOW mode, no transactions are ever blocked. Do not use it in environments where fraud is already occurring at scale.
Choosing the right mode
- Production with real enforcement
Use
hybrid. - A/B test or soft launch
Use
advisory. - Data collection or baseline building
Use
shadow. - Post-incident investigation with no live blocks
Use
advisory.
Degraded mode
When one or more upstream services (graph, velocity score) become unavailable, the engine falls back to degraded mode rather than failing the request. You configure what action to take at minimum in these conditions.
All dependencies are available, so VertexY uses the normal scoring pipeline.
VertexY continues with velocity and similarity signals and adds
GRAPH_UNAVAILABLE.
VertexY continues with graph and similarity signals and adds
REDIS_UNAVAILABLE.
VertexY uses the remaining signals, marks the response as degraded, and applies your configured safety floor if needed.
Degraded flow:
- VertexY checks whether the scoring dependencies are healthy.
- If one dependency is missing, the engine continues with the remaining signal families.
- The response includes degradation reason codes showing which subsystem was unavailable.
- If the computed action is weaker than
degradedMinAction, VertexY raises it to that minimum action. - Otherwise, VertexY returns the computed action unchanged.
degradedMinAction
The minimum action to return when any dependency is degraded. Defaults to allow. Values: allow | review | block.
Example: Set degradedMinAction: "review" to ensure that no transaction silently passes through when the graph service is down — all degraded-mode assessments will be flagged for manual review.
oneHopMinAction
The minimum action to enforce when the ONE_HOP_GUARD_TRIGGERED reason code fires. This is independent of overall degraded mode. Values: allow | review | block.
Example: Set oneHopMinAction: "review" to always queue for review any user who has a direct graph connection to a blocked entity, even if their personal score is low.
Updating your policy
curl -X PUT https://api.vertexY.com/api/risk-engine/policy \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "hybrid",
"allowMaxScore": 30,
"reviewMaxScore": 70,
"degradedMinAction": "review",
"oneHopMinAction": "review",
"globalThreatPenaltyOverride": 25
}'await fetch("https://api.vertexY.com/api/risk-engine/policy", {
method: "PUT",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
mode: "hybrid",
allowMaxScore: 30,
reviewMaxScore: 70,
degradedMinAction: "review",
oneHopMinAction: "review",
globalThreatPenaltyOverride: 25,
}),
});All fields are optional — send only the ones you want to change. Every policy update is recorded in the audit log accessible from your dashboard.
Read the current policy
curl https://api.vertexY.com/api/risk-engine/policy \
-H "Authorization: Bearer $VERTEXY_ACCESS_TOKEN"Policy fields reference
modeType isstring. Allowed values arehybrid,advisory, andshadow. This controls the decision enforcement mode.allowMaxScoreType isinteger. Range is 0 to 100. Scores at or below this value returnallow.reviewMaxScoreType isinteger. Range is 0 to 100. Scores aboveallowMaxScoreand up to this value returnreview.degradedMinActionType isstring. Allowed values areallow,review, andblock. This sets the minimum action during service degradation.oneHopMinActionType isstring. Allowed values areallow,review, andblock. This sets the minimum action when the one-hop guard triggers.globalThreatPenaltyOverrideType isinteger. Range is 0 to 100. This overrides the global threat score penalty for the company.
allowMaxScore must be ≤ reviewMaxScore. The API will reject updates that
violate this constraint.