---
title: "Take released GPU units back into a reservation (platform admin)"
method: POST
path: "/v1/nodes/{nodeId}/reservations/{id}/reclaim"
tags: ["Reservations"]
---

# Take released GPU units back into a reservation (platform admin)

`POST /v1/nodes/{nodeId}/reservations/{id}/reclaim`

Returns the named units to the reservation. Anything running on them is subject to termination by the node's owning org.

## Path parameters

- `nodeId` string, required
- `id` string, required

## Request body

- ReservationUnitsRequest
  - `unitIds` string[], required

## Response `200`

OK

- NodeReservation — Exclusive placement rights for a set of orgs over specific GPU units of one node, for a term. Scoped to units, not GPU counts, because units are the indivisible allocation primitive.
  - `allowedOrgIds` string[], required
  - `contractRef` string
  - `createdAt` string
  - `endsAt` string — Absent = open-ended until cancelled
  - `id` string, required
  - `nodeId` string, required
  - `reason` string
  - `reservedUnitIds` string[], required
  - `startsAt` string, required
  - `status` 'pending' | 'active' | 'expired' | 'cancelled' | 'needs-review', required — needs-review means the node's GPU topology changed under the reservation: it grants nothing (and withholds its units from everyone) until an operator re-affirms it.
  - `topologyGen` integer — Node topology generation this reservation was written against
  - `updatedAt` string

## Other responses

- `400` — The request is invalid
- `401` — Missing or invalid API key
- `403` — API key lacks the required scope
- `404` — Resource not found
- `409` — The request conflicts with existing state

---

[API](https://skmtc.net/openrelay/apis/openrelay-api.md) · [All operations](https://skmtc.net/openrelay/apis/openrelay-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openrelay/openrelay-api/versions/32905b8f44f8/schema)
