---
title: "Create a KV namespace"
method: POST
path: "/storage/kvs"
tags: ["kv namespaces"]
---

# Create a KV namespace

`POST /storage/kvs`

Creates a new KV namespace. Provisioning is asynchronous: the namespace is returned with status `pending` and becomes usable once it reaches `provision_ok`.

## Request body

- CreateKvNamespaceRequest
  - `name` string, required — Namespace name. May contain lowercase letters, numbers, and hyphens only.

## Response `201`

KV namespace created successfully

- KvNamespaceResponseWrapper
  - `data` KvNamespace
    - `created_at` string, date-time
    - `id` string, uuid
    - `name` string
    - `record_type` string
    - `status` 'pending' | 'provision_ok' | 'provision_failed' | 'deleting' | 'delete_failed' — Provisioning status. A namespace is usable once `status` is `provision_ok`. Once deletion completes, the namespace no longer appears in the API.
    - `updated_at` string, date-time

## Other responses

- `400` — Bad request — missing or invalid `name`
- `401` — Unauthorized
- `409` — Conflict — a namespace with this name already exists for your organization
- `500` — Internal server error

## Changes

- **2026-08-17** `1571b0380bd7` — 9 breaking, 3 info
  - the response property `errors/items/code` became optional for the status `400`
  - the response property `errors/items/code` became optional for the status `401`
  - the response property `errors/items/code` became optional for the status `409`
  - the response property `errors/items/title` became optional for the status `400`
  - …8 more
- **2026-08-04** `8f5f4e537994` — 3 breaking, 3 warning, 6 info
  - the `errors/items/code` response's property type/format changed from `string`/`` to `integer`/`int32` for status `400`
  - the `errors/items/code` response's property type/format changed from `string`/`` to `integer`/`int32` for status `401`
  - the `errors/items/code` response's property type/format changed from `string`/`` to `integer`/`int32` for status `409`
  - removed the optional property `errors/items/meta/url` from the response with the `400` status
  - …8 more
- **2026-07-23** `eb02d7e7280b` — 1 info
  - the endpoint scheme security `bearerAuth` was removed from the API

[Change history](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/changes/storage/kvs/post.md)

---

[API](https://skmtc.dev/team-telnyx/apis/telnyx-api-2.md) · [All operations](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/team-telnyx/telnyx-api-2/revisions/3fdc16374d70/schema)
