Skip to content

Attach properties to a workspace type

POST/api/v2/workspaces/{slug}/work-item-types/{type_id}/properties/

Attach one or more existing workspace properties to a workspace-level work item type. This does not create properties — create those first with Create a workspace property, then send their ids here.

Because the same property can be attached to many types, this is how you reuse one Severity definition across Bug, Incident, and Escalation instead of maintaining three near-identical fields.

Wrong mode is a 409, not a 404

If the workspace manages work item types at the project level, this route returns 409 with the code work_item_types_managed_at_project. Attach through the project-level route instead. See Work item type modes.

Path Parameters

slug:requiredstring

The workspace slug. It appears in your Plane URLs — in https://app.plane.so/my-team/projects/, the slug is my-team.

type_id:requiredstring (uuid)

The workspace work item type to attach the properties to.

Body Parameters

properties:requiredarray of string (uuid)

Ids of properties to attach, taken from the workspace property catalog. Send the whole set you want in one call rather than one request per property.

Every id must already exist in this workspace. An unknown id — including one that belongs to another workspace — fails the request with 400 validation_error; nothing is attached, and a cross-tenant id is never silently linked.

Scopes

workspaces.work_item_types:write

Errors

StatusCodeCause
400validation_errorproperties missing, not an array, or holding an id that doesn't exist here.
401unauthorizedMissing or invalid credentials.
403forbiddenYour role or token scope can't write workspace work item types.
404resource_not_foundNo such workspace or type, or it's outside your tenant.
409work_item_types_managed_at_projectThis workspace manages work item types at the project level.
429rate_limitedThrottled. Honor the Retry-After header before retrying.
Attach properties to a type
bash
curl -X POST \
  "https://api.plane.so/api/v2/workspaces/my-team/work-item-types/d1a0b7c6-2f83-4e19-9a55-3b6c8d0e4f27/properties/" \
  -H "X-Api-Key: $PLANE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "properties": [
    "a7e3f1d0-5c92-4b68-8f31-2d4a6b9e0c15",
    "3fb6c0d8-4e21-49a7-b5c3-90ad72e14f6b"
  ]
}'
Response201
json
{
  "properties": ["a7e3f1d0-5c92-4b68-8f31-2d4a6b9e0c15", "3fb6c0d8-4e21-49a7-b5c3-90ad72e14f6b"]
}
Response409
json
{
  "type": "https://api.plane.so/errors/work-item-types-managed-at-project",
  "title": "Conflict",
  "status": 409,
  "code": "work_item_types_managed_at_project",
  "detail": "This workspace manages work item types at the project level. Use the project-level endpoint instead."
}

The response is ids, not objects

201 returns only the properties array. To render the attached properties, follow with List properties on a workspace type or fetch them individually.