---
title: "Create a registry"
method: POST
path: "/registries"
tags: ["Registries"]
---

# Create a registry

`POST /registries`

Create a registry

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `slug` string, required — Lowercase slug, unique across registries.
  - `name` string, required
  - `description` string, nullable
  - `is_public` boolean
  - `publish_policy` 'owner_only' | 'request' | 'open' — Who may publish into a registry. owner_only: only the registry owner. request: anyone may request and the owner approves. open: anyone may publish and it lists immediately (no approval step).

## Response `201`

Registry created

- object
  - `success` true, required
  - `data` object, required
    - `id` string, uuid, required
    - `slug` string, required

## Other responses

- `401` — Invalid or missing API key
- `403` — Authenticated caller lacks permission for the operation
- `409` — The request conflicts with the current state of the resource
- `422` — The request was well-formed but could not be processed. For Payments this covers a missing payout address, a failed payment verification, a spend-policy decline, or an expired challenge; `error.code` distinguishes them.

---

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