---
title: "Create a compliance rule"
method: POST
path: "/api/compliance/rules"
tags: ["Rules"]
---

# Create a compliance rule

`POST /api/compliance/rules`

Create a new compliance rule. The `ruleJson` field must be a valid JSON Logic
expression that evaluates against transfer payloads.

## Headers

- `x-tenant-id` string, required

## Request body

- CreateRuleRequest
  - `code` string, required
  - `name` string, required
  - `category` 'AML' | 'FRAUD', required
  - `severity` 'DENY' | 'FLAG' | 'ALLOW'
  - `description` string
  - `ruleJson` object, required — JSON Logic expression
  - `enabled` boolean
  - `priority` integer
  - `tenantId` string

## Response `201`

Rule created

- ComplianceRule
  - `id` string, uuid
  - `tenantId` string
  - `code` string — Unique rule code per tenant
  - `name` string
  - `description` string, nullable
  - `category` 'AML' | 'FRAUD'
  - `severity` 'DENY' | 'FLAG' | 'ALLOW'
  - `ruleJson` object — JSON Logic expression
  - `enabled` boolean
  - `priority` integer — Lower number = higher priority
  - `version` integer
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

## Other responses

- `400` — Validation error
- `401` — Missing or invalid authentication
- `409` — Duplicate rule code for tenant

---

[API](https://skmtc.net/stalela/apis/stalela-compliance-api.md) · [All operations](https://skmtc.net/stalela/apis/stalela-compliance-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/stalela/stalela-compliance-api/versions/b03e01078149/schema)
