Skip to main content
This page covers every public API endpoint for managing transaction monitoring rules and evaluating transactions. For a visual walkthrough of the Rule Builder, see Building rules. Full API reference is available in the API Reference.

Rule templates

List templates

Endpoint: GET /v1/rule-templates List available pre-built templates with pagination and filtering.
GET /v1/rule-templates?limit=20&page=1
You can filter templates by name, products, or typologies:
GET /v1/rule-templates?search=withdrawal&filter.products=$eq:crypto

Get a template

Endpoint: GET /v1/rule-templates/{id}
GET /v1/rule-templates/template-uuid

Copy a template

Endpoint: POST /v1/rule-templates/{id}/copy Copy a template into your workspace as a draft rule that you can customize.
POST /v1/rule-templates/template-uuid/copy
The response contains the ruleId of the newly created draft.

Rules

Create a rule

Endpoint: POST /v1/rules Create a rule from scratch with custom conditions and actions. The rule is created in draft status.
POST /v1/rules
Content-Type: application/json

{
  "name": "High-risk withdrawal detection",
  "description": "Alert when high-risk customers make large withdrawals exceeding 50,000 USD in 24 hours",
  "conditions": {
    "all": [
      {
        "entity": "client",
        "property": "riskTier",
        "operator": "equal",
        "value": "HIGH"
      },
      {
        "entity": "transaction",
        "aggregationProperty": "amount",
        "aggregationOperator": "sum",
        "aggregationTimeType": "in_the_last",
        "aggregationTimeValue": 1,
        "aggregationTimePeriod": "days",
        "aggregationFilters": [
          {
            "property": "type",
            "operator": "equal",
            "value": "WITHDRAW"
          }
        ],
        "operator": "greaterThanInclusive",
        "value": 50000
      }
    ]
  },
  "actions": [
    {
      "type": "CREATE_ALERT",
      "config": {
        "category": "TRANSACTION_MONITORING",
        "priority": "HIGH",
        "status": "NEW"
      }
    }
  ]
}

Rule structure

FieldRequiredDescription
nameYesHuman-readable rule name.
conditionsYesRule conditions using all (AND) / any (OR) logic. See Conditions reference.
actionsYesActions to execute when the rule matches.
descriptionNoDetailed description of the rule’s purpose.

List rules

Endpoint: GET /v1/rules List rules with pagination, sorting, and filtering.
GET /v1/rules?limit=20&page=1&sortBy=updatedAt:DESC
You can filter by status, name, and dates:
GET /v1/rules?filter.status=$eq:active&search=withdrawal

Get a rule

Endpoint: GET /v1/rules/{id} Retrieve a rule by ID. Optionally pass a version query parameter to get a specific version.
GET /v1/rules/rule-uuid?version=2

Update a rule

Endpoint: PUT /v1/rules/{id} Modify a rule’s name, description, conditions, or actions. When updating an active rule, pass an optional reason for the audit log.
PUT /v1/rules/rule-uuid
Content-Type: application/json

{
  "name": "Updated rule name",
  "description": "Modified detection threshold",
  "conditions": {
    "all": [
      {
        "entity": "transaction",
        "property": "amount",
        "operator": "greaterThanInclusive",
        "value": 100000
      }
    ]
  },
  "reason": "Raised threshold after review"
}
Updating an active rule creates a new version. The previous version is preserved in the audit history.

Activate a rule

Endpoint: POST /v1/rules/{id}/activate Activate a draft or disabled rule so it evaluates live transactions.
POST /v1/rules/rule-uuid/activate
You can optionally pass a reason in the request body for audit purposes.

Disable a rule

Endpoint: POST /v1/rules/{id}/disable Pause an active rule. Disabled rules do not evaluate transactions but can be re-activated.
POST /v1/rules/rule-uuid/disable
Only active rules can be disabled. Only draft or disabled rules can be activated.

Delete a rule

Endpoint: DELETE /v1/rules/{id} Soft-delete a non-active (draft or disabled) rule. Active rules must be disabled first.
DELETE /v1/rules/rule-uuid?reason=No+longer+needed

Evaluation

Evaluate a transaction

Endpoint: POST /v1/evaluation/evaluate Evaluate a transaction against all active rules on-demand. This is useful for testing or evaluating transactions outside the normal ingestion flow.
POST /v1/evaluation/evaluate
Content-Type: application/json

{
  "transactionId": "txn-uuid-123",
  "transactionData": {
    "amount": 75000,
    "currency": "USD",
    "type": "WITHDRAW",
    "clientId": "client-uuid-123"
  }
}

Evaluation response

FieldDescription
decisionALLOW if no rules matched with a halt action, FREEZE if at least one matched rule includes HALT_TRANSACTION.
triggeredRuleIdsArray of rule IDs that matched.
matchesDetailed match information per rule, including condition results.
evaluatedAtTimestamp of the evaluation.
latencyMsProcessing time in milliseconds.

Results by rule

Endpoint: GET /v1/evaluation/rule/{ruleId}/results See all transactions evaluated against a specific rule.
GET /v1/evaluation/rule/rule-uuid/results?page=1&pageSize=20

Results by transaction

Endpoint: GET /v1/evaluation/transaction/{transactionId}/results See all rules evaluated against a specific transaction.
GET /v1/evaluation/transaction/txn-uuid-123/results?page=1&pageSize=20

What’s next?

Ingest operations

Ingest deposits, withdrawals, and trades to be evaluated by your rules.

Manage alerts & cases

Manage alerts created by rule evaluations.

Building rules

Use the no-code Rule Builder to create and test rules visually.

Conditions reference

Full reference for operators, entities, and aggregations.