---
title: "Validate Skill"
method: POST
path: "/v1/skills/validate"
tags: ["skills"]
---

# Validate Skill

`POST /v1/skills/validate`

Dry-run validation of skill files and metadata without persisting.

## Request body

- BodyValidateSkillV1SkillsValidatePost — Body_validate_skill_v1_skills_validate_post schema.
  - `display_title` string, required — display title field.
  - `collection` string, required — collection field.
  - `loading` 'eager' | 'lazy' — loading field.

## Response `200`

Validation result.

- SkillValidationResponse — Result of a dry-run skill validation.
  - `valid` boolean, required — Whether the skill payload would be accepted.
  - `name` string, nullable — Parsed skill name from SKILL.md frontmatter (when valid).
  - `description` string, nullable — Parsed skill description from SKILL.md frontmatter (when valid).
  - `errors` SkillValidationError[] — Validation errors (when invalid).
    - `code` string, required — Uppercase error code identifying the failure kind.
    - `message` string, required — Human-readable description of the error.
    - `params` object, nullable — Optional i18n interpolation parameters (e.g. {'size': '10'}).

## Other responses

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

---

[API](https://skmtc.dev/privategpt/apis/api-reference.md) · [All operations](https://skmtc.dev/privategpt/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/privategpt/api-reference/revisions/15d9ccfd68da/schema)
