Detach a property from a type
Stop a work item type from exposing a custom property. This removes the link between the type and the property and returns 204 with an empty body.
Detaching is not deleting
The property definition survives. It stays in the project, stays attached to every other type that uses it, and can be attached again later with Attach a property to a type. To remove the definition itself, use Delete a work item property.
Values recorded on this type's work items are removed
The link is not the only thing that goes. Values already stored for this property on work items of this type are removed along with it, and re-attaching does not restore them. Export what you need before detaching a property that has been in use. Work items of other types keep their values for this property.
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.
project_id:requiredstring (uuid)The project the work item type belongs to.
type_id:requiredstring (uuid)The work item type to detach the property from.
pk:requiredstring (uuid)The id of the property to detach — the property's own id, not a separate link id. It is the same value you passed in the properties array when you attached it.
Scopes
projects.work_item_types:write
Errors
| Status | Code | Cause |
|---|---|---|
400 | validation_error | Malformed request — for example a pk that isn't a valid UUID. |
401 | unauthorized | Missing or invalid credentials. |
403 | forbidden | Your role or token scope can't edit this project's work item types. |
404 | resource_not_found | The property isn't attached to this type, or no such type, project, or workspace. |
409 | work_item_types_managed_at_workspace | This workspace manages work item types at the workspace level. See below. |
429 | rate_limited | Throttled. Honor the Retry-After header before retrying. |
Wrong mode is a 409, not a 404
Detaching is a project-mode write. If the workspace manages work item types at the workspace level, this endpoint returns 409 work_item_types_managed_at_workspace and nothing is changed. Detach on the workspace surface instead with Detach a property from a workspace type.
Branch on the code: a 409 means "wrong surface", a 404 means "that property isn't on this type". See Work item type modes.
Detach is not idempotent the way attach is
Attaching a property twice is harmless, but detaching one that is already gone returns 404 rather than 204. If you are replaying a request, treat a 404 as "already detached" instead of retrying.
curl -X DELETE \
"https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/work-item-types/9d3c7f21-6b48-4e0a-8f52-2c1d7a904e66/properties/5e8b3417-2a6d-4c91-b0f7-8d2e14a6c395/" \
-H "X-Api-Key: $PLANE_API_KEY"import requests
response = requests.delete(
"https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/work-item-types/9d3c7f21-6b48-4e0a-8f52-2c1d7a904e66/properties/5e8b3417-2a6d-4c91-b0f7-8d2e14a6c395/",
headers={"X-Api-Key": "your-api-key"},
)
print(response.status_code)const response = await fetch(
"https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/work-item-types/9d3c7f21-6b48-4e0a-8f52-2c1d7a904e66/properties/5e8b3417-2a6d-4c91-b0f7-8d2e14a6c395/",
{
method: "DELETE",
headers: {
"X-Api-Key": "your-api-key",
},
}
);
console.log(response.status);No response body.
{
"type": "https://api.plane.so/errors/work_item_types_managed_at_workspace",
"title": "Work Item Types Managed At Workspace",
"status": 409,
"code": "work_item_types_managed_at_workspace",
"detail": "Work item types are managed at the workspace level for this workspace."
}{
"type": "https://api.plane.so/errors/resource_not_found",
"title": "Not Found",
"status": 404,
"code": "resource_not_found",
"detail": "The requested resource was not found."
}
