Skip to content

Delete a label ​

DELETE/api/v2/workspaces/{slug}/projects/{project_id}/labels/{pk}/

Remove a label from a project. The label disappears from every work item that carried it — the work items themselves are not touched, and nothing else about them changes.

A successful delete returns 204 with an empty body. Don't parse the response.

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 label belongs to.

pk:requiredstring (uuid)

The label id 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: color, created_at, created_by_id, description, external_id, external_source, id, name, parent_id, sort_order.

See Sparse fields.

Scopes ​

projects.labels:write

Errors ​

StatusCodeCause
400invalid_requestA path parameter is malformed, for example a pk that isn't a UUID.
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 labels.
404not_foundNo such label in this project, or the workspace or project is outside your tenant.
406not_acceptableThe Accept header asks for a representation the API can't produce.
409conflictThe write collides with an existing record or a business rule.
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.

Labels have no delete protection. Unlike a project's default state, no label is pinned, and a label still applied to work items deletes normally.

Deleting is not the same as unassigning

If you only want the tag off a few work items, update those work items' label_ids instead. Deleting the label strips it from every work item in the project at once, and there is no undelete endpoint — you would have to recreate the label and reapply it everywhere.

Deleting twice

A repeated delete returns 404, not 204. Treat both as "the label is gone" when your job is idempotent.

Delete a label
bash
curl -X DELETE \
  "https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/labels/9c1f0b3d-6d2e-4c9a-8b41-2f7e5a0d6c88/" \
  -H "X-Api-Key: $PLANE_API_KEY"
Response204

No response body.

Response404
json
{
  "type": "not_found",
  "code": "not_found",
  "detail": "No label matches the given query."
}