---
title: "Make a workspace key [admin, owner or admin]"
method: POST
path: "/universes/{slug}/keys"
---

# Make a workspace key \[admin, owner or admin\]

`POST /universes/{slug}/keys`

## Request

- Base URL: `https://api.agentsky.dev/v1`
- URL: `https://api.agentsky.dev/v1/universes/{slug}/keys`
- Auth: HTTP bearer

The secret is returned only in this response. The key carries no more scope than the credential that makes it.

## Path parameters

- `slug` string, required

## Request body

- object
  - `name` string, required
  - `scopes` string[], required
  - `expires_at` string, date-time, nullable

## Response `201`

Created

- object
  - `key` WorkspaceKey, required
    - `id` string, required
    - `name` string, required
    - `prefix` string, required: The start of the secret, to tell one key from another.
    - `scopes` string[], required
    - `created_by` object, required
      - `user_id` string
      - `name` string, nullable
    - `created_at` string, date-time, required
    - `last_used_at` string, date-time, nullable
    - `expires_at` string, date-time, nullable
    - `revoked_at` string, date-time, nullable
  - `secret` string, required

## Other responses

- `default`: Error — { error: { code, message, request_id } }

## Changes

- **2026-11-02** `e5e8f0229a99`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/agentsky/apis/agentsky-developer-api/changes/universes/:slug/keys/post.md)

---

[API](https://skmtc.dev/agentsky/apis/agentsky-developer-api.md) - [All operations](https://skmtc.dev/agentsky/apis/agentsky-developer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/agentsky/apis/agentsky-developer-api/revisions/0d435187cd55?raw)
