Skip to content

Add or remove release labels ​

POST/api/v2/workspaces/{slug}/releases/{pk}/labels/

Releases group shipped work and carry a changelog. Apply labels to a workspace release and take labels off it in one request. The v2 release label catalog lists only workspace-level labels. Project-scoped labels, created in the app or through v1, don't appear there, but this endpoint accepts their ids too.

The API runs remove first, then add, and answers with what changed:

  • removed lists the ids from remove that were on the release. The API ignores ids that weren't on it.
  • added lists every id from add that matched a release label in the workspace, workspace-level or project-scoped, including labels the release already had. The API skips ids that don't match a label and doesn't return an error for them.

Compare added with what you sent to find ids that were skipped. To read the labels on the release afterward, use List a release's labels, or read label_ids on the release. For a project release, use Add or remove project release labels.

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 release id.

Body Parameters ​

add:optionalarray of string (uuid)

Ids of release labels to apply. Defaults to an empty array.

remove:optionalarray of string (uuid)

Ids of release labels to take off. Defaults to an empty array.

Scopes ​

releases:write

Errors ​

StatusCodeCause
400invalid_requestadd or remove isn't an array, or an entry 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 doesn't allow this.
404not_foundNo such resource, or it's outside your tenant.
406not_acceptableThe Accept header asks for a representation the API can't produce.
409governance_migration_in_progressA governance migration is running in this workspace, so writes are paused. 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.
Add or remove release labels
bash
curl -X POST \
  "https://api.plane.so/api/v2/workspaces/my-team/releases/9c1f0b3d-6d2e-4c9a-8b41-2f7e5a0d6c88/labels/" \
  -H "X-Api-Key: $PLANE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "add": [
    "f960d3c2-8524-4a41-b8eb-055ce4be2a7f"
  ],
  "remove": [
    "f960d3c2-8524-4a41-b8eb-055ce4be2a7f"
  ]
}'
Response200
json
{
  "added": ["f960d3c2-8524-4a41-b8eb-055ce4be2a7f"],
  "removed": ["f960d3c2-8524-4a41-b8eb-055ce4be2a7f"]
}