Skip to main content
The decision engine evaluates an investor and wallet against a policy and returns an "allow", "deny", or "review" verdict. Every decision is stored immutably and can be retrieved by its audit_id.
All requests to these endpoints require a valid API key in the Authorization header.

Request a decision

POST /v1/decisions Runs a compliance check by evaluating the investor, wallet, and policy you specify. The engine applies the following rules in order:

Request body

investor_id
string
required
The ID of the investor to evaluate. Returns 404 if not found.
wallet_id
string
required
The ID of the wallet to evaluate. Returns 404 if not found.
asset_policy_id
string
required
The ID of the policy to evaluate against. Returns 404 if not found.
action
string
required
A label describing the action being attempted (e.g. "transfer", "mint", "redeem"). Stored for audit purposes.

Response fields

decision
string
The outcome of the compliance check: "allow", "deny", or "review".
reasons
string[]
An array of reason codes explaining the decision. Possible values: "policy_requirements_satisfied", "wallet_blocked", "kyc_not_verified", "not_accredited", "country_not_allowed", "wallet_not_verified".
audit_id
string
The unique ID of this decision record. Format: dec_.... Use this to retrieve the decision later with GET /v1/decisions/:id.
policy_version
string
The version of the decision engine used. Always "v1".
timestamp
string
ISO 8601 timestamp of when the decision was made.

Examples

201 — Allow (investor and wallet pass all policy checks)
201 — Deny (wallet is blocked — first check triggers immediately)
201 — Review (investor KYC is pending, manual review required)

Retrieve a decision

GET /v1/decisions/:id Retrieves a previously recorded decision by its audit_id. The response includes an immutable snapshot of the investor, wallet, and policy state at the time the decision was made.

Path parameters

id
string
required
The audit_id returned from POST /v1/decisions.

Response fields

id
string
The decision record ID. Format: dec_...
investor_id
string
The ID of the investor evaluated.
wallet_id
string
The ID of the wallet evaluated.
asset_policy_id
string
The ID of the policy used.
action
string
The action label provided at decision time.
decision
string
"allow", "deny", or "review".
reasons
string[]
Reason codes for the decision outcome.
policy_version
string
Always "v1".
created_at
string
ISO 8601 timestamp of when the decision was recorded.
input_snapshot
object
An immutable snapshot of the investor, wallet, and policy data used to reach the decision. This does not reflect any subsequent changes to those records.

Example

200 — OK

404 — Not found