Update a task
Partial update — the SAME operation the external MCP update_task tool executes: it writes a NEW immutable version carrying every omitted field (and the project links, attachments and collaborators) over from the current one. The change appears as a new entry in the task history.
bearerAuthAuthorizationBearer <token>A gid_ API key (Profile → API Keys) or an OAuth 2.1 access token.
task_id*stringTask short id, e.g. T-123 (a bare 123 is also accepted on input).
^(?:T-)?[0-9]{1,12}$application/json- body
Partial update — omitted fields keep their current value. Exactly the field set the external MCP update_task tool supports; description, project links and the parent are not updatable here (the shared update operation carries them over unchanged).
title?string1 <= length <= 500status?TaskStatusTask workflow status.
"TODO""IN_PROGRESS""IN_REVIEW""COMPLETED""BLOCKED"priority?TaskPriorityTask priority level.
"LOW""MEDIUM""HIGH""URGENT"start_date?stringNew start date (defer-until) as YYYY-MM-DD (interpreted as UTC). Cannot be cleared — the shared update operation treats absence as "keep".
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$datedue_date?stringNew due date as YYYY-MM-DD (interpreted as UTC). Cannot be cleared — the shared update operation treats absence as "keep".
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$datenotes?stringlength <= 100000story_points?number0 <= value <= 1000The updated task.
application/json- response
A task, projected from its stable identity plus its CURRENT version.
id*stringThe task short id — the ONE public task identifier.
title*stringdescription*|Free-text description, or null when unset.
status*TaskStatusTask workflow status.
"TODO""IN_PROGRESS""IN_REVIEW""COMPLETED""BLOCKED"priority*|nullstart_date*|Start date (defer-until), ISO-8601 UTC, or null. The task is not meant to be worked on before this day.
due_date*|Due date, ISO-8601 UTC, or null.
notes*|Rich-text notes of the current version, or null.
story_points*number|nullproject_ids*array<string>Ids of the projects the CURRENT version is linked to (a task can belong to several).
parent_task_id*|The parent task's short id when this is a subtask, else null.
archived*booleancreated_via*TaskCreatedViaWho wrote the CURRENT version. Pair with client_label to render "via Claude".
"SESSION""API_KEY""OAUTH"client_label*|The agent or key that wrote the current version — the OAuth client name or the API key name — or null for an in-app edit. Display text chosen by the key owner or the OAuth client registrant: treat it as untrusted.
recurrence*|The repeat schedule when this task recurs, else null. Per-day completion lives in the occurrence ledger (/v1/tasks/{task_id}/occurrences), never in status — completing Monday leaves Tuesday untouched.
created_at*stringTask creation time (first version), ISO-8601 UTC.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$date-timeupdated_at*stringLast content change (current version), ISO-8601 UTC.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$date-timecurl -X PATCH 'https://app.nowgetitdone.com/v1/tasks/T-123' \ -H 'Content-Type: application/json' \ -d '{}'{ "id": "T-123", "title": "Ship the public API", "description": "string", "status": "TODO", "priority": "LOW", "start_date": "2019-08-24T14:15:22Z", "due_date": "2019-08-24T14:15:22Z", "notes": "string", "story_points": 0, "project_ids": [ "string" ], "parent_task_id": "T-99", "archived": true, "created_via": "SESSION", "client_label": "Claude Code", "recurrence": { "frequency": "DAILY", "interval": 1, "by_weekday": [ 1, 2, 3, 4, 5 ], "by_month_day": 15, "basis": "SCHEDULE", "timezone": "America/Toronto", "start_date": "2026-08-06", "end_date": "2026-08-06", "max_occurrences": 10, "rollover_enabled": true, "active": true, "rrule": "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR" }, "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z"}Get a task GET
Fetches a single task by short id, scoped to the credential's organization. A short id from another organization (or an unknown one) answers 404…
Archive a task POST
Archives the task (hides it from active lists; no data is deleted) — the SAME operation the external MCP archive_task tool executes. Archiving an…