curl "https://app.runtm.com/api/cloud/org-templates/tmpl_abc123" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123"
import requests
response = requests.get(
"https://app.runtm.com/api/cloud/org-templates/tmpl_abc123",
headers={
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
)
data = response.json()
print(f"{data['display_name']} (build: {data['build_status']})")
const response = await fetch(
"https://app.runtm.com/api/cloud/org-templates/tmpl_abc123",
{
headers: {
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
}
);
const data = await response.json();
console.log(`${data.display_name} (build: ${data.build_status})`);
{
"id": "tmpl_abc123",
"name": "nextjs-starter",
"display_name": "Next.js Starter",
"description": "Pre-configured Next.js template with Tailwind CSS",
"repo_patterns": ["owner/nextjs-*"],
"required_secrets": ["DATABASE_URL", "API_SECRET"],
"secrets_configured": ["DATABASE_URL"],
"has_all_required": false,
"tier": "starter",
"e2b_template_id": "e2b_tmpl_xyz",
"docker_image": null,
"created_at": "2026-04-15T10:00:00Z",
"updated_at": "2026-05-01T12:00:00Z",
"build_status": "completed",
"build_started_at": "2026-05-01T11:00:00Z",
"build_completed_at": "2026-05-01T11:05:00Z",
"framework": "next",
"github_repo": "owner/nextjs-starter",
"github_branch": "main",
"agents": ["claude-code"],
"e2b_agent_templates": null,
"repos": [
{
"full_name": "owner/nextjs-starter",
"branch": "main"
}
],
"build_spec": null,
"workdir": "/home/user/project",
"skills": [
{
"id": "dir_9f3c1a",
"type": "skill_v0",
"name": "deploy-checks",
"display_name": "Pre-deploy checks",
"description": "Run the release checklist before shipping",
"content_hash": "9c1185a5c5e9fc54612808977ee8f548b2258d31",
"attached_via": "template"
}
],
"mcp_servers": [],
"attachments_changed_since_build": true,
"directive_manifest_hash": "b1946ac92492d2347c6235b4d2611184",
"last_built_directive_manifest_hash": "5d41402abc4b2a76b9719d911017c592"
}
Templates
Get Template
Get detailed information about a specific template
GET
/
api
/
org-templates
/
{template_id}
curl "https://app.runtm.com/api/cloud/org-templates/tmpl_abc123" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123"
import requests
response = requests.get(
"https://app.runtm.com/api/cloud/org-templates/tmpl_abc123",
headers={
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
)
data = response.json()
print(f"{data['display_name']} (build: {data['build_status']})")
const response = await fetch(
"https://app.runtm.com/api/cloud/org-templates/tmpl_abc123",
{
headers: {
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
}
);
const data = await response.json();
console.log(`${data.display_name} (build: ${data.build_status})`);
{
"id": "tmpl_abc123",
"name": "nextjs-starter",
"display_name": "Next.js Starter",
"description": "Pre-configured Next.js template with Tailwind CSS",
"repo_patterns": ["owner/nextjs-*"],
"required_secrets": ["DATABASE_URL", "API_SECRET"],
"secrets_configured": ["DATABASE_URL"],
"has_all_required": false,
"tier": "starter",
"e2b_template_id": "e2b_tmpl_xyz",
"docker_image": null,
"created_at": "2026-04-15T10:00:00Z",
"updated_at": "2026-05-01T12:00:00Z",
"build_status": "completed",
"build_started_at": "2026-05-01T11:00:00Z",
"build_completed_at": "2026-05-01T11:05:00Z",
"framework": "next",
"github_repo": "owner/nextjs-starter",
"github_branch": "main",
"agents": ["claude-code"],
"e2b_agent_templates": null,
"repos": [
{
"full_name": "owner/nextjs-starter",
"branch": "main"
}
],
"build_spec": null,
"workdir": "/home/user/project",
"skills": [
{
"id": "dir_9f3c1a",
"type": "skill_v0",
"name": "deploy-checks",
"display_name": "Pre-deploy checks",
"description": "Run the release checklist before shipping",
"content_hash": "9c1185a5c5e9fc54612808977ee8f548b2258d31",
"attached_via": "template"
}
],
"mcp_servers": [],
"attachments_changed_since_build": true,
"directive_manifest_hash": "b1946ac92492d2347c6235b4d2611184",
"last_built_directive_manifest_hash": "5d41402abc4b2a76b9719d911017c592"
}
Returns the full detail of an organization template including its configuration, build status, linked repos, secret requirements, and the skills and MCP servers a session launched from it will load.
Required scope:
templates:read
Two fields answer the questions that are easy to get silently wrong:
skills/mcp_servers— what sessions from this template actually load. An emptyskillsarray means nothing is attached, however many skills exist in the org.attachments_changed_since_build—truewhen those attachments changed after the snapshot was built, so the running image is behind the configuration. Trigger a build to catch it up.
Path Parameters
string
required
The template ID (e.g.
tmpl_abc123).Headers
string
required
Bearer token. Example:
Bearer runtm_xxxstring
required
Organization ID.
Response
string
Template ID.
string
Template slug name.
string
Human-readable template name.
string | null
Template description.
array
Glob patterns for auto-matching repos to this template.
array
Secret keys required by this template.
array
Secret keys that have been configured.
boolean
Whether all required secrets are configured.
string
Default sandbox tier for this template.
string
Template ID for sandbox creation.
string | null
Current build status (
pending, building, completed, failed).array
Skills a session launched from this template loads. Includes skills attached to the template directly, to one of its repos, and org-wide.
Show properties
Show properties
string
Directive ID. Fetch the body with
GET /api/agent-directives/{id}?include_content=true.string
Always
skill_v0.string
Skill slug.
string | null
Human-readable name.
string | null
Short description.
string
Hash of the skill body, so you can tell whether the content changed.
string
The narrowest scope through which the skill reaches this template —
template, repo, or all. This is the scope to change if you want to detach it.array
MCP servers a session launched from this template loads. Same shape as
skills, with type set to mcp_server_v0.boolean
true when the attached skills / MCP servers changed after the snapshot was built, so sessions still boot with the previously baked set. Rebuild with POST /api/org-templates/{template_id}/build.string | null
Hash of the currently-attached directive set.
string | null
Directive manifest hash baked into the current snapshot.
attachments_changed_since_build is the comparison of these two.curl "https://app.runtm.com/api/cloud/org-templates/tmpl_abc123" \
-H "Authorization: Bearer runtm_xxx" \
-H "X-Organization-Id: org_abc123"
import requests
response = requests.get(
"https://app.runtm.com/api/cloud/org-templates/tmpl_abc123",
headers={
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
)
data = response.json()
print(f"{data['display_name']} (build: {data['build_status']})")
const response = await fetch(
"https://app.runtm.com/api/cloud/org-templates/tmpl_abc123",
{
headers: {
"Authorization": "Bearer runtm_xxx",
"X-Organization-Id": "org_abc123",
},
}
);
const data = await response.json();
console.log(`${data.display_name} (build: ${data.build_status})`);
{
"id": "tmpl_abc123",
"name": "nextjs-starter",
"display_name": "Next.js Starter",
"description": "Pre-configured Next.js template with Tailwind CSS",
"repo_patterns": ["owner/nextjs-*"],
"required_secrets": ["DATABASE_URL", "API_SECRET"],
"secrets_configured": ["DATABASE_URL"],
"has_all_required": false,
"tier": "starter",
"e2b_template_id": "e2b_tmpl_xyz",
"docker_image": null,
"created_at": "2026-04-15T10:00:00Z",
"updated_at": "2026-05-01T12:00:00Z",
"build_status": "completed",
"build_started_at": "2026-05-01T11:00:00Z",
"build_completed_at": "2026-05-01T11:05:00Z",
"framework": "next",
"github_repo": "owner/nextjs-starter",
"github_branch": "main",
"agents": ["claude-code"],
"e2b_agent_templates": null,
"repos": [
{
"full_name": "owner/nextjs-starter",
"branch": "main"
}
],
"build_spec": null,
"workdir": "/home/user/project",
"skills": [
{
"id": "dir_9f3c1a",
"type": "skill_v0",
"name": "deploy-checks",
"display_name": "Pre-deploy checks",
"description": "Run the release checklist before shipping",
"content_hash": "9c1185a5c5e9fc54612808977ee8f548b2258d31",
"attached_via": "template"
}
],
"mcp_servers": [],
"attachments_changed_since_build": true,
"directive_manifest_hash": "b1946ac92492d2347c6235b4d2611184",
"last_built_directive_manifest_hash": "5d41402abc4b2a76b9719d911017c592"
}