Skip to main content
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

namespace
string
Filter to a single namespace. Your own templates are published under default unless you choose another namespace.

Response

templates
array
Array of template list items.

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"
    }
  ]
}

Authorizations

Authorization
string
header
required

API key authentication. Get your key at orgo.ai/workspaces

Query Parameters

namespace
string

Filter to a single namespace. Your own templates default to default.

Response

Your templates

templates
object[]