Delete a workspace work item property
Remove a property from the workspace catalog. The delete is soft and the response is 204 with an empty body.
Deleting has the widest effect: the property leaves every project and work item type it reached, unlike detaching it from a single type, which only affects that one type.
Retire before you delete
If the property has been collecting values, PATCH it with is_active: false first. The definition stays addressable while you migrate, and you can reverse the decision with a single field. Use delete for a property created by mistake.
Wrong mode returns 409, not 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. Delete the property on the project-level resource instead. See Work item type modes.
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.
pk:requiredstring (uuid)The property's id.
Response shaping
fields:optionalstringComma-separated list of fields to return. Fields you don't request are left out of the response instead of coming back as null, so a missing key means you didn't ask for it and null means the value is null. id is always included, whether or not you name it.
Pass all to get every requestable field. An unknown field name returns 400 with the list of valid names and the closest match, so a typo is caught instead of being silently ignored.
Requestable here: created_at, default_value, description, display_name, external_id, external_source, id, is_active, is_multi, is_required, logo_props, name, options, property_type, relation_type, settings, updated_at, updated_by_id, validation_rules.
See Sparse fields.
Scopes
workspaces.work_item_properties:write
Errors
| Status | Code | Cause |
|---|---|---|
400 | invalid_request | The request failed validation, most often because pk isn't a valid UUID. |
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 write workspace work item properties. |
404 | not_found | No such workspace or property, or it's outside your tenant. |
406 | not_acceptable | The Accept header asks for a representation the API can't produce. |
409 | conflict | This workspace manages work item types at the project level. |
413 | payload_too_large | The request body is over the size limit. |
415 | unsupported_media_type | The Content-Type isn't one this endpoint accepts. |
429 | rate_limited | Throttled. Honor the Retry-After header before retrying. |
curl -X DELETE \
"https://api.plane.so/api/v2/workspaces/my-team/work-item-properties/a7e3f1d0-5c92-4b68-8f31-2d4a6b9e0c15/" \
-H "X-Api-Key: $PLANE_API_KEY"import requests
response = requests.delete(
"https://api.plane.so/api/v2/workspaces/my-team/work-item-properties/a7e3f1d0-5c92-4b68-8f31-2d4a6b9e0c15/",
headers={"X-Api-Key": "your-api-key"},
)
print(response.status_code)const response = await fetch(
"https://api.plane.so/api/v2/workspaces/my-team/work-item-properties/a7e3f1d0-5c92-4b68-8f31-2d4a6b9e0c15/",
{
method: "DELETE",
headers: {
"X-Api-Key": "your-api-key",
},
},
);
console.log(response.status);No content{
"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."
}
