---
title: "Create Self Serve Key"
method: POST
path: "/api/v1/admin/keys/self-serve"
tags: ["admin"]
---

# Create Self Serve Key

`POST /api/v1/admin/keys/self-serve`

## Request

- Base URL: `https://core.mnemoverse.com`
- URL: `https://core.mnemoverse.com/api/v1/admin/keys/self-serve`
- Auth: API key in header `X-Admin-Key`

Mint a key into the authenticated user's OWN user_<sub> tenant. Two proofs: X-Admin-Key
(caller = portal, via _require_admin) AND a valid forwarded user session (via _verify_session_sub).
The org is DERIVED from the session, never from the body — so this path may target the reserved
user_ namespace that POST /admin/keys forbids, without weakening that guard.

## Request body

- SelfServeKeyRequest
  - `name` string, required: Human-readable key name.
  - `tier` string
  - `rate_limit_per_min` integer
  - `atom_limit` integer
  - `daily_query_limit` integer

## Response `200`

Successful Response

- CreateKeyResponse
  - `id` string, required
  - `key` string, required: Full API key — returned only once.
  - `key_prefix` string, required
  - `organization_id` string, required
  - `tier` string, required

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `422`: Validation Error
- `429`: Rate limited
- `500`: Internal server error
- `503`: Service unavailable

---

[API](https://skmtc.dev/mnemoverse/apis/mnemoverse-core.md) · [All operations](https://skmtc.dev/mnemoverse/apis/mnemoverse-core/llms.txt) · [OpenAPI document](https://skmtc.dev/mnemoverse/apis/mnemoverse-core/revisions/1f5e0048f017?raw)
