ts.tsk.update

Update task attributes (partial update).

Update task attributes (partial update).

Requires authentication

Description

Updates one or more fields of an existing task. Only provided fields are changed; omitted fields remain unchanged.

Status transitions are validated:

  • planned -> active, canceled
  • active -> done, canceled, planned
  • done -> active (reopen)
  • canceled -> planned (reopen)

Lifecycle timestamps are set automatically:

  • started_at: set when status changes to active
  • completed_at: set when status changes to done
  • canceled_at: set when status changes to canceled

To unassign or unlink, pass an empty string for assignee_id or endeavour_id.

Parameters

NameTypeRequiredDefaultDescription
idstringYesTask ID to update
titlestringNew title
descriptionstringNew description
statusstringNew status: planned, active, done, canceled
endeavour_idstringNew endeavour (empty string to unlink)
assignee_idstringNew assignee resource (empty string to unassign)
estimatenumberEstimated hours
actualnumberActual hours spent
due_datestringDue date (ISO 8601, empty string to clear)
canceled_reasonstringReason for cancellation (when setting status to canceled)
metadataobjectMetadata to set (replaces existing metadata)

Response

Returns the task ID and list of fields that were updated.

{
  "id": "tsk_68e9623ade9b1631...",
  "updated_at": "2026-02-06T14:00:00Z",
  "updated_fields": [
    "status",
    "title"
  ]
}

Errors

CodeDescription
not_authenticatedNo active login for this session
not_foundTask with this ID does not exist
invalid_transitionInvalid status transition (e.g., planned -> done)

Examples

Start working on a task

Transition a task from planned to active.

Request:

{
  "id": "tsk_68e9623ade9b1631...",
  "status": "active"
}

Response:

{
  "id": "tsk_68e9623ade9b1631...",
  "updated_at": "2026-02-06T14:00:00Z",
  "updated_fields": [
    "status"
  ]
}

Complete a task

Mark an active task as done.

Request:

{
  "actual": 3.5,
  "id": "tsk_68e9623ade9b1631...",
  "status": "done"
}

Response:

{
  "id": "tsk_68e9623ade9b1631...",
  "updated_at": "2026-02-06T16:30:00Z",
  "updated_fields": [
    "status",
    "actual"
  ]
}