/api/v1/:workspace/templatesList templates
Paginated list of templates in a workspace. Returns the standard {templates, meta} envelope; default sort is updatedAt:desc.
Parameters
workspacepath | Workspace slug.required |
activequery | true | false |
folderquery | Exact folder match. Use "null" for unfoldered. |
qquery | Case-insensitive substring on name. |
limitquery | 1 – 100 (default 50) |
offsetquery | Rows to skip (default 0). |
sortByquery | createdAt | updatedAt | name, suffixed with :asc or :desc. |
totalResultsquery | true to include meta.total. |
Response
{
"templates": [
{
"id": "…",
"workspaceId": "…",
"name": "Invoice",
"fields": [
"…"
],
"active": true,
"folder": "invoices",
"updatedAt": "…"
}
],
"meta": {
"count": 1,
"limit": 50,
"offset": 0,
"hasMore": false
}
}/api/v1/:workspace/templates/:idGet one template
Full template metadata including field placements, schema linkage, and render-time validation switches. See the Schemas section below for what schemaId / jsonSchema / validateData / allowAdditionalData control.
Parameters
workspacepath | Workspace slug.required |
idpath | Template UUID.required |
Response
{
"id": "…",
"name": "Invoice",
"fields": [
"…"
],
"schemaId": "…",
"jsonSchema": null,
"validateData": false,
"allowAdditionalData": false,
"active": true
}/api/v1/:workspace/templates/:idUpdate a template
Partial update — send only the fields you want to change; everything else is left as-is. Accepts the same fields as create: name, description, folder, active, fields, schemaId, jsonSchema, validateData, allowAdditionalData, renderer, encryptPassword (null clears it), apiCanSetPassword. Design changes (fields, schema linkage, the default font) create a new template version; settings-only changes don't.
Parameters
workspacepath | Workspace slug.required |
idpath | Template UUID.required |
Response
{
"id": "…",
"name": "Invoice v2",
"fields": [
"…"
],
"active": true
}Need help?
Open a ticket from the in-app Support page, or email [email protected].