curl -G https://api.decimal.ai/api/v1/install/bundles/$VERSION_ID \
-H "Authorization: Bearer $DECIMAL_API_KEY" \
--data-urlencode install_name=acme-refund-policy \
--data-urlencode render_hash=$RENDER_HASH --data-urlencode purpose=frozenimport requests
url = "https://api.decimal.ai/api/v1/install/bundles/{version_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.decimal.ai/api/v1/install/bundles/{version_id}', 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.decimal.ai/api/v1/install/bundles/{version_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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://api.decimal.ai/api/v1/install/bundles/{version_id}"
req, _ := http.NewRequest("GET", 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.get("https://api.decimal.ai/api/v1/install/bundles/{version_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.decimal.ai/api/v1/install/bundles/{version_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"skill_id": "<string>",
"version_id": "<string>",
"install_name": "<string>",
"render": {
"format": 123,
"hash": "<string>",
"variant": "<string>"
},
"body_sha256": "<string>",
"description_sha256": "<string>",
"invocation": "<string>",
"files": [
{
"path": "<string>",
"sha256": "<string>",
"size": 123,
"mode": "<string>",
"encoding": "<string>",
"content": "<string>"
}
],
"unavailable": [
{
"path": "<string>",
"reason": "<string>"
}
],
"policy_notes": [
"<string>"
]
}Get the files of one skill rendering
The exact files of one rendering of one version: SKILL.md first, then the attachments, each with its sha256, size and mode, as UTF-8 text.
The same version_id, install_name, render_hash, variant and format always
return the same bytes, so a frozen install reproduces its lock. Access is checked on
every fetch: a version blocked, withheld or found unsafe since it was locked answers
410 with its reason. Each fetch is counted as an install of the skill by your
organization (by channel and purpose); it is never counted as a delivery to a
model. Responses are Cache-Control: private, no-store.
curl -G https://api.decimal.ai/api/v1/install/bundles/$VERSION_ID \
-H "Authorization: Bearer $DECIMAL_API_KEY" \
--data-urlencode install_name=acme-refund-policy \
--data-urlencode render_hash=$RENDER_HASH --data-urlencode purpose=frozenimport requests
url = "https://api.decimal.ai/api/v1/install/bundles/{version_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.decimal.ai/api/v1/install/bundles/{version_id}', 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.decimal.ai/api/v1/install/bundles/{version_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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://api.decimal.ai/api/v1/install/bundles/{version_id}"
req, _ := http.NewRequest("GET", 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.get("https://api.decimal.ai/api/v1/install/bundles/{version_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.decimal.ai/api/v1/install/bundles/{version_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"skill_id": "<string>",
"version_id": "<string>",
"install_name": "<string>",
"render": {
"format": 123,
"hash": "<string>",
"variant": "<string>"
},
"body_sha256": "<string>",
"description_sha256": "<string>",
"invocation": "<string>",
"files": [
{
"path": "<string>",
"sha256": "<string>",
"size": 123,
"mode": "<string>",
"encoding": "<string>",
"content": "<string>"
}
],
"unavailable": [
{
"path": "<string>",
"reason": "<string>"
}
],
"policy_notes": [
"<string>"
]
}Authorizations
Enter your API key (e.g. dai_sk_test_key_001)
Headers
Path Parameters
The skill version, from resolve or the lock.
Query Parameters
The folder name to render into name:: either install name the resolve answer gave, or the name a project already locked.
The rendering to serve (render.hash from resolve, or the lock's). Omit for the current one.
128Exactly this format.
Formats the client reads, repeated or comma-separated (default 1); the highest one supported is served.
authored or foreign; default: authored for your organization's own original skill, foreign otherwise.
Who is fetching (cli, sdk, plugin, ...).
Why (add, install, frozen, update, ...).
Cookies
Response
Successful Response
Show child attributes
Show child attributes
model, or user for a skill only a person may invoke.
SKILL.md first, then attachments by path.
Show child attributes
Show child attributes
Files listed but not served (binary attachments, a nested SKILL.md).
Show child attributes
Show child attributes