---
title: "Upload a copilot skill as a zipped package"
method: POST
path: "/api/skills/package"
tags: ["v1", "skills"]
---

# Upload a copilot skill as a zipped package

`POST /api/skills/package`

Create a skill from a zipped package — a root ``SKILL.md`` plus the
files beside it.

The zip is transport only: it is unpacked here and stored as the skill's
folder, so the model reaches ``scripts/`` and ``references/`` by path
exactly as it does for a package copied from another skill.

## Query parameters

- `expert_id` string, nullable — Store the skill as this expert's own.

## Response `201`

Successful Response

- CopilotSkillInfo — User-distilled copilot skill metadata for the library UI. Defaults (built-in agent-building / MCP-tool guides) are intentionally excluded — they cannot be edited or deleted, so surfacing them in the user-facing list would add noise without affordances.
  - `name` string, required
  - `description` string, required
  - `triggers` string[]

## Other responses

- `400` — Unreadable archive, or a malformed SKILL.md or path
- `401` — Authentication required
- `409` — Per-user skill limit reached
- `413` — Archive, file or file count over the package limit
- `422` — Validation Error

## Changes

- **2026-09-15** `33ef6a92dfc2` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/significant-gravitas/apis/autogpt-agent-server/changes/api/skills/package/post.md)

---

[API](https://skmtc.dev/significant-gravitas/apis/autogpt-agent-server.md) · [All operations](https://skmtc.dev/significant-gravitas/apis/autogpt-agent-server/llms.txt) · [OpenAPI document](https://skmtc.dev/significant-gravitas/apis/autogpt-agent-server/revisions/5f27fa9d6c03?raw)
