Deze referentie is alleen in het Engels. Naar het Nederlandse REST API-overzicht

Diese Referenz gibt es nur auf Englisch. Zur deutschen REST-API-Übersicht

Cette référence existe uniquement en anglais. Aller à la présentation de l'API REST en français

Esta referencia solo está en inglés. Ir a la introducción de la API REST en español

PATCH/tasks/{task}

Update a task

PATCHhttps://<your-url>/api/v2/tasks/{task}

MCP id tasks.updateAlso on this path: GET Read a task, DELETE Delete a task

View as Markdown openapi.json

Partially updates a task: absent keys are untouched and an empty body is rejected.

Access

Token scope
api:write:kanban

Without it: 403 insufficient-token-scope.

Permission
kanban::manage_self

Without it: 403 insufficient-permission.

Rate cost
1 unit, write bucket. A write costs the same whatever view you ask for.
Also
Accepts If-Match. Never cached: private, no-store. Unknown body keys are refused, never dropped.

Both are checked, scope first. A token never does more than its user. How access is checked

A status change is a plain PATCH, not an action. Note that the response body can differ from the request body: status and is_finished are cross-synced on every write, so sending is_finished: true answers status: "finished", moving status off finished answers is_finished: false, and re-opening a finished task without naming a status answers status: "active". status wins when both are sent. budget_id is accepted at create time only, so a task cannot be re-budgeted or moved to another project here; user_id, team_id and order_column are not writable at all, which means a task cannot be reassigned to another employee through the API and there is no way to reorder a board. The write also bumps the owning project's updated_at, so the project's ETag changes and it reappears in an incremental filter[updated_at][gte] window, and it lands in that project's activity timeline rather than a timeline of its own. Send If-Match with the ETag from your last read to detect a concurrent edit, which answers 412.

Path parameters

taskintegerRequired

The Task's numeric id.

Query parameters

Unknown parameters are refused with 400, naming the parameter.

viewstring

Which field set to render.

summarydetaildefault

Request headers

X-Request-Idstringpattern

A correlation id of your own. It is recorded in our logs next to the server's request id but never returned: the response header always carries the server's id. A value that does not match the pattern is discarded silently, never rejected.

If-Matchstring

The ETag a write is conditional on. A stale validator is 412 precondition-failed.

Request body

Unknown keys are refused with 422, naming the key.

due_datedate (YYYY-MM-DD) or null

Day the task is due. Required when creating a task through the API, and clearable afterwards; tasks created in plnnrly may carry null.

minutesinteger≥ 0

Estimated effort, in minutes.

descriptionstring≤ 255

Short description shown on the kanban card. This is the task's label and the only field ?q= searches.

commentstring or null≤ 255

Optional longer comment on the card, capped at 255 characters.

statusstring

Kanban column the card sits in.

on-hold
Paused, waiting on something off the board.
new
The default for a new card: not picked up yet.
active
Being worked on.
internal-test
Awaiting internal review or testing.
external-test
With the customer for acceptance.
finished
Done. The only status for which is_finished is true.

New values may be added.

is_finishedboolean

Whether the task is done. Cross-synced with status on every write: setting status to finished sets this true and any other status sets it false, while setting this false on a finished task moves status back to active. status wins when both are sent.

is_billableboolean

Whether time logged on this task is billable. Defaults to true when a task is created through the API, regardless of the budget's own setting.

Response 200

Returns a Task in the detail view.

Headers

ETag
A strong validator of exactly this representation.
RateLimit
The IETF httpapi-ratelimit-headers form of your remaining allowance on the tightest bucket this request touched.
RateLimit-Policy
The ceiling and window of that bucket, as <limit>;w=<seconds>.
X-Request-Id
The server-generated ULID correlating this response with our logs.

Every response also carries Cache-Control, Vary, X-Content-Type-Options, X-Plnnrly-Api-Version, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Headers and versioning

Errors

7 errors every operation can return: 400, 401, 404, 406, 429, 500, 503

This path allows GET, PATCH, DELETE. Anything else answers 405.