---
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`

## Request

- The document declares no server URL.
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/significant-gravitas/apis/autogpt-agent-server/docs/api/skills/package/post.ts> (a function with typed inputs; its response is checked against the schema)

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.

## Request body `multipart/form-data`

- BodyUploadCopilotSkillPackage
  - `file` string, binary, required

## 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[]
  - `origin` string, nullable
  - `update` string, nullable
  - `argument_hint` string, nullable
  - `user_invocable` boolean

## 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-11-04** `4a257e07d884`: 2 info
  - added the optional property `argument_hint` to the response with the `201` status
  - added the optional property `user_invocable` to the response with the `201` status
- **2026-09-26** `f554d8b565c9`: 2 info
  - added the optional property `origin` to the response with the `201` status
  - added the optional property `update` to the response with the `201` status
- **2026-09-15** `33ef6a92dfc2`: 1 info
  - endpoint added

[Operation 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/ab4c69cd5329?raw)
