---
title: "Get an action rule"
method: GET
path: "/agent/workspaces/{workspace}/action-rules/{action_rule}"
tags: ["ActionRuleApi"]
---

# Get an action rule

`GET /agent/workspaces/{workspace}/action-rules/{action_rule}`

## Request

- Base URL: `https://plainrouter.com/api/v1`
- URL: `https://plainrouter.com/api/v1/agent/workspaces/{workspace}/action-rules/{action_rule}`
- Auth: HTTP bearer

Read the account-scoped rule, immutable revisions and recent run decisions. Send Accept: application/json for the documented JSON errors.

## Path parameters

- `workspace` integer, required
- `action_rule` string, required

## Query parameters

- `account_id` integer

## Response `200`

Rule with revisions and recent runs.

- ActionRuleDetailRead
  - `rule` object, required
    - `id` string, required
    - `workspace_id` integer, required
    - `platform_ad_account_id` integer, required
    - `name` string, required
    - `enabled` boolean, required
    - `suspended_at` string, date-time, nullable, required
    - `suspended_reason` string, nullable, required
    - `window` object, required
      - `days` 3, required
      - `kind` 'last_complete_days', required
      - `timezone` string, required
    - `current_revision` object, required
      - `id` string, required
      - `target_level` 'ad' | 'ad_set' | 'campaign', required
      - `action` 'pause' | 'increase_budget' | 'decrease_budget', required
      - `budget_change_percent` integer, nullable, required
      - `minimum_counted_arrivals` integer, required
      - `cost_comparison` 'at_least' | 'at_most', required
      - `cost_ratio` string, required
      - `author_type` 'user' | 'agent', required
      - `created_at` string, date-time, required
    - `revisions` object[], required: Present on show and write responses.
      - `id` string, required
      - `target_level` 'ad' | 'ad_set' | 'campaign', required
      - `action` 'pause' | 'increase_budget' | 'decrease_budget', required
      - `budget_change_percent` integer, nullable, required
      - `minimum_counted_arrivals` integer, required
      - `cost_comparison` 'at_least' | 'at_most', required
      - `cost_ratio` string, required
      - `author_type` 'user' | 'agent', required
      - `created_at` string, date-time, required
    - `runs` object[], required: Show only; at most five recent runs, each with at most 100 decisions.
      - `id` string, required
      - `revision_id` string, required
      - `window_start` string, date-time, required
      - `window_end` string, date-time, required
      - `timezone` string, required
      - `status` string, required
      - `reason` string, nullable, required
      - `account_spend_minor` string, nullable, required
      - `account_counted_arrivals` integer, nullable, required
      - `evaluated_at` string, date-time, nullable, required
      - `decisions` object[], required
        - `id` string, required
        - `target_type` string, required
        - `target_id` string, required
        - `target_name` string, nullable, required
        - `target_spend_minor` string, required
        - `target_counted_arrivals` integer, required
        - `decision` string, required
        - `reason` string, required
        - `action_type` string, required
        - `new_daily_budget_minor` integer, nullable, required
        - `action_batch_id` string, nullable, required
      - `decisions_truncated` boolean, required

## Other responses

- `401`: Missing, invalid, expired or revoked workspace key.
- `403`: Insufficient ability or grant, or a conflicting workspace selector.
- `404`: Workspace, account or rule unavailable in this scope.
- `422`: Invalid rule input or account ID, mismatched account binding, or ambiguous active accounts.
- `429`: The shared API rate limit is exceeded.

---

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