(Deprecated) Update a skill's metadata or content.
PUT /api/v1/cloud/skills/{skill_id}
⚠️ This endpoint is deprecated and will be removed in a future release.Updates the metadata or content of the specified skill. Only JSON request bodies are supported.
- For content updates, use Create a skill version:
POST /api/v1/cloud/skills/{skill_id}/versions. Whencontentis updated through this endpoint, a new version is created internally rather than overwriting in place.namecannot be changed: the skill name must stay consistent across all versions; sending anamedifferent from the current one returns 400.- Patch updates to
description/metadatastill work, but are also scheduled for removal.
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
skill_id | string | Yes | Skill unique identifier |
Headers
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer <PAT or SAT> |
Content-Type | Yes | application/json |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | No | ⚠️ Deprecated: renaming is no longer supported — a value different from the current name returns 400; the current value is a no-op (no replacement: name is immutable across versions) |
description | string | No | ⚠️ Deprecated: updates the skill shell description; scheduled for removal (the description is maintained per version via SKILL.md frontmatter instead) |
content | string | No | ⚠️ Deprecated: base64-encoded zip; internally converted into a new version. Plain-text content is no longer accepted and returns 400 (use POST /skills/{skill_id}/versions instead) |
content_encoding | string | No | ⚠️ Deprecated: must be "base64" when content is a base64-encoded zip (same replacement as above) |
metadata | object | No | ⚠️ Deprecated: replaces the stored metadata object; scheduled for removal (no replacement yet) |
Example request
Example response
HTTP 200 OK
Response notes
updated_atis refreshed to the operation time.- Updating
contentcreates a new version;latest_versionpoints to it. - Metadata-only updates do not create a new version.
- Fields not included in the request body retain their previous values.
Errors
| HTTP | Type | Trigger |
|---|---|---|
| 400 | invalid_request_error | Used multipart instead of a JSON request body |
| 400 | invalid_request_error | name differs from the current name (renaming is not allowed), or the SKILL.md name inside the base64 zip does not match the skill's existing name |
| 400 | invalid_request_error | Plain-text content without content_encoding (no longer accepted; use a base64 zip or the versions endpoint) |
| 401 | TOKEN_INVALID | Missing or invalid authentication token |
| 404 | not_found_error | Skill does not exist or is no longer accessible |
| 409 | conflict_error | Optimistic concurrency conflict |