Skip to content

Delete a label ​

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

Remove a label from a project. The label is removed from every work item that carried it. Nothing else about those work items 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. 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: color, created_at, created_by_id, description, external_id, external_source, id, name, parent_id, sort_order, updated_at, updated_by_id.

See Sparse fields.

Scopes ​

projects.labels:write

Errors ​

StatusCodeCause
400invalid_requestA path parameter is malformed, for example a pk that isn't a UUID.
400workspace_managedThe workspace has governance turned on, so project labels are read-only. The body has error and code keys instead of the problem format. See Workspace governance.
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. No label is pinned the way a project's default state is, 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. To undo it, you 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."
}