---
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
    - `record_type` string
    - `id` string, uuid
    - `name` 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.
    - `created_at` string, date-time
    - `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

> 92 revisions in range; 1 not diffed.

- **2026-09-16** `a6a61a29ecdd` — 3 breaking, 3 warning, 6 info
  - the `errors/items/code` response's property type changed from `string` to `integer`, and format from no format to `int32` for status `400`
  - the `errors/items/code` response's property type changed from `string` to `integer`, and format from no format to `int32` for status `401`
  - the `errors/items/code` response's property type changed from `string` to `integer`, and format from no format to `int32` for status `409`
  - removed the optional property `errors/items/meta/url` from the response with the `400` status
  - …8 more
- **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
- …earlier changes not shown

[Full 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.dev/team-telnyx/apis/telnyx-api-2/revisions/d8b8159753ee?raw)
