/v1/skills/{skill_id}Add a skill revisionUploads a new zip bundle as a new revision of an existing skill. Pass the revision you expect to replace as the required expected_revision; the request fails with 409 if the skill has already moved past it, so the update cannot race a concurrent write. Name and description are re-read from the new bundle.
Parameters
skill_idstringpathrequiredSkill identifier returned by create or `GET /v1/skills`
expected_revisionstringqueryrequiredOpaque revision token the skill must currently be at. The write applies only if it matches, so it cannot race a concurrent update.
Request body
requiredThe skill bundle as a zip archive
multipart/form-data
filestring · binaryrequiredThe skill bundle, a zip archive containing `SKILL.md`
{
"file": "binary"
}Responses
created_atstring · date-timedescriptionstringSkill description, read from the bundle's `SKILL.md`
latest_revisionstringOpaque token of the skill's current latest revision; pass as expected_revision to update or delete
namestringSkill name, read from the bundle's `SKILL.md`
revisionstringOpaque token of the revision returned in this response; the latest revision, or the specific one requested via `revision`
skill_idstringrequiredSkill identifier
updated_atstring · date-time{
"created_at": "2026-06-09T00:00:00Z",
"description": "string",
"latest_revision": "string",
"name": "string",
"revision": "string",
"skill_id": "string",
"updated_at": "2026-06-09T00:00:00Z"
}errorobjectShow child attributes
codeintegerrequiredHTTP status code
messagestringrequiredHuman-readable error message
paramnull | stringParameter that caused the error
typestringrequiredError type identifier
{
"error": {
"code": 0,
"message": "string",
"param": "string",
"type": "string"
}
}errorobjectShow child attributes
codeintegerrequiredHTTP status code
messagestringrequiredHuman-readable error message
paramnull | stringParameter that caused the error
typestringrequiredError type identifier
{
"error": {
"code": 0,
"message": "string",
"param": "string",
"type": "string"
}
}errorobjectShow child attributes
codeintegerrequiredHTTP status code
messagestringrequiredHuman-readable error message
paramnull | stringParameter that caused the error
typestringrequiredError type identifier
{
"error": {
"code": 0,
"message": "string",
"param": "string",
"type": "string"
}
}errorobjectShow child attributes
codeintegerrequiredHTTP status code
messagestringrequiredHuman-readable error message
paramnull | stringParameter that caused the error
typestringrequiredError type identifier
{
"error": {
"code": 0,
"message": "string",
"param": "string",
"type": "string"
}
}errorobjectShow child attributes
codeintegerrequiredHTTP status code
messagestringrequiredHuman-readable error message
paramnull | stringParameter that caused the error
typestringrequiredError type identifier
{
"error": {
"code": 0,
"message": "string",
"param": "string",
"type": "string"
}
}errorobjectShow child attributes
codeintegerrequiredHTTP status code
messagestringrequiredHuman-readable error message
paramnull | stringParameter that caused the error
typestringrequiredError type identifier
{
"error": {
"code": 0,
"message": "string",
"param": "string",
"type": "string"
}
}