---
title: "Get a Kubernetes cluster"
method: GET
path: "/v1/kubernetes/clusters/{id}"
tags: ["Kubernetes"]
---

# Get a Kubernetes cluster

`GET /v1/kubernetes/clusters/{id}`

Needs clusters:read on an API key, or any organization role on a session.

## Path parameters

- `id` string, required

## Response `200`

The cluster

- KubernetesCluster — A managed Kubernetes cluster. We run its control plane; its nodes are whole hosts in one data center. Credentials are never part of it: use createKubernetesClusterToken or getKubernetesKubeconfig.
  - `conditions` KubernetesCondition[]
    - `lastTransitionTime` string — RFC 3339.
    - `message` string
    - `reason` string — Machine-readable reason for the last transition.
    - `status` 'True' | 'False' | 'Unknown', required
    - `type` string, required — Condition type, for example Ready.
  - `controlPlane` KubernetesControlPlane, required — The managed control plane. One size, two replicas.
    - `readyReplicas` integer, required
    - `replicas` integer, required — Desired API server replicas.
  - `createdAt` string, required
  - `id` string, uuid, required — Cluster id. It is also the first label of the API server hostname.
  - `kubernetesVersion` string, required — Kubernetes version of the control plane and every node, for example v1.37.1.
  - `locationId` string, required — The data center the cluster's nodes run in. A cluster never spans data centers.
  - `name` string, required
  - `network` KubernetesClusterNetwork, required
    - `apiEndpoint` string, required — The API server URL, https://<id>.k8s.<zone>:6443, the only port it is served on. Its hostname is also the TLS server name every client and node connects with.
    - `podCidr` string, required — Pod network, 10.244.0.0/14 in every cluster.
    - `serviceCidr` string, required — Service network, 10.96.0.0/16 in every cluster.
  - `nodeCounts` KubernetesNodeCounts, required
    - `notReady` integer, required — Joined nodes that are not Ready.
    - `pending` integer, required — Nodes registered but not yet joined.
    - `ready` integer, required — Nodes that are Ready.
    - `total` integer, required — Every node the cluster's pools hold.
  - `orgId` string, required
  - `status` 'creating' | 'ready' | 'updating' | 'degraded' | 'deleting' | 'failed', required — creating: the control plane is being provisioned, and stays creating until it is serving and authorizes the platform's own writes. ready: fully operational. updating: a control-plane change is in progress. degraded: partially operational, for example the control plane stopped serving or its datastore is write-limited. deleting: deletion is in progress and final. failed: an unrecoverable error.
  - `updatedAt` string, required

## Other responses

- `401` — Missing or invalid API key
- `403` — The caller is authenticated but may not do this. The caller's role or the API key's scope does not allow it, or the request targets another organization (FORBIDDEN, or NOT_A_MEMBER for a session), or the organization is suspended pending review (ORG_SUSPENDED) or has been deleted (ORG_DISABLED). A new API key or a wider scope clears neither of the last two; see [Account and balance refusals](https://docs.openrelay.inc/docs/errors#account-and-balance-refusals).
- `404` — Resource not found

## Changes

- **2026-10-03** `bcf63adad2c3` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/openrelay/apis/openrelay-api/changes/v1/kubernetes/clusters/:id/get.md)

---

[API](https://skmtc.dev/openrelay/apis/openrelay-api.md) · [All operations](https://skmtc.dev/openrelay/apis/openrelay-api/llms.txt) · [OpenAPI document](https://skmtc.dev/openrelay/apis/openrelay-api/revisions/bcf63adad2c3?raw)
