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 returns 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"]
}