---
title: "Update a custom skill (partial)"
method: PATCH
path: "/api/v1/agents/{id}/skills/custom/{skillId}"
tags: ["Agents API"]
---

# Update a custom skill (partial)

`PATCH /api/v1/agents/{id}/skills/custom/{skillId}`

## Request

- Base URL: `https://three.ws`
- URL: `https://three.ws/api/v1/agents/{id}/skills/custom/{skillId}`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

## Path parameters

- `id` string, required
- `skillId` string, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `name` string: Skill name.
  - `description` string: What the skill does.
  - `content` string: Markdown instructions.
  - `tags` string[]
  - `version` string: Semver.
  - `enabled` boolean

## Response `200`

The { data, meta: { requestId, timestamp } } envelope.

## Other responses

- `400`: invalid_parameter, bad_json or a route-specific validation code.
- `401`: unauthorized
- `403`: insufficient_scope
- `404`: not_found
- `429`: rate_limited, with Retry-After.

---

[API](https://skmtc.dev/three/apis/three-ws-api.md) · [All operations](https://skmtc.dev/three/apis/three-ws-api/llms.txt) · [OpenAPI document](https://skmtc.dev/three/apis/three-ws-api/revisions/dbc5e3a81b79?raw)
