---
title: "Approve Action"
method: POST
path: "/api/chat/actions/{action_id}/approve"
tags: ["chat-actions"]
---

# Approve Action

`POST /api/chat/actions/{action_id}/approve`

## Request

- Base URL: `https://api.advisorppc.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.advisorppc.com/api/chat/actions/{action_id}/approve`
- Auth: HTTP bearer

Approve one STAGED chat action and execute it through the executor
rail. The staged->approved claim is one atomic conditional UPDATE, so a
lost race answers 409 and the write can never fire twice. On a PRE-WRITE
executor refusal (e.g. writes disabled -> 403) the row is re-staged in
this same request so a later retry genuinely works; after an ambiguous
tool error the row stays 'approved' for human review.

## Path parameters

- `action_id` integer, required

## Headers

- `X-Tenant-Id` integer, nullable

## Response `200`

Successful Response

- ActionOut
  - `id` integer, required
  - `status` string, required
  - `result` object
  - `detail` string

## Other responses

- `422`: Validation Error

---

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