Get workspace features
Read the workspace's feature flags. There is one feature record per workspace, so this returns a single object rather than a list.
Call it during client start-up. is_work_item_types_enabled tells you which surface accepts work item type and property writes, and the remaining flags tell you which parts of your UI or sync to show.
Path parameters
slug:requiredstringThe workspace slug. It appears in your Plane URLs. In https://app.plane.so/my-team/projects/, the slug is my-team.
Query parameters
None. This endpoint does not support filters, pagination, or ?expand=.
Scopes
workspaces.features:read
Errors
| Status | Code | Cause |
|---|---|---|
401 | unauthorized | Missing or invalid credentials. |
402 | payment_required | The feature this endpoint belongs to isn't enabled on your plan, or is switched off. |
403 | forbidden | Your role or token scope can't read this workspace's features. |
404 | not_found | No such workspace, or it's outside your tenant. |
406 | not_acceptable | The Accept header asks for a representation the API can't produce. |
429 | rate_limited | Throttled. Honor the Retry-After header before retrying. |
This is the mode check
is_work_item_types_enabled: true means the workspace manages work item types at the workspace level, and false means each project does. Writes sent to the other surface return 409, with work_item_types_managed_at_workspace or work_item_types_managed_at_project. Reads are not affected. See Work item type modes.
Cache it, but not forever
The flags rarely change, so you can cache the response for the life of a request batch. Re-read it whenever a write returns 409 work_item_types_managed_at_workspace or work_item_types_managed_at_project. That code means your cached mode is stale.
curl -X GET \
"https://api.plane.so/api/v2/workspaces/my-team/features/" \
-H "X-Api-Key: $PLANE_API_KEY"import requests
response = requests.get(
"https://api.plane.so/api/v2/workspaces/my-team/features/",
headers={"X-Api-Key": "your-api-key"},
)
features = response.json()
if features["is_work_item_types_enabled"]:
base = "https://api.plane.so/api/v2/workspaces/my-team" # workspace mode
else:
base = "https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b"const response = await fetch("https://api.plane.so/api/v2/workspaces/my-team/features/", {
headers: {
"X-Api-Key": "your-api-key",
},
});
const features = await response.json();
const workspaceMode = features.is_work_item_types_enabled;{
"id": "a72f1c40-5b8e-4d19-9f2a-3c6d8e1b7a55",
"is_work_item_types_enabled": true,
"work_item_type_default_level": 0,
"is_workitem_hierarchy_enabled": false,
"is_project_grouping_enabled": false,
"is_teams_enabled": true,
"is_wiki_enabled": true,
"is_initiative_enabled": false,
"is_customer_enabled": false,
"is_release_enabled": false,
"is_state_duration_enabled": false,
"is_pi_enabled": false,
"created_at": "2026-01-14T09:22:41.478363Z"
}{
"type": "not_found",
"code": "not_found",
"detail": "No Workspace matches the given query."
}Related
- Update workspace features
- Workspace features overview: every flag, one line each
- Work item type modes

