---
title: "Stop an always-on rule"
method: POST
path: "/api/v1/campaigns/{campaign_id}/routing-rules/{rule_id}/deactivate"
tags: ["experiments"]
---

# Stop an always-on rule

`POST /api/v1/campaigns/{campaign_id}/routing-rules/{rule_id}/deactivate`

## Request

- Base URL: `https://api.outrival.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.outrival.com/api/v1/campaigns/{campaign_id}/routing-rules/{rule_id}/deactivate`
- Auth: HTTP bearer

Stop a rule serving.

Not a delete. The row keeps its priority number so the record of which rule
outranked which stays readable, and the engine stops considering it because
every resolve filters on ``active``. Contacts it was serving fall through to
whatever would have applied without it, on their next resolve.

## Path parameters

- `campaign_id` string, required
- `rule_id` string, required

## Request body

- DeactivateRoutingRuleRequest: Why the rule is being stopped. Recorded on the audit event.
  - `reason` string, nullable: Recorded with the rule; free text

## Response `200`

Successful Response

- object

## Other responses

- `400`: Invalid campaign or rule ID format
- `403`: User may not edit this campaign
- `404`: No such rule on this campaign
- `422`: The rule is already stopped

## Changes

- **2026-09-04** `c3ae792dd795`: 1 info
  - removed the non-success response with the status `409`
- **2026-09-03** `219a10b80707`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/outrival/apis/fastapi/changes/api/v1/campaigns/:campaign_id/routing-rules/:rule_id/deactivate/post.md)

---

[API](https://skmtc.dev/outrival/apis/fastapi.md) - [All operations](https://skmtc.dev/outrival/apis/fastapi/llms.txt) - [OpenAPI document](https://skmtc.dev/outrival/apis/fastapi/revisions/f27d90300b5e?raw)
