Skip to content

Update a workspace property option

PATCH/api/v2/workspaces/{slug}/work-item-properties/{property_id}/options/{pk}/

Change one option on a workspace-level OPTION property — rename it, reword its description, or move the property's default onto it.

The update is partial: fields you omit are left untouched, and omitting a field is not the same as sending null. Renaming an option keeps its id, so every work item already holding the option keeps its value.

Workspace mode only

This write requires the workspace to manage work item types at the workspace level. In project mode it returns 409 work_item_types_managed_at_project — update the option through the project-level endpoint instead. See Work item type modes.

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.

property_id:requiredstring (uuid)

The workspace-level property the option belongs to. See Workspace work item properties.

pk:requiredstring (uuid)

The option to update. It is looked up within the property, so an option id under the wrong property_id is a 404.

Body Parameters

Every field is optional. Send only what you are changing.

name:optionalstring

The choice as it is displayed. Maximum 255 characters.

description:optionalstring

Free-form text explaining when to pick this choice.

is_default:optionalboolean

Make this the property's default choice, or send false to clear it. At most one option per property can be the default: setting it while a different option already holds it returns 400 validation_error, so clear the current default first and then set the new one.

external_id:optionalstring

Your system's identifier for this option, for sync and import correlation. Maximum 255 characters.

external_source:optionalstring

The system external_id came from, for example github or jira. Maximum 255 characters.

sort_order is not accepted here — an option's position is fixed at creation time and cannot be moved through the API.

Scopes

workspaces.work_item_properties:write

Errors

StatusCodeCause
400validation_errorA field over 255 characters, or is_default: true when another option on the property is already the default.
401unauthorizedMissing or invalid credentials.
403forbiddenYour role or token scope can't write this workspace's properties.
404resource_not_foundNo such workspace, workspace-level property, or option — or it's outside your tenant.
409work_item_types_managed_at_projectThis workspace manages work item types at the project level. Use the project-level options endpoint.
429rate_limitedThrottled. Honor the Retry-After header before retrying.
Update a property option
bash
curl -X PATCH \
  "https://api.plane.so/api/v2/workspaces/my-team/work-item-properties/9d0e1f3b-6a72-4c85-9e4d-2b7f1a6c8d54/options/5e8b7d21-4a09-4c63-b7f2-90d1c3a86e57/" \
  -H "X-Api-Key: $PLANE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Pre-production",
  "description": "Reported on the shared pre-release environment"
}'
Response200
json
{
  "id": "5e8b7d21-4a09-4c63-b7f2-90d1c3a86e57",
  "name": "Pre-production",
  "description": "Reported on the shared pre-release environment",
  "is_default": false,
  "sort_order": 20000,
  "external_id": null,
  "external_source": null
}
Response400
json
{
  "type": "https://api.plane.so/errors/validation_error",
  "title": "Validation Error",
  "status": 400,
  "code": "validation_error",
  "detail": "Only one option can be the default."
}

Moving the default

There is no automatic hand-off, so promoting a new default takes two requests:

  1. PATCH the option that currently has is_default: true with {"is_default": false}.
  2. PATCH the new option with {"is_default": true}.

Run it the other way round and the promotion is the request that fails, leaving the existing default untouched. Nothing is half-applied either way.