Update a skill
curl --request PUT \
--url https://agp.eu.hcompany.ai/api/v2/skills/{name} \
--header 'Authorization: Bearer <token>'import requests
url = "https://agp.eu.hcompany.ai/api/v2/skills/{name}"
headers = {"Authorization": "Bearer <token>"}
response = requests.put(url, headers=headers)
print(response.text)const options = {method: 'PUT', headers: {Authorization: 'Bearer <token>'}};
fetch('https://agp.eu.hcompany.ai/api/v2/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://agp.eu.hcompany.ai/api/v2/skills/{name}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://agp.eu.hcompany.ai/api/v2/skills/{name}"
req, _ := http.NewRequest("PUT", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://agp.eu.hcompany.ai/api/v2/skills/{name}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://agp.eu.hcompany.ai/api/v2/skills/{name}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodySkills
Update a skill
Edit a skill’s content.
PUT
/
api
/
v2
/
skills
/
{name}
Update a skill
curl --request PUT \
--url https://agp.eu.hcompany.ai/api/v2/skills/{name} \
--header 'Authorization: Bearer <token>'import requests
url = "https://agp.eu.hcompany.ai/api/v2/skills/{name}"
headers = {"Authorization": "Bearer <token>"}
response = requests.put(url, headers=headers)
print(response.text)const options = {method: 'PUT', headers: {Authorization: 'Bearer <token>'}};
fetch('https://agp.eu.hcompany.ai/api/v2/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://agp.eu.hcompany.ai/api/v2/skills/{name}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://agp.eu.hcompany.ai/api/v2/skills/{name}"
req, _ := http.NewRequest("PUT", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://agp.eu.hcompany.ai/api/v2/skills/{name}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://agp.eu.hcompany.ai/api/v2/skills/{name}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyUpdates an existing skill. This is a full replacement of the Skill object. The
name must match the URL identifier: renames are not supported.
Returns the updated Skill object.
Path parameters
The skill’s
name (e.g. extract-table-data or myorg/web-helper). Slash-containing names are supported.Request body
A full replacement of the Skill object. Thename in the body must equal the URL identifier. Any field you omit is reset to its default, not preserved. To change individual fields without resending the rest, use Patch instead.
Request body
{
"name": "extract-table-data",
"description": "Extract data from HTML tables, with CSV output support.",
"body": "When you encounter an HTML table, extract rows into JSON or CSV based on the user request.",
"source": "https://github.com/myorg/skills",
"url_pattern": null
}
Examples
curl -X PUT https://agp.eu.hcompany.ai/api/v2/skills/extract-table-data \
-H "Authorization: Bearer $HAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "extract-table-data",
"description": "Extract data from HTML tables: updated with CSV output support.",
"body": "When you encounter an HTML table, extract all rows into JSON or CSV format based on the user request."
}'
from hai_agents import Client
client = Client()
skill = client.skills.update_skill(
name_="extract-table-data",
name="extract-table-data",
description="Extract data from HTML tables: updated with CSV output support.",
body="When you encounter an HTML table, extract all rows into JSON or CSV format based on the user request.",
)
print(skill.description)
import { HaiAgentsClient } from "hai-agents";
const client = new HaiAgentsClient();
const skill = await client.skills.updateSkill({
name: "extract-table-data",
body: {
name: "extract-table-data",
description: "Extract data from HTML tables: updated with CSV output support.",
body: "When you encounter an HTML table, extract all rows into JSON or CSV format based on the user request.",
},
});
console.log(skill.description);
Response
{
"name": "extract-table-data",
"description": "Extract data from HTML tables: updated with CSV output support.",
"body": "When you encounter an HTML table, extract all rows into JSON or CSV format based on the user request.",
"source": null,
"url_pattern": null
}
Errors
| Status | Cause |
|---|---|
400 | The name in the body does not match the URL identifier (renames are not supported). |
403 | The skill is reserved (h/) and read-only. |
404 | Skill not found or you don’t have access. |
422 | Body fails validation; common cases: empty body. |
Was this page helpful?
⌘I