Templates
List template versions
List every published version of one template.
GET
/
templates
/
{namespace}
/
{name}
List template versions
curl --request GET \
--url https://www.orgo.ai/api/templates/{namespace}/{name} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.orgo.ai/api/templates/{namespace}/{name}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.orgo.ai/api/templates/{namespace}/{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://www.orgo.ai/api/templates/{namespace}/{name}",
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://www.orgo.ai/api/templates/{namespace}/{name}"
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://www.orgo.ai/api/templates/{namespace}/{name}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.orgo.ai/api/templates/{namespace}/{name}")
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{
"versions": [
{
"ref": "default/claude-code@1.0.0",
"digest": "<string>",
"published": "2023-11-07T05:31:56Z",
"version": "1.0.0"
}
]
}Lists all published versions of a single template, so you can show a version history or resolve the latest. The lookup is scoped to your own templates; another account’s template with the same name is invisible.
For the versions of a curated template, call
GET /templates/global/{namespace}/{name} instead, e.g. https://www.orgo.ai/api/templates/global/system/coding.Path parameters
string
required
Template namespace. Your own templates default to
default.string
required
Template name.
Response
array
Array of template list items, one per published version. Each has
ref, version, digest, and published. Empty when no template with this namespace and name exists in your registry. This endpoint does not return 404 for an unknown template.Example
curl https://www.orgo.ai/api/templates/default/claude-code \
-H "Authorization: Bearer $ORGO_API_KEY"
import os, requests
r = requests.get(
"https://www.orgo.ai/api/templates/default/claude-code",
headers={"Authorization": f"Bearer {os.environ['ORGO_API_KEY']}"},
)
versions = [v["ref"] for v in r.json()["versions"]]
print(versions)
const r = await fetch(
"https://www.orgo.ai/api/templates/default/claude-code",
{ headers: { Authorization: `Bearer ${process.env.ORGO_API_KEY}` } },
);
const { versions } = await r.json();
console.log(versions.map((v) => v.ref));
Response
{
"versions": [
{
"ref": "default/claude-code@1.0.0",
"version": "1.0.0",
"digest": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2",
"published": "2026-06-08T17:00:00Z"
}
]
}
Errors
| Status | Body | Meaning |
|---|---|---|
401 | { "error": "Invalid API key" } | The Bearer token starts with sk_ but is not a known Orgo key. |
401 | { "error": "Authentication required" } | No Authorization header, or a Bearer token that is not an sk_ key. |
401 | { "error": "This endpoint requires an account-wide credential (workspace_scope_mismatch)." } | The key is workspace-scoped. Template endpoints need an account-wide key. This route answers with 401, not 403. |
401 | { "error": "Service temporarily unavailable. …" } | Orgo could not verify the key because of a server-side fault. The key is fine. Retry. |
500 | { "error": string } | Unexpected server error ("internal error"), or the template registry host failed or timed out. Retry. |
503 | { "error": string } | No fleet host is available to serve the template registry. Retry. |
⌘I
List template versions
curl --request GET \
--url https://www.orgo.ai/api/templates/{namespace}/{name} \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.orgo.ai/api/templates/{namespace}/{name}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.orgo.ai/api/templates/{namespace}/{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://www.orgo.ai/api/templates/{namespace}/{name}",
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://www.orgo.ai/api/templates/{namespace}/{name}"
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://www.orgo.ai/api/templates/{namespace}/{name}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.orgo.ai/api/templates/{namespace}/{name}")
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{
"versions": [
{
"ref": "default/claude-code@1.0.0",
"digest": "<string>",
"published": "2023-11-07T05:31:56Z",
"version": "1.0.0"
}
]
}