Unarchive a task
Restores an archived task to the active lists — the archive operation with archive: false, exactly as the MCP archive_task tool exposes it. Supports the optional Idempotency-Key header.
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}$Idempotency-Key?stringOptional client-generated key (1-255 visible ASCII characters; a UUID works) making this POST safely retryable. Retrying with the SAME key and byte-identical body within 24h replays the stored first response (marked Idempotency-Replayed: true, never re-executed, never charged against quota). The same key with a different body answers 422 idempotency_key_reused; a retry racing the first execution answers 409 idempotency_in_progress. Omitting the header executes normally with no idempotency guarantee.
1 <= length <= 255The unarchived 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 POST 'https://app.nowgetitdone.com/v1/tasks/T-123/unarchive'{ "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"}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…
List task history GET
Cursor-paginated, read-only version history of a task, newest first — every content change (in-app, MCP or this API) is an immutable version snapshot. This is…