> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.coperniq.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.coperniq.io/_mcp/server.

## Label work orders

### Updated: `PATCH` a work order with `labels`

You can now set a work order's labels through the API, the same way you can in Coperniq. This works on the project, opportunity, request, account and client work-order `PATCH` endpoints, for example `PATCH /projects/{project_id}/work-orders/{work_order_id}`.

```json
{ "labels": [12, 34] }
```

* `labels` is an array of label IDs and **replaces** the work order's full label set. Include every label that should stay.
* The order is kept. The first label is the primary (display) label.
* Send `[]` to remove all labels. Leave `labels` out to keep them unchanged.
* Send up to 20 unique IDs.

Every ID must be an existing `WORK`-type label in your company. If one isn't, the request returns `400` with `field: "labels"` and lists the invalid IDs, and the work order is not changed. Use `GET /labels?type=WORK` to find IDs, and `POST /labels` to create a label.

Labels are not accepted when you create a work order. A new work order gets the labels of its template, and you can `PATCH` it afterwards.