Permission templates
Reusable sets of member permissions.
List the workspace's permission templates
GET
/v1/permission-templatespermission-templates.listNeeds the permissions feature on your workspace. Until it is on, calls answer 404.
The four built-ins first (Admin, Editor, Viewer, Client), then custom templates by creation. The first call for a workspace stores the built-ins from their defaults, so every template has an id. Never paginated: a workspace has a handful of templates. Requires workspace membership.
Parameters
Name
In
Type
Required
Description
Ken-Version
In: header
string, one of: 2026-11-02, 1.1
required
The API version: a dated version (YYYY-MM-DD), or 1.1, another name for the first dated version. Without it the request uses your API key's pinned version; an unpinned key reaches the legacy shape of the same path. 1.0 selects the legacy shape explicitly.
X-Ken-Workspace-Id
In: header
integer (int64)
optional
Workspace to act in. Required when your credential can reach more than one workspace (otherwise
400 workspace_required).Response 200
data is a list of PermissionTemplateModel. Each item has these fields. The response also carries pagination.
Field
Type
Description
id
integer (int64)
name
string
description
string
builtIn
string
admin, editor, viewer or client; null for a custom template.locked
boolean
True for the Admin template, which cannot be edited or deleted.
pages
map of string
All eleven pages:
off, view or edit.features
array of string
The features that are on, in catalog order.
accountScope
string
all or own.monthlyCreditLimit
integer (int64)
Credits per calendar month (UTC); null = no limit, 0 = cannot spend.
memberCount
integer (int32)
Active members on the template.
pageCount
integer (int32)
Pages that are not off.
Request
curl -X GET "https://api.ken.so/v1/permission-templates" \ -H "Authorization: Bearer $KEN_API_KEY" \ -H "Ken-Version: 2026-11-02" \ -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
Response 200
{
"success": true,
"data": [
{
"id": 812,
"name": "string",
"description": "string",
"builtIn": "string",
"locked": true,
"pages": {
"key": "string"
},
"features": [
"string"
],
"accountScope": "string",
"monthlyCreditLimit": 1,
"memberCount": 1,
"pageCount": 1
}
],
"pagination": {
"nextCursor": "eyJpZCI6ODE1fQ",
"hasMore": true,
"total": 1,
"isTotalCapped": true
}
}Return one permission template
GET
/v1/permission-templates/{templateId}permission-templates.getNeeds the permissions feature on your workspace. Until it is on, calls answer 404.
A template of another workspace is 404 not_found. Requires workspace membership.
Parameters
Name
In
Type
Required
Description
templateId
In: path
integer (int64)
required
Ken-Version
In: header
string, one of: 2026-11-02, 1.1
required
The API version: a dated version (YYYY-MM-DD), or 1.1, another name for the first dated version. Without it the request uses your API key's pinned version; an unpinned key reaches the legacy shape of the same path. 1.0 selects the legacy shape explicitly.
X-Ken-Workspace-Id
In: header
integer (int64)
optional
Workspace to act in. Required when your credential can reach more than one workspace (otherwise
400 workspace_required).Response 200
data is a PermissionTemplateModel.
Field
Type
Description
id
integer (int64)
name
string
description
string
builtIn
string
admin, editor, viewer or client; null for a custom template.locked
boolean
True for the Admin template, which cannot be edited or deleted.
pages
map of string
All eleven pages:
off, view or edit.features
array of string
The features that are on, in catalog order.
accountScope
string
all or own.monthlyCreditLimit
integer (int64)
Credits per calendar month (UTC); null = no limit, 0 = cannot spend.
memberCount
integer (int32)
Active members on the template.
pageCount
integer (int32)
Pages that are not off.
Request
curl -X GET "https://api.ken.so/v1/permission-templates/812" \ -H "Authorization: Bearer $KEN_API_KEY" \ -H "Ken-Version: 2026-11-02" \ -H "X-Ken-Workspace-Id: $KEN_WORKSPACE_ID"
Response 200
{
"success": true,
"data": {
"id": 812,
"name": "string",
"description": "string",
"builtIn": "string",
"locked": true,
"pages": {
"key": "string"
},
"features": [
"string"
],
"accountScope": "string",
"monthlyCreditLimit": 1,
"memberCount": 1,
"pageCount": 1
}
}