---
title: "Publish skill namespace tree"
method: POST
path: "/agent/skills/namespaces/{id}/publish"
tags: ["Agents"]
---

# Publish skill namespace tree

`POST /agent/skills/namespaces/{id}/publish`

Upload a tree of skill files for the namespace. Authenticated by the namespace bearer token. Atomic at the version-bump level: a partial upload leaves the namespace pinned to the previous version.

## Path parameters

- `id` string, required

## Request body

- object
  - `files` object[], required
    - `path` string, required
    - `content` string, required
    - `encoding` 'utf8' | 'base64', required
    - `contentType` string, nullable

## Response `200`

Publish accepted. New version is now current.

## Other responses

- `400` — Validation error
- `401` — Missing or invalid namespace token
- `403` — Token does not match :id
- `409` — Concurrent publish raced; retry

---

[API](https://skmtc.net/casemark/apis/case-dev-api.md) · [All operations](https://skmtc.net/casemark/apis/case-dev-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/casemark/case-dev-api/revisions/5b7e64e6d6f9/schema)
