---
title: "List the provider org's nodes (with GPUs + location)"
method: GET
path: "/v1/orgs/{orgId}/provider/nodes"
tags: ["Provider"]
---

# List the provider org's nodes (with GPUs + location)

`GET /v1/orgs/{orgId}/provider/nodes`

## Path parameters

- `orgId` string, required

## Query parameters

- `includeRemoved` boolean
- `status` string

## Response `200`

OK

- ProviderNode[]
  - `cpuCores` integer, nullable
  - `cpuModel` string, nullable
  - `createdAt` string, required
  - `gpus` NodeGpuItem[], required
    - `gpuName` string, required
    - `quantity` integer, required
    - `vramGb` integer, required
  - `hostname` string, required
  - `id` string, required
  - `locationCity` string, nullable
  - `locationCountry` string, nullable
  - `nodeType` string, required
  - `ramGb` integer, nullable
  - `reservation` NodeReservationSummary — Reservation state of this node, from the caller's point of view. Present only when some of the node's GPU units are reserved.
    - `releasedUnitCount` integer, required — GPU units this node's reservations have released to the spot market. They are still the reservation's capacity: anyone may buy them, but only at tier=spot, and the capacity owner can reclaim them at any time.
    - `reservations` NodeReservation[]
      - `allowedOrgIds` string[], required — The audience: orgs that may place workloads on the reserved units.
      - `contractRef` string
      - `createdAt` string
      - `endsAt` string — Absent = open-ended until cancelled
      - `id` string, required
      - `managingOrgIds` string[] — Orgs that may release these units to the market, reclaim them, and terminate the spot workloads on them, on the node owner's behalf. Being in the audience does not confer this.
      - `nodeId` string, required
      - `reason` string
      - `releasedUnitIds` string[] — The subset of reservedUnitIds currently on the spot market (double sell). Still this reservation's capacity, sellable to anyone at tier=spot only, and reclaimable at any time.
      - `reservedUnitIds` string[], required
      - `skipped` string[] — Reclaim only: VM ids left running because they are not spot.
      - `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.
      - `terminated` string[] — Reclaim only: spot VM ids terminated to free the reclaimed units.
      - `topologyGen` integer — Node topology generation this reservation was written against
      - `updatedAt` string
      - `wouldSkip` string[] — Reclaim dry run only: VM ids that would be left running.
      - `wouldTerminate` string[] — Reclaim dry run only: the spot VM ids this call would terminate.
    - `reservedUnitCount` integer, required — GPU units held exclusively for the audience right now
  - `runtime` string — Node runtime: qemu (VFIO VM host) or runc (GPU-container Pod node). Empty reads as qemu.
  - `status` string, required
  - `tdxEnabled` boolean, required

## Other responses

- `400` — The request is invalid
- `401` — Missing or invalid API key
- `403` — API key lacks the required scope

---

[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/revisions/b75b478564cc/schema)
