---
title: "Read Act intent and observed outcomes"
method: GET
path: "/v1/pools/{id}/action-proposals"
tags: ["Pools"]
---

# Read Act intent and observed outcomes

`GET /v1/pools/{id}/action-proposals`

## 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`
- Auth: HTTP bearer

Members may read retained action proposals. Follow next_cursor with the same pool and kind. Approval is not evidence that an action was applied. Internal claims, actor identities and source hashes are omitted.

## Path parameters

- `id` string, required

## Query parameters

- `limit` integer
- `cursor` string
- `kind` 'idle_reclaim' | 'defragment' | 'drain_window' | 'wait_tuning'

## Response `200`

Retained Act proposals.

- PoolActProposals
  - `pool_id` string, required
  - `proposals` PoolActProposal[], required
    - `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.
  - `next_cursor` string, nullable, required

## 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)
