---
title: "Create an SKS cluster"
method: POST
path: "/sks-cluster"
tags: ["cluster"]
---

# Create an SKS cluster

`POST /sks-cluster`

## Request

- Base URL: `https://api-ch-gva-2.exoscale.com/v2`
- URL: `https://api-ch-gva-2.exoscale.com/v2/sks-cluster`
- Auth: none declared
- TypeScript: <https://skmtc.dev/exoscale/apis/exoscale-api/docs/sks-cluster/post.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- object
  - `description` string, nullable: Cluster description
  - `labels` SksClusterLabels
  - `cni` 'calico' | 'cilium': Cluster CNI
  - `auto-upgrade` boolean: Enable auto upgrade of the control plane to the latest patch version available
  - `networking` Networking: EXPERIMENTAL: Cluster networking configuration.
    - `cluster-cidr` string: CIDR Range for Pods in cluster. This must not overlap with any IP ranges assigned to pods. Max of two, comma-separated, dual-stack CIDRs is allowed. If not specified, defaults to 192.168.0.0/16.
    - `service-cluster-ip-range` string: CIDR range for service cluster IPs. This must not overlap with any IP ranges assigned to nodes or pods. Max of two, comma-separated, dual-stack CIDRs is allowed. The IPv6 range must be no larger than a /108 (upstream Kubernetes apiserver limit). If not specified, defaults to 10.96.0.0/12.
    - `node-cidr-mask-size-ipv4` integer: Mask size for node cidr in cluster. It must be larger than, and at most 16 bits longer than, the Pod CIDR subnet mask. Defaults to 24
    - `node-cidr-mask-size-ipv6` integer: Mask size for node cidr in cluster. It must be larger than, and at most 16 bits longer than, the Pod CIDR subnet mask. Defaults to 64
  - `oidc` SksOidc: SKS Cluster OpenID config map
    - `client-id` string, required: OpenID client ID
    - `issuer-url` string, required: OpenID provider URL
    - `username-claim` string: JWT claim to use as the user name
    - `username-prefix` string: Prefix prepended to username claims
    - `groups-claim` string: JWT claim to use as the user's group
    - `groups-prefix` string: Prefix prepended to group claims
    - `required-claim` object: A key value map that describes a required claim in the ID Token
  - `name` string, required: Cluster name
  - `create-default-security-group` boolean, nullable: Creates an ad-hoc security group based on the choice of the selected CNI
  - `enable-kube-proxy` boolean: Indicates whether to deploy the Kubernetes network proxy. When unspecified, defaults to `true` unless Cilium CNI is selected
  - `level` 'starter' | 'pro', required: Cluster service level
  - `feature-gates` string[]: A list of Kubernetes-only Alpha features to enable for API server component
  - `addons` string[]: Cluster addons
  - `audit` SksAuditCreate: Kubernetes Audit parameters
    - `endpoint` string, required
    - `bearer-token` string, required
    - `initial-backoff` string
  - `version` string, required: Control plane Kubernetes version

## Response `200`

200

- Operation: Operation
  - `id` string, uuid: Operation ID
  - `reason` 'incorrect' | 'unknown' | 'unavailable' | 'forbidden' | 'busy' | 'fault' | 'partial' | 'not-found' | 'interrupted' | 'unsupported' | 'conflict': Operation failure reason
  - `reference` object: Related resource reference
    - `id` string, uuid: Reference ID
    - `link` string: Link to the referenced resource
    - `command` string: Command name
  - `message` string: Operation message
  - `state` 'failure' | 'pending' | 'success' | 'timeout': Operation status

## Changes

- **2026-03-16** `e05707a7b346`: 2 info
  - api tag `cluster` added
  - api tag `sks` removed
- **2025-11-14** `352cae63dff6`: 2 info
  - added the new optional request property `audit`
  - added the new `karpenter` enum value to the request property `addons/items/`
- **2025-08-10** `814bf1ccd925`: 2 info
  - added the new optional request property `create-default-security-group`
  - added the new optional request property `networking`
- **2025-05-22** `37a05010e8b4`: 2 info
  - added the new optional request property `enable-kube-proxy`
  - added the new optional request property `feature-gates`
- **2024-05-22** `d1903c399d90`: 2 info
  - the request property `description` became nullable
  - added the new `exoscale-container-storage-interface` enum value to the request property `addons/items/`

[Operation history](https://skmtc.dev/exoscale/apis/exoscale-api/changes/sks-cluster/post.md)

---

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