---
title: "Upload a skill bundle"
method: PUT
path: "/skills/{namespace}/{slug}/upload"
tags: ["skills"]
---

# Upload a skill bundle

`PUT /skills/{namespace}/{slug}/upload`

## Request

- Base URL: `https://api.smithery.ai`
- URL: `https://api.smithery.ai/skills/{namespace}/{slug}/upload`
- Auth: HTTP bearer

Upload or replace a skill bundle via multipart/form-data with an `archive` file.

## Path parameters

- `namespace` string, required
- `slug` string, required

## Request body `multipart/form-data`

- object
  - `archive` string, binary, required: ZIP file upload containing a skill folder with SKILL.md and any scripts, references, or assets.

## Response `200`

Skill updated successfully

- object
  - `id` string, required
  - `namespace` string, required
  - `slug` string, required
  - `displayName` string, required
  - `description` string, required
  - `gitUrl` string, nullable, required
  - `externalStars` number, required
  - `listed` boolean, required
  - `createdAt` string, required
  - `updatedAt` string, required

## Other responses

- `201`: Skill created successfully
- `400`: Invalid request
- `403`: Forbidden - user does not own the namespace
- `404`: Namespace not found
- `422`: SKILL.md validation error
- `502`: Failed to store uploaded skill bundle

## Changes

- **2026-03-13** `43d4f1082544`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/smithery-ai/apis/smithery-platform-api/changes/skills/:namespace/:slug/upload/put.md)

---

[API](https://skmtc.dev/smithery-ai/apis/smithery-platform-api.md) - [All operations](https://skmtc.dev/smithery-ai/apis/smithery-platform-api/llms.txt) - [OpenAPI document](https://skmtc.dev/smithery-ai/apis/smithery-platform-api/revisions/17463ce9a13a?raw)
