Upload Skill Package
curl --request POST \
--url https://api.agentpowers.ai/v1/skills/{slug}/upload \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'file=<string>' \
--form 'package=<string>'import requests
url = "https://api.agentpowers.ai/v1/skills/{slug}/upload"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"package\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "multipart/form-data"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('package', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.agentpowers.ai/v1/skills/{slug}/upload', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"slug": "<string>",
"storage_key": "<string>",
"message": "Package uploaded"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}skills
Upload Skill Package
Upload a skill package file to R2 storage.
Only the skill author can upload packages. Max 10 MB.
When version is specified, uploads to the version-specific storage key.
Send the package in the multipart field file (or package, not both).
POST
/
v1
/
skills
/
{slug}
/
upload
Upload Skill Package
curl --request POST \
--url https://api.agentpowers.ai/v1/skills/{slug}/upload \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'file=<string>' \
--form 'package=<string>'import requests
url = "https://api.agentpowers.ai/v1/skills/{slug}/upload"
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"package\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "multipart/form-data"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('package', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.agentpowers.ai/v1/skills/{slug}/upload', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"slug": "<string>",
"storage_key": "<string>",
"message": "Package uploaded"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Provide a Clerk JWT or a long-lived CLI token (prefix ap_cli_). Pass as Authorization: Bearer <token>.
Path Parameters
Query Parameters
Body
multipart/form-data
Was this page helpful?