---
title: "Create Skill"
method: POST
path: "/v1/skills"
tags: ["Skills"]
---

# Create Skill

`POST /v1/skills`

Create a new skill in a collection from multipart form fields and uploaded files.

## Headers

- `anthropic-beta` string[], nullable

## Response `200`

Skill created successfully.

- SkillResponse — Serialized skill object returned by skills endpoints.
  - `id` string, required — Unique skill identifier.
  - `created_at` string, date-time, required — Creation timestamp.
  - `display_title` string, required — Human display title.
  - `latest_version` string, nullable — Latest version token for this skill.
  - `source` 'custom' | 'anthropic' | 'zylon', required — Source of the skill.
  - `type` 'skill' — Object type.
  - `updated_at` string, date-time, required — Update timestamp.
  - `collection` string, required — Tenant identifier (org_id boundary).
  - `loading` 'eager' | 'lazy', required — Instruction loading strategy.
  - `readonly` boolean, required — Readonly flag.

## Other responses

- `401` — Unauthorized
- `422` — Validation Error

---

[API](https://skmtc.net/zylon-ai/apis/private-gpt-api.md) · [All operations](https://skmtc.net/zylon-ai/apis/private-gpt-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zylon-ai/private-gpt-api/versions/594fa71dfb90/schema)
