---
title: "Approve a burst proposal"
method: POST
path: "/v1/pools/{id}/proposals/{pid}/approve"
tags: ["Pools"]
---

# Approve a burst proposal

`POST /v1/pools/{id}/proposals/{pid}/approve`

## Request

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

Requires a current account admin and active Route authorization. Send an empty object or omit the body. The proposed amount cannot be changed. The decision is retained atomically. Replays return the same confirmed decision. Expired, no-op, or conflicting decisions return 409. Approval records intent only and does not itself rent capacity. New admission must revalidate the current quote against the approved amount and original expiry.

## Path parameters

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

## Request body

- object

## Response `200`

Confirmed retained proposal decision.

- PoolProposal: Retained burst approval intent for one submitted workload stage and generation. Approved records intent, applying means that generation claimed the approval, and applied requires an observed winning execution. Expiry blocks new dispatch but does not erase a winner dispatched before expiry. No supplier identity or quote secrets are returned.
  - `id` string, required
  - `pool_id` string, required
  - `workload_id` string, required
  - `stage_id` string, required
  - `reason` string, required
  - `kind` 'burst', required
  - `state` 'pending' | 'approved' | 'rejected' | 'expired' | 'no_op' | 'applying' | 'applied', required
  - `envelope_version` integer, required
  - `generation` integer, required
  - `device_count` integer, required
  - `expected_cost_micros` integer, required
  - `approved_cost_micros` integer, nullable, required: Null until approval. Once approved, equals the immutable expected_cost_micros.
  - `created_at` string, date-time, required
  - `expires_at` string, date-time, required
  - `decided_at` string, date-time, nullable, required
  - `applied_at` string, date-time, 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)
