Updates the name, description, or content of a skill. System skills can be edited but not renamed.
PATCH
https://api.usenotra.com
/
v1
/
skills
/
{name}
Update a skill
curl --request PATCH \
--url https://api.usenotra.com/v1/skills/{name} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "humanizer",
"description": "Polish near-final drafts so they sound natural and specific.",
"content": "# Humanizer\n\nRewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details."
}
'import requests
url = "https://api.usenotra.com/v1/skills/{name}"
payload = {
"name": "humanizer",
"description": "Polish near-final drafts so they sound natural and specific.",
"content": "# Humanizer
Rewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'humanizer',
description: 'Polish near-final drafts so they sound natural and specific.',
content: '# Humanizer\n\nRewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details.'
})
};
fetch('https://api.usenotra.com/v1/skills/{name}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.usenotra.com/v1/skills/{name}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'humanizer',
'description' => 'Polish near-final drafts so they sound natural and specific.',
'content' => '# Humanizer
Rewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.usenotra.com/v1/skills/{name}"
payload := strings.NewReader("{\n \"name\": \"humanizer\",\n \"description\": \"Polish near-final drafts so they sound natural and specific.\",\n \"content\": \"# Humanizer\\n\\nRewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details.\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.usenotra.com/v1/skills/{name}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"humanizer\",\n \"description\": \"Polish near-final drafts so they sound natural and specific.\",\n \"content\": \"# Humanizer\\n\\nRewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usenotra.com/v1/skills/{name}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"humanizer\",\n \"description\": \"Polish near-final drafts so they sound natural and specific.\",\n \"content\": \"# Humanizer\\n\\nRewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details.\"\n}"
response = http.request(request)
puts response.read_body{
"skill": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"isSystem": true,
"updatedAt": "<string>",
"content": "<string>",
"createdAt": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}Authorizations
Send your API key in the Authorization header as Bearer API_KEY.
Path Parameters
Skill name. Lowercase letters, digits, and hyphens only.
Required string length:
1 - 64Pattern:
^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$Example:
"humanizer"
Body
application/json
Skill name. Lowercase letters, digits, and hyphens only.
Required string length:
1 - 64Pattern:
^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$Example:
"humanizer"
Short description of when the skill should be used.
Required string length:
1 - 1000Example:
"Polish near-final drafts so they sound natural and specific."
Full skill instructions, typically Markdown.
Required string length:
1 - 200000Example:
"# Humanizer\n\nRewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details."
Response
Skill updated successfully
Show child attributes
Show child attributes
Last modified on September 3, 2026
Was this page helpful?
⌘I
Update a skill
curl --request PATCH \
--url https://api.usenotra.com/v1/skills/{name} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "humanizer",
"description": "Polish near-final drafts so they sound natural and specific.",
"content": "# Humanizer\n\nRewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details."
}
'import requests
url = "https://api.usenotra.com/v1/skills/{name}"
payload = {
"name": "humanizer",
"description": "Polish near-final drafts so they sound natural and specific.",
"content": "# Humanizer
Rewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details."
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'humanizer',
description: 'Polish near-final drafts so they sound natural and specific.',
content: '# Humanizer\n\nRewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details.'
})
};
fetch('https://api.usenotra.com/v1/skills/{name}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.usenotra.com/v1/skills/{name}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'humanizer',
'description' => 'Polish near-final drafts so they sound natural and specific.',
'content' => '# Humanizer
Rewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.usenotra.com/v1/skills/{name}"
payload := strings.NewReader("{\n \"name\": \"humanizer\",\n \"description\": \"Polish near-final drafts so they sound natural and specific.\",\n \"content\": \"# Humanizer\\n\\nRewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details.\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.usenotra.com/v1/skills/{name}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"humanizer\",\n \"description\": \"Polish near-final drafts so they sound natural and specific.\",\n \"content\": \"# Humanizer\\n\\nRewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usenotra.com/v1/skills/{name}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"humanizer\",\n \"description\": \"Polish near-final drafts so they sound natural and specific.\",\n \"content\": \"# Humanizer\\n\\nRewrite the draft so it reads like a person wrote it. Remove filler, vary sentence length, and keep concrete details.\"\n}"
response = http.request(request)
puts response.read_body{
"skill": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"isSystem": true,
"updatedAt": "<string>",
"content": "<string>",
"createdAt": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}