---
title: "Create an LKS cluster"
method: POST
path: "/lks/clusters"
tags: ["LKS"]
---

# Create an LKS cluster

`POST /lks/clusters`

Creates an LKS cluster. The cluster is the control plane only — worker capacity is added separately through node pools (`POST /lks/clusters/{cluster_id}/nodepools`).

`site` must be one of the slugs returned by `GET /lks/sites`, and `kubernetes_version` must be a patch listed by `GET /lks/available_versions` with `available_for_creation: true`.

The cluster is returned immediately with `status: "provisioning"`. Poll `GET /lks/clusters/{id}` until `status` is `ready`, then fetch the kubeconfig.

## Request body

- CreateLksCluster
  - `data` object, required
    - `type` 'lks_clusters', required
    - `attributes` object, required
      - `name` string, required — Display name for the cluster
      - `project_id` string, required — The project ID
      - `site` string, required — Site slug (single site per cluster)
      - `kubernetes_version` string, required — Kubernetes patch, exactly as listed by /lks/available_versions
      - `description` string — Optional customer description
      - `network` object, nullable — Optional network overrides; platform defaults used if omitted
        - `pod_cidrs` string[]
        - `service_cidrs` string[]
        - `node_cidrs` string[]

## Response `201`

Created

## Other responses

- `403` — Forbidden
- `404` — Not Found
- `422` — Unprocessable Entity
- `502` — Bad Gateway — NetBox is temporarily unavailable

## Changes

- **2026-09-16** `2e0ac09a58ac` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/latitude/apis/latitude-sh-api/changes/lks/clusters/post.md)

---

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