---
title: "Update a rule"
method: PUT
path: "/rules/{id}"
tags: ["Rules"]
---

# Update a rule

`PUT /rules/{id}`

Update a rule. If `rule_routes` is provided, existing route mappings are **replaced entirely**.

## Headers

- `X-Client-ID` integer

## Request body

- RuleCreate
  - `rule_name` string, required
  - `expression` string, required — Must compile with `expr.Compile()`.
  - `tag` string
  - `priority` integer, required — Lower number = higher priority.
  - `enabled` boolean, required
  - `rule_routes` object[]
    - `route_id` integer, required — Must exist for the current client.
    - `weight` integer, required
    - `enabled` boolean

## Response `200`

Rule updated.

- Rule
  - `id` integer
  - `client_id` integer
  - `rule_name` string
  - `tag` string
  - `priority` integer — Lower number = higher priority.
  - `expression` string — Expression evaluated by `expr.Compile()`. Available variables: `from_address`, `from_domain`, `from_local`, `to_address`, `to_domain`, `to_local`, `headers`, `remote_ip`, `helo`, `size`. Helper functions: `StartsWith()`, `EndsWith()`, `Contains()`, `Matches()`, `ToLower()`, `ToUpper()`, `Trim()`.
  - `enabled` boolean
  - `rule_routes` RuleRouteAssignment[]
    - `id` integer
    - `provider_name` string
    - `route_id` integer
    - `route_name` string
    - `weight` integer — Distribution weight.
    - `enabled` boolean
  - `created_at` string, date-time

## Other responses

- `404` — Rule not found.

---

[API](https://skmtc.dev/netcorecloud/apis/email-api-v6.md) · [All operations](https://skmtc.dev/netcorecloud/apis/email-api-v6/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/netcorecloud/email-api-v6/revisions/73f83bc2eff8/schema)
