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 invalid_request; nothing is attached, and a cross-tenant id is never silently linked.

Scopes ​

workspaces.work_item_types:write

Errors ​

StatusCodeCause
400invalid_requestproperties missing, not an array, or holding an id that doesn't exist here.
401unauthorizedMissing or invalid credentials.
402payment_requiredThe feature this endpoint belongs to isn't enabled on your plan, or is switched off.
403forbiddenYour role or token scope can't write workspace work item types.
404not_foundNo such workspace or type, or it's outside your tenant.
406not_acceptableThe Accept header asks for a representation the API can't produce.
409conflictThis workspace manages work item types at the project level.
413payload_too_largeThe request body is over the size limit.
415unsupported_media_typeThe Content-Type isn't one this endpoint accepts.
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": "conflict",
  "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.