Skip to content

Update a project label ​

PATCH/api/v2/workspaces/{slug}/project-labels/{pk}/

Change a project label's name, color, description, or position. Projects that carry the label keep it. Only workspace owners and admins can update project labels.

PATCH is partial. Send only the fields you want to change. Anything you omit keeps its current value.

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.

pk:requiredstring (uuid)

The id of the project label to update.

Body parameters ​

Every field is optional. Send the subset you are changing.

name:optionalstring

New display name. Maximum 255 characters. A name that another label uses, in any letter case, returns 409 conflict with that label's id. You can send the label's own name in any letter case.

color:optionalstring

Hex color used wherever the label is rendered. Maximum 255 characters. Can be empty.

description:optionalstring

Free-form note about what the label is for. Can be empty.

sort_order:optionalnumber

Ordering weight. Lower values sort first. Set it to reposition the label in the default list order.

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, id, name, sort_order, updated_at, updated_by_id.

See Sparse fields.

Scopes ​

workspaces.project_labels:write

Errors ​

StatusCodeCause
400invalid_requestA field failed validation, for example an empty name or a value over its length limit.
401unauthorizedMissing or invalid credentials.
403forbiddenOnly workspace owners and admins can update project labels, or your token lacks the scope.
404not_foundNo such project label or workspace, or it's outside your tenant.
406not_acceptableThe Accept header asks for a representation the API can't produce.
409conflictAnother project label already uses this name, in any letter case. The body carries its id.
409governance_migration_in_progressA governance migration is running, so the workspace is read-only. Retry after it finishes.
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.
Update a project label
bash
curl -X PATCH \
  "https://api.plane.so/api/v2/workspaces/my-team/project-labels/d8a4f2c6-1e7b-4093-9c5a-6b2e0f8d3a71/" \
  -H "X-Api-Key: $PLANE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Roadmap 2026",
  "color": "#8e4ec6"
}'
Response200
json
{
  "id": "d8a4f2c6-1e7b-4093-9c5a-6b2e0f8d3a71",
  "name": "Roadmap 2026",
  "description": "Projects committed on this year's roadmap",
  "color": "#8e4ec6",
  "sort_order": 65535,
  "created_at": "2026-01-14T09:22:41.478363Z",
  "updated_at": "2026-02-03T16:45:12.904117Z",
  "created_by_id": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
  "updated_by_id": "16c61a3a-512a-48ac-b0be-b6b46fe6f430"
}
Response409
json
{
  "type": "conflict",
  "code": "conflict",
  "detail": "A project label with this name already exists in this workspace.",
  "id": "2b6e9d14-7c3a-4f85-b0e2-9a1d5c8f6e37"
}