---
title: "Decide an approval request (approve / deny)"
method: POST
path: "/v1/hitl/approvals/{approval_id}/decide"
tags: ["hitl"]
---

# Decide an approval request (approve / deny)

`POST /v1/hitl/approvals/{approval_id}/decide`

## Path parameters

- `approval_id` string, uuid, required

## Request body

- DecideApprovalRequest — Body for the approve/deny mutation. The deciding actor comes from auth, not the body.
  - `decision` 'approve' | 'deny', required
  - `note` string, nullable

## Response `200`

Successful Response

- ApprovalRequestDetail — Full detail view of a single ``approval_requests`` row.
  - `id` string, uuid, required
  - `organization_id` string, uuid, required
  - `conversation_id` string, uuid, required
  - `conv_turn_id` string, uuid, nullable, required
  - `node_id` string, nullable, required
  - `subject_kind` 'workflow_node' | 'tool_call', required — What a suspended approval is gating — the caller-agnostic dispatch key. The :class:`ResumeDispatcher` (HITL-03 §1) routes a recorded decision back to the right continuation by this value: a workflow ``ApprovalNode`` resumes an edge (``WORKFLOW_NODE``); a Policy/tool-level gate resumes a partial turn (``TOOL_CALL``). Persisted to a ``VARCHAR(20)`` — a StrEnum serializes to its string value, so it needs no migration.
  - `subject_ref` string, required
  - `payload` object
  - `suspend_message` string, nullable
  - `approver_role` string, required
  - `status` string, required
  - `decision` string, nullable
  - `decided_by` string, nullable
  - `decided_at` string, date-time, nullable
  - `note` string, nullable
  - `timeout_at` string, date-time, nullable
  - `resume_token` string, nullable
  - `created_at` string, date-time, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/versions/888bdd5c076e/schema)
