---
title: "Get Node"
method: GET
path: "/api/admin/inventory/nodes/{node_id}"
tags: ["admin-inventory"]
---

# Get Node

`GET /api/admin/inventory/nodes/{node_id}`

One node with every assignment window and contract it holds.

`nodes list` shows only the membership covering today; this shows the whole
history, which is what surfaces a node double-booked across two clusters.

## Path parameters

- `node_id` string, required

## Response `200`

Successful Response

- GenericResponseInventoryNodeDetail
  - `data` InventoryNodeDetail — A node with every membership window and contract it holds.
    - `id` string, required
    - `name` string, required
    - `siteId` string, nullable
    - `siteSlug` string, nullable
    - `isBlankSite` boolean
    - `role` string, required
    - `gpuCount` integer, nullable
    - `publicIp` string, nullable
    - `privateIp` string, nullable
    - `sshUser` string, nullable
    - `nodeTypeId` string, nullable
    - `nodeTypeModel` string, nullable
    - `nodeTypeSlug` string, nullable
    - `activeClusterId` string, nullable
    - `activeClusterSlug` string, nullable
    - `activeIsController` boolean, nullable
    - `tenantId` string, nullable
    - `tenantSlug` string, nullable
    - `isUnassigned` boolean
    - `currentClusterId` string, nullable
    - `currentClusterSlug` string, nullable
    - `currentStartDate` string, date-time, nullable
    - `currentEndDate` string, date-time, nullable
    - `contractId` string, nullable
    - `contractName` string, nullable
    - `contractEndDate` string, date-time, nullable
    - `assignments` InventoryAssignmentSummary[]
      - `id` string, required
      - `nodeId` string, required
      - `nodeName` string, required
      - `clusterId` string, required
      - `clusterName` string, required
      - `clusterSlug` string, nullable
      - `status` string, required
      - `type` string, required
      - `isController` boolean
      - `startDate` string, date-time, nullable
      - `endDate` string, date-time, nullable
    - `contracts` InventoryNodeContractSummary[]
      - `id` string, required
      - `name` string, required
      - `status` string, required
      - `startDate` string, date-time, required
      - `endDate` string, date-time, nullable
      - `continuesFromId` string, nullable
  - `status` string, nullable — Response status

## Other responses

- `401` — Authorization failed
- `403` — Insufficient permissions
- `422` — Invalid request data

## Changes

- **2026-09-04** `cf5a8be325a9` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/primeintellect/apis/pi-api/changes/api/admin/inventory/nodes/:node_id/get.md)

---

[API](https://skmtc.dev/primeintellect/apis/pi-api.md) · [All operations](https://skmtc.dev/primeintellect/apis/pi-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/primeintellect/pi-api/revisions/cf5a8be325a9/schema)
