---
title: "Reject a retained Act proposal"
method: POST
path: "/v1/pools/{id}/action-proposals/{pid}/reject"
tags: ["Pools"]
---

# Reject a retained Act proposal

`POST /v1/pools/{id}/action-proposals/{pid}/reject`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/v1/pools/{id}/action-proposals/{pid}/reject`
- Auth: HTTP bearer

Requires an account admin. Send an empty object or omit the body. The server retains immutable action evidence. Approval rechecks active Predict, Route, policy and expiry. Dispatch rechecks authority separately. A stale proposal records no-op or expired state and returns a conflict. Rejection does not apply an action.

## Path parameters

- `id` string, required
- `pid` string, required

## Request body

- object

## Response `200`

Retained Act decision.

- PoolActProposal
  - `id` string, required
  - `pool_id` string, required
  - `recommendation_id` string, required
  - `reason` string, required
  - `kind` 'idle_reclaim' | 'defragment' | 'drain_window' | 'wait_tuning', required
  - `level` 'approve' | 'auto', required
  - `recommendation` object, required: Immutable server-retained recommendation evidence matching kind. No caller-provided action body.
  - `created_at` string, date-time, required
  - `expires_at` string, date-time, required
  - `state` 'pending' | 'approved' | 'rejected' | 'expired' | 'no_op' | 'applying' | 'uncertain' | 'applied' | 'failed', required
  - `decided_at` string, date-time, nullable, required
  - `outcome` PoolActOutcome, required: Observed outcomes and customer reports are distinct. Missing measured savings stay null. Customer input never supplies server measurement.
    - `source` 'server_observed' | 'customer_reported', required
    - `result` 'applied' | 'no_op' | 'failed', required
    - `recorded_at` string, date-time, required
    - `measured_saving_micros` integer, nullable, required: Observed platform-fee reduction only for the returned measurement basis. Null when unmeasured.
    - `reported_saving_micros` integer, nullable, required
    - `measurement_basis` 'observed_platform_fee_reduction_30m_v1' | 'null', nullable, required: Observed Route platform-fee reduction over equal 30-minute windows. Not total infrastructure saving or a causal counterfactual.

## Other responses

- `default`: Authentication, disabled feature, invalid input, missing pool or host, rate limits, and transient failures apply.

---

[API](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api.md) - [All operations](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nodus-compute/apis/nodus-infrastructure-execution-api/revisions/a59210899d95?raw)
