---
title: "Upload all skills from a .zip archive"
method: POST
path: "/api/v1/claude/skills/upload-all"
tags: ["claude", "claude"]
---

# Upload all skills from a .zip archive

`POST /api/v1/claude/skills/upload-all`

Upload every skill found inside a `.zip` archive in a single request.

**Expected zip structure:**
```
skills.zip
├── 01-cinematic/
│   └── SKILL.md
├── 07-ecommerce-ad/
│   └── SKILL.md
└── ...
```

Each sub-folder must contain a `SKILL.md` with valid YAML frontmatter.

Returns a summary with `skill_id` and `latest_version` per skill, plus
error details for any failures.

Set **skip_existing=true** to safely re-run without creating duplicates.

## Response `200`

Successful Response

- BulkUploadResponse
  - `total` integer, required
  - `succeeded` integer, required
  - `failed` integer, required
  - `results` SkillUploadResult[], required
    - `folder` string, required
    - `display_title` string, required
    - `skill_id` string, nullable
    - `latest_version` string, nullable
    - `success` boolean, required
    - `error` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/brandbooster/apis/fastapi.md) · [All operations](https://skmtc.dev/brandbooster/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/brandbooster/fastapi/revisions/a9374f6fe96c/schema)
