Templates
List templates
List the templates you have published.
GET
/
templates
List templates
curl --request GET \
--url https://www.orgo.ai/api/templates \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.orgo.ai/api/templates"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.orgo.ai/api/templates")
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{
"templates": [
{
"ref": "default/claude-code@1.0.0",
"digest": "<string>",
"published": "2023-11-07T05:31:56Z",
"template": {
"api_version": "orgo.ai/v1",
"template": {
"name": "claude-code",
"version": "1.0.0",
"description": "<string>"
},
"hardware": {},
"secrets": [
{}
],
"vars": {},
"env": {},
"build": {},
"files": "<array>",
"apps": "<array>",
"triggers": "<array>",
"terminal": "<array>",
"hooks": {},
"telemetry": {},
"egress_policy": {},
"streaming": "<array>"
}
}
]
}{
"error": "Invalid API key"
}Returns the templates published under your account. Each item carries the template’s
ref, its content-addressed digest, the published timestamp, and the full template document.
Looking for the curated templates Orgo ships (Claude Code, OpenClaw, Hermes)? Use List curated templates instead.
Query parameters
string
Filter to a single namespace. Your own templates are published under
default unless you choose another namespace.Response
array
Array of template list items.
Show item
Show item
string
Template ref, in
namespace/name@version form.string
Content-addressed SHA-256 digest of the canonical template. Two semantically identical templates always share a digest.
string
ISO 8601 timestamp of when the version was published.
object
The full
orgo.ai/v1 document. See the schema reference.Example
curl https://www.orgo.ai/api/templates \
-H "Authorization: Bearer $ORGO_API_KEY"
import os, requests
r = requests.get(
"https://www.orgo.ai/api/templates",
headers={"Authorization": f"Bearer {os.environ['ORGO_API_KEY']}"},
)
for t in r.json()["templates"]:
print(t["ref"], t["digest"][:12])
const r = await fetch("https://www.orgo.ai/api/templates", {
headers: { Authorization: `Bearer ${process.env.ORGO_API_KEY}` },
});
const { templates } = await r.json();
templates.forEach((t) => console.log(t.ref));
Response
{
"templates": [
{
"ref": "default/claude-code@1.0.0",
"digest": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2",
"published": "2026-06-08T17:00:00Z"
}
]
}
⌘I
List templates
curl --request GET \
--url https://www.orgo.ai/api/templates \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.orgo.ai/api/templates"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.orgo.ai/api/templates")
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{
"templates": [
{
"ref": "default/claude-code@1.0.0",
"digest": "<string>",
"published": "2023-11-07T05:31:56Z",
"template": {
"api_version": "orgo.ai/v1",
"template": {
"name": "claude-code",
"version": "1.0.0",
"description": "<string>"
},
"hardware": {},
"secrets": [
{}
],
"vars": {},
"env": {},
"build": {},
"files": "<array>",
"apps": "<array>",
"triggers": "<array>",
"terminal": "<array>",
"hooks": {},
"telemetry": {},
"egress_policy": {},
"streaming": "<array>"
}
}
]
}{
"error": "Invalid API key"
}