---
title: "List a campaign's always-on rules"
method: GET
path: "/api/v1/campaigns/{campaign_id}/routing-rules"
tags: ["experiments"]
---

# List a campaign's always-on rules

`GET /api/v1/campaigns/{campaign_id}/routing-rules`

## 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`
- Auth: HTTP bearer

Every rule on this campaign, in the order the engine evaluates them.

Each rule carries ``rule_class`` (always ordinary) and ``allowed_actions``
plus ``changes``, which names each pinned
component and says whether that pin still differs from what the campaign
currently serves. A rule pinning the current version of a component changes
nothing for the people it targets, and a list of component names alone
cannot show that.

## Path parameters

- `campaign_id` string, required

## Query parameters

- `include_inactive` boolean: Include rules that have been stopped

## Response `200`

Successful Response

- object

## Other responses

- `400`: Invalid campaign ID format
- `403`: User may not edit this campaign
- `404`: Campaign not found
- `422`: Validation Error

## Changes

- **2026-09-03** `219a10b80707`: 1 info
  - endpoint added

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

---

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