---
title: "Create a new control plane"
method: POST
path: "/v1/mesh/control-planes"
tags: ["Mesh"]
---

# Create a new control plane

`POST /v1/mesh/control-planes`

Create a new control plane

## Request body

- CreateMeshControlPlaneRequest — a payload to create a control plane
  - `name` string, required — The name of the control plane.
  - `description` string
  - `features` MeshControlPlaneFeature[]
    - `type` 'MeshCreation' | 'HostnameGeneratorCreation', required
    - `hostnameGeneratorCreation` MeshControlPlaneFeatureHostnameGenerationCreation
      - `enabled` boolean, required
    - `meshCreation` MeshControlPlaneFeatureMeshCreation
      - `enabled` boolean, required
  - `labels` MeshControlPlaneLabels, nullable — Labels to facilitate tagged search on control planes. Keys must be of length 1-63 characters.

## Response `201`

A response to creating a control plane.

- MeshControlPlane — a control plane
  - `id` string, uuid, required — ID of the control plane.
  - `name` string, required — The name of the control plane.
  - `description` string
  - `labels` MeshControlPlaneLabels, nullable — Labels to facilitate tagged search on control planes. Keys must be of length 1-63 characters.
  - `features` MeshControlPlaneFeature[]
    - `type` 'MeshCreation' | 'HostnameGeneratorCreation', required
    - `hostnameGeneratorCreation` MeshControlPlaneFeatureHostnameGenerationCreation
      - `enabled` boolean, required
    - `meshCreation` MeshControlPlaneFeatureMeshCreation
      - `enabled` boolean, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `400` — Validation Error
- `401` — Unauthorized Error
- `403` — Permission denied

## Changes

> 52 revisions in range; 1 could not be searched.

- **2025-10-29** `19e869275e28` — 1 warning
  - added the new `type` enum value to the `allOf[subschema #2]/invalid_parameters/items/oneOf[#/components/schemas/InvalidParameterStandard]/rule` response property for the response status `400`
- **2025-08-22** `96118a9cd7f4` — 5 breaking
  - the response property `allOf[subschema #2]/invalid_parameters/items/oneOf[#/components/schemas/InvalidParameterChoiceItem]/source` became nullable for the status `400`
  - the response property `allOf[subschema #2]/invalid_parameters/items/oneOf[#/components/schemas/InvalidParameterDependentItem]/source` became nullable for the status `400`
  - the response property `allOf[subschema #2]/invalid_parameters/items/oneOf[#/components/schemas/InvalidParameterMaximumLength]/source` became nullable for the status `400`
  - the response property `allOf[subschema #2]/invalid_parameters/items/oneOf[#/components/schemas/InvalidParameterMinimumLength]/source` became nullable for the status `400`
  - …1 more
- **2025-03-13** `ddd4be7ea073` — 2 info
  - the response required property `created_at` became read-only for the status `201`
  - the response required property `updated_at` became read-only for the status `201`
- **2025-03-05** `ceb048468954` — 2 info
  - added the new optional request property `features`
  - added the optional property `features` to the response with the `201` status
- …earlier changes not shown

[Full history](https://skmtc.dev/kong/apis/konnect-api/changes/v1/mesh/control-planes/post.md)

---

[API](https://skmtc.dev/kong/apis/konnect-api.md) · [All operations](https://skmtc.dev/kong/apis/konnect-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kong/konnect-api/revisions/72502a676a92/schema)
