---
title: "Lists all Kubernetes node pools in the project and returns their details."
method: GET
path: "/projects/{project_id}/kubernetes/nodepools"
tags: ["Kubernetes Node Pools"]
---

# Lists all Kubernetes node pools in the project and returns their details.

`GET /projects/{project_id}/kubernetes/nodepools`

Results can be narrowed to a single cluster with the cluster_id query parameter.

## Path parameters

- `project_id` string, required

## Query parameters

- `cluster_id` string
- `sort` string

## Response `200`

- ListKubernetesNodePoolsResponse
  - `items` KubernetesNodePool[], required
    - `cluster_id` string, required — ID of the Kubernetes cluster the node pool belongs to.
    - `count` integer, required — Number of nodes in the node pool.
    - `created_at` string, required — Creation timestamp of the node pool, in RFC3339 format.
    - `ephemeral_storage_for_containerd` boolean, required — Whether the first local ephemeral NVMe disk is used for containerd storage.
    - `id` string, required — ID of the node pool.
    - `image_id` string, required — ID of the image used for the node pool.
    - `instance_details` InstanceDetails[] — Details about the instances within the node pool.
      - `id` string, required — ID of the instance.
      - `using_latest_config` boolean, required — Whether the instance was created with the current node pool configuration.
    - `instance_ids` string[], required — IDs of the instances within the node pool.
    - `name` string, required — Name of the node pool.
    - `node_labels` object, required — Labels assigned to nodes in the node pool.
    - `node_taints` KubernetesNodeTaint[], required — Taints applied to nodes in the node pool.
      - `effect` 'NoSchedule' | 'PreferNoSchedule' | 'NoExecute', required — Taint effect, controlling how pods are treated on matching nodes: NoSchedule: new pods are not scheduled unless they tolerate. PreferNoSchedule: new pods avoid the node if possible. NoExecute: new pods are not scheduled AND existing non-tolerating pods are evicted.
      - `key` string, required — Taint key. Follows the Kubernetes qualified-name format: an optional DNS subdomain prefix (up to 253 characters) followed by a '/', then a name segment (up to 63 characters). Allowed characters: alphanumerics, '-', '_', and '.'. Must start and end with an alphanumeric character. Keys beginning with "crusoe.ai/" are reserved for internal use.
      - `value` string — Taint value. May be empty. Follows the same format rules as a Kubernetes label value: up to 63 characters, alphanumerics and '-', '_', '.'.
    - `nvlink_domain_id` string — NVLink domain ID assigned to the node pool.
    - `project_id` string, required — ID of the project that owns the node pool.
    - `public_ip_type` string — Public IP type for the node pool's nodes: dynamic, static, or none.
    - `reservation_id` string, required — ID of the billing reservation associated with the node pool.
    - `state` string, required — Current state of the node pool.
    - `subnet_id` string, required — ID of the subnet the node pool belongs to.
    - `type` string, required — VM type of the node pool.
    - `updated_at` string, required — Last update timestamp of the node pool, in RFC3339 format.

## Other responses

- `401` — Error Authentication Failed
- `500` — Error Internal Server

---

[API](https://skmtc.net/crusoecloud/apis/crusoe-cloud-api-gateway.md) · [All operations](https://skmtc.net/crusoecloud/apis/crusoe-cloud-api-gateway/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/crusoecloud/crusoe-cloud-api-gateway/revisions/a3fd2dedc72b/schema)
