---
title: "Provision a publisher namespace and authorize its principals"
method: POST
path: "/v1/admin/registry/publishers"
tags: ["admin"]
---

# Provision a publisher namespace and authorize its principals

`POST /v1/admin/registry/publishers`

## Request

- Base URL: `https://api.runx.ai`
- URL: `https://api.runx.ai/v1/admin/registry/publishers`
- Auth: HTTP bearer

The only way to take a reserved slug. A principal publishes for a namespace only through this authorization or by claiming its own verified GitHub handle.

## Request body

- AdminRegistryPublisherRequest
  - `slug` string, required
  - `kind` 'org' | 'user' | 'team', required
  - `display_name` string, required
  - `verified` boolean
  - `principals` string[], required

## Response `201`

Provisioned publisher.

- AdminRegistryPublisherResponse
  - `status` 'success', required
  - `publisher` AdminRegistryPublisher, required
    - `publisher_id` string, required
    - `slug` string, required
    - `kind` 'org' | 'user' | 'team', required
    - `display_name` string, required
    - `description` string
    - `verified` boolean, required
    - `image_sha256` string
    - `links` PublicOwnerProfileLink[], required
      - `label` string, required
      - `url` string, uri, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required

## Other responses

- `400`: Validation error, or the slug is taken.
- `401`: Unauthorized.
- `403`: Forbidden.
- `503`: Registry publishers unavailable.

---

[API](https://skmtc.dev/runx/apis/runx-hosted-api.md) · [All operations](https://skmtc.dev/runx/apis/runx-hosted-api/llms.txt) · [OpenAPI document](https://skmtc.dev/runx/apis/runx-hosted-api/revisions/6c940d8edacc?raw)
