---
title: "Turn an observed pattern into a policy rule"
method: POST
path: "/v1/org/approval-learning/{profile_id}/promote"
tags: ["Organization"]
---

# Turn an observed pattern into a policy rule

`POST /v1/org/approval-learning/{profile_id}/promote`

## Request

- Base URL: `https://api.1claw.co`
- URL: `https://api.1claw.co/v1/org/approval-learning/{profile_id}/promote`
- Auth: HTTP bearer

Writes a rule into the named agent's `action_approval_policy`. Human users
only, and only when the organisation is in `enforce` mode.

**The rule covers only what was actually approved.** Five approved $5
refunds to one customer produce `{ refund.create, asks above $10, that
recipient }` — a $49 request does not match it and still reaches a human.

Refused when: fewer than five consecutive approvals; *any* past rejection
on the bucket (a long recent run must not hide a history of refusals); the
bucket is for a recipient never paid before; the amount band has no upper
edge; or the action grants or destroys authority.

`widen_to_action_type` drops the amount and recipient constraints. It is
never the default and should be an explicit choice in your UI, not a
checkbox someone skims past.

The written rule is marked `promoted_from_learning` so an operator can
tell it apart from one they wrote, and it replaces any existing rule for
the same action type — appending would leave two rules where only the
first ever applies.

## Path parameters

- `profile_id` string, uuid, required

## Request body

- object
  - `agent_id` string, uuid, required
  - `widen_to_action_type` boolean

## Response `200`

Promoted

- object
  - `profile_id` string, uuid
  - `agent_id` string, uuid
  - `rule` object

## Other responses

- `400`: Invalid request
- `403`: Insufficient permissions
- `404`: Resource not found
- `409`: Resource already exists or conflict

---

[API](https://skmtc.dev/1claw/apis/1claw-api.md) · [All operations](https://skmtc.dev/1claw/apis/1claw-api/llms.txt) · [OpenAPI document](https://skmtc.dev/1claw/apis/1claw-api/revisions/5fa0918f3b41?raw)
