Skip to content

Delete a work item property ​

DELETE/api/v2/workspaces/{slug}/projects/{project_id}/work-item-properties/{pk}/

Remove a custom property definition from a project. The response is 204 with an empty body — there is nothing to parse, so branch on the status code.

Deleting a property removes the field itself, along with the choices defined for it and its attachments to work item types. If you only want the field to stop being offered, set is_active: false with Update a work item property instead — that keeps the definition and everything recorded against it, and it is reversible.

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.

project_id:requiredstring (uuid)

The project the property belongs to. A property id from a different project returns 404, even inside the same workspace.

pk:requiredstring (uuid)

The id of the property to delete.

Response shaping ​

fields:optionalstring

Comma-separated list of fields to return. Unrequested keys are omitted from the response, not returned as null, so absent means "not requested" and null means "actually null". id always comes back whether or not you name it.

Pass all for every requestable field. An unknown name is a 400 that lists the valid set and suggests the closest match, so a typo can't silently cost you the saving.

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, validation_rules.

See Sparse fields.

Scopes ​

projects.work_item_properties:write

Errors ​

StatusCodeCause
400invalid_requestA malformed identifier in the path.
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 delete properties.
404not_foundNo such property, project, or workspace — 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 workspace level. Delete the property on the workspace endpoint instead.
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.

A 409 means wrong surface, not missing permission

If the workspace manages work item types at the workspace level, this project endpoint returns 409 work_item_types_managed_at_workspace. The delete belongs on Delete a workspace work item property. Reading the same property through this path still works — only writes are mode-specific. See Work item type modes.

204 has no body

A successful delete returns 204 No Content. Calling .json() on the response throws. Check response.status === 204 (or response.ok) instead.

Delete a work item property
bash
curl -X DELETE \
  "https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/work-item-properties/9d2f0b74-6a51-4c8e-b3d7-2f1a8c05e964/" \
  -H "X-Api-Key: $PLANE_API_KEY"
Response204

No response body.

Response409
json
{
  "type": "conflict",
  "code": "work_item_types_managed_at_workspace",
  "detail": "Work item types are managed at the workspace level for this workspace."
}
Response404
json
{
  "type": "not_found",
  "code": "not_found",
  "detail": "No IssueProperty matches the given query."
}

Delete or deactivate? ​

You want to…Do this
Stop offering the field but keep its historyPATCH with is_active: false
Take a choice out of an OPTION field, keep the fieldDelete a property option
Remove the field from one type but keep it elsewhereDetach a type property
Remove the definition from the project entirelyDELETE this endpoint

Deleting is the only one of these you cannot undo by flipping a flag back.