Templates
If you don't know what a project template is, learn more about project template.
List templates
Lists saved project templates in the API key user's active workspace. Use the returned template id and node ids when creating a project from a template.
GET /api/console/v1/templates?index=0&pageSize=50
Authorization: Bearer <api_key>
Response
{
"templates": [
{
"id": "<template_id>",
"workspaceId": "<workspace_id>",
"createdByUserId": "<user_id>",
"name": "Launch checklist",
"graph": {
"version": "1.0.0",
"name": "Launch checklist",
"description": "A reusable launch checklist workflow.",
"icon": "planning",
"background": "#EFF1F5",
"nodes": [
{
"id": "<node_id>",
"position": { "x": 0, "y": 0 },
"data": {
"type": "task",
"icon": "planning",
"background": "#EFF1F5",
"title": "Plan",
"instructions": "Draft the launch checklist."
}
}
],
"edges": []
},
"createdAt": "2026-05-17T00:00:00.000Z",
"updatedAt": "2026-05-17T00:00:00.000Z"
}
]
}
Examples
TypeScript
const BASE_URL = "https://api.syncless.ai"
const API_KEY = "<api_key>"
const response = await fetch(BASE_URL + "/api/console/v1/templates?index=0&pageSize=50", {
headers: {
"Authorization": "Bearer " + API_KEY,
},
})
if (!response.ok) {
throw new Error(await response.text())
}
console.log(await response.json())
Python
import requests
BASE_URL = "https://api.syncless.ai"
API_KEY = "<api_key>"
response = requests.get(
BASE_URL + "/api/console/v1/templates?index=0&pageSize=50",
headers={
"Authorization": "Bearer " + API_KEY,
},
)
response.raise_for_status()
print(response.json())
cURL
curl "https://api.syncless.ai/api/console/v1/templates?index=0&pageSize=50" \
-H "Authorization: Bearer <api_key>"
Create project from template
Creates a project from a template. Each template node must be assigned to an owner by user id.
POST /api/console/v1/templates/<template_id>/projects
Authorization: Bearer <api_key>
Content-Type: application/json
Request body
| Field | Type | Required |
|---|---|---|
| name | string | yes |
| nodes | object | yes |
{
"name": "Launch checklist",
"nodes": {
"<node_id>": "<owner_id>"
}
}
Response
{
"ok": true,
"pipelineId": "<pipeline_id>",
"tasks": [],
"taskDependencies": []
}
Examples
TypeScript
const BASE_URL = "https://api.syncless.ai"
const API_KEY = "<api_key>"
const TEMPLATE_ID = "<template_id>"
const response = await fetch(BASE_URL + "/api/console/v1/templates/" + TEMPLATE_ID + "/projects", {
method: "POST",
headers: {
"Authorization": "Bearer " + API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Launch checklist",
nodes: {
"<node_id>": "<owner_id>",
},
}),
})
if (!response.ok) {
throw new Error(await response.text())
}
console.log(await response.json())
Python
import json
import requests
BASE_URL = "https://api.syncless.ai"
API_KEY = "<api_key>"
TEMPLATE_ID = "<template_id>"
body = json.dumps({
"name": "Launch checklist",
"nodes": {
"<node_id>": "<owner_id>",
},
}).encode("utf-8")
response = requests.post(
BASE_URL + "/api/console/v1/templates/" + TEMPLATE_ID + "/projects",
data=body,
headers={
"Authorization": "Bearer " + API_KEY,
"Content-Type": "application/json",
},
)
response.raise_for_status()
print(response.json())
cURL
curl -X POST "https://api.syncless.ai/api/console/v1/templates/<template_id>/projects" \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"name": "Launch checklist",
"nodes": {
"<node_id>": "<owner_id>"
}
}'