Download External Skill
curl --request GET \
--url https://api.agentpowers.ai/v1/external/{source}/{slug}/downloadimport requests
url = "https://api.agentpowers.ai/v1/external/{source}/{slug}/download"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.agentpowers.ai/v1/external/{source}/{slug}/download', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"url": "<string>",
"slug": "<string>",
"source": "<string>",
"security_status": "<string>",
"security_score": 123,
"content_hash": "<string>",
"expires_in": 123,
"owner": "<string>",
"version": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}external
Download External Skill
Fetch, security-scan and store an external skill; return a signed URL.
The archive comes from the source’s download API (never its web page). Only bytes that received a PASS or WARN verdict are stored and signed; a BLOCK verdict is refused with 403, and an incomplete scan with 503.
GET
/
v1
/
external
/
{source}
/
{slug}
/
download
Download External Skill
curl --request GET \
--url https://api.agentpowers.ai/v1/external/{source}/{slug}/downloadimport requests
url = "https://api.agentpowers.ai/v1/external/{source}/{slug}/download"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.agentpowers.ai/v1/external/{source}/{slug}/download', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"url": "<string>",
"slug": "<string>",
"source": "<string>",
"security_status": "<string>",
"security_score": 123,
"content_hash": "<string>",
"expires_in": 123,
"owner": "<string>",
"version": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Query Parameters
Pattern:
^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$Response
Successful Response
Signed URL for a scanned external skill archive (issue #339).
url points at the stored, scanned artifact and expires after
expires_in seconds. security_status is the verdict for exactly
these bytes: "pass" or "warn" (a block is refused with 403).
Was this page helpful?