---
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

---

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