API-first decision intelligence.
Integrate Thalra into investment workflows with a clear evaluation contract. Core remains the source of truth for decisions.
At a glance
- REST evaluate
- Implemented
- Official SDKs
- Planned
- MCP support
- Planned
What the API does
- Accept customer, portfolio, behaviour and action context for a proposed investment action.
- Return a governed decision: ALLOW, SUPPORT, WARN, CONFIRM or REVIEW.
- Include signals, policy results and an evidence object with pack, engine and fingerprint fields suitable for your audit logging.
Authentication is provided at the Core host with a server-side bearer token in production environments. Website proxies never expose Core credentials to the browser.
Evaluate examples
Primary Core route: POST /evaluate. Examples below use verified synthetic scenario A (ALLOW / D00).
Request
Request JSON
{
"customer": {
"customer_id": "cust_a",
"risk_profile": "HIGH",
"liquid_assets": "200000"
},
"portfolio": {
"portfolio_value": "100000",
"current_high_risk_exposure_pct": 0.25
},
"behaviour": {
"high_risk_trades_last_30_days": 2,
"high_risk_trades_previous_30_days": 2,
"recent_portfolio_loss_pct": 0.02
},
"action": {
"action_id": "act_a",
"action_type": "BUY",
"asset_id": "asset_hr_1",
"asset_category": "HIGH_RISK_EQUITY",
"asset_risk": "HIGH",
"amount": "8000",
"asset_exposure_pct_before_action": 0.08,
"asset_exposure_pct_after_action": 0.15,
"high_risk_exposure_pct_after_action": 0.3
}
}Response highlight
Response JSON
{
"decision": "ALLOW",
"decision_rule_id": "D00",
"decision_reason": "Rule D00: no policy triggered; proceed normally.",
"signals": [
{
"signal": "CONCENTRATION_INCREASE",
"status": "NOT_TRIGGERED",
"severity": null
},
{
"signal": "HIGH_RISK_EXPOSURE_INCREASE",
"status": "NOT_TRIGGERED",
"severity": null
},
{
"signal": "RISK_PROFILE_MISMATCH",
"status": "NOT_TRIGGERED",
"severity": null
},
{
"signal": "RECENT_RISK_ESCALATION",
"status": "NOT_TRIGGERED",
"severity": null
},
{
"signal": "RECENT_LOSS_CONTEXT",
"status": "NOT_TRIGGERED",
"severity": null
},
{
"signal": "LIQUIDITY_IMPACT",
"status": "NOT_TRIGGERED",
"severity": null
}
],
"policy_results": [
{
"policy_id": "severe_concentration_policy",
"status": "NOT_TRIGGERED"
},
{
"policy_id": "severe_liquidity_impact_policy",
"status": "NOT_TRIGGERED"
},
{
"policy_id": "material_multi_factor_review",
"status": "NOT_TRIGGERED"
},
{
"policy_id": "multiple_material_context_signals",
"status": "NOT_TRIGGERED"
},
{
"policy_id": "single_material_context_signal",
"status": "NOT_TRIGGERED"
},
{
"policy_id": "single_low_context_signal",
"status": "NOT_TRIGGERED"
}
],
"evidence": {
"evaluation_id": "eval_example_scenario_a",
"policy_pack_id": "default-investment-v0",
"policy_version": "0.1.0",
"engine_version": "0.2.0",
"policy_config_fingerprint": "fba0a8449fba1c13938f0193e96bb7ada5e541335167ca5d649d82d9a8b1b126",
"policies_triggered": []
}
}