Skip to content

Mark task undone (reopen / put back)​

POST
/api/tasks/{id}/undone

One-off task: reopens it. Recurring task: puts back its most recent
completion — the occurrence returns to the due date it had and the
completion counts roll back one. Refuses (400) when the task's due date
has changed since that completion, or when there is nothing to put back.
Logged as an undoable action either way.

Refuses (400) a quota (2026-09-24): a quota's completions are the period
rollover's record of a met period, and putting one back deleted that
record while the period stayed closed. Correct a count with
POST /api/tasks/{id}/progress and delta: -1 instead.

Authorizations​

bearerAuth

API token created via POST /api/tokens or the db:create-token CLI command

Type
HTTP (bearer)

Responses​

Reopened task

application/json
JSON
{
"data": {
"id": 0,
"user_id": 0,
"project_id": 0,
"title": "string",
"original_title": "string",
"short_title": "string",
"done": true,
"done_at": "string",
"priority": 0,
"due_at": "string",
"rrule": "string",
"recurrence_mode": "string",
"anchor_time": "string",
"anchor_dow": 0,
"anchor_dom": 0,
"original_due_at": "string",
"target_at": "string",
"deadline_at": "string",
"horizon": "string",
"horizon_set_at": "string",
"last_considered_at": "string",
"segment_deferred_at": "string",
"segment_targeted_at": "string",
"target_set_at": "string",
"target_auto": true,
"occurrence_at": "string",
"deadline_nag_off": true,
"auto_snooze_minutes": 0,
"deleted_at": "string",
"archived_at": "string",
"labels": [
"string"
],
"notes": "string",
"progress_target": 0,
"progress_current": 0,
"progress_period_start": "string",
"quota_prompt_config": {
"enabled": true,
"slot_id": 0,
"numbers": {
"additionalProperties": 0
}
},
"quota_day_state": {
"date": "2026-09-24",
"logged": 0,
"did": [
"string"
],
"considered": [
"string"
],
"did_applied": {
"additionalProperties": 0
}
},
"completion_count": 0,
"skip_count": 0,
"first_completed_at": "string",
"last_completed_at": "string",
"created_at": "string",
"updated_at": "string",
"is_recurring": true
}
}

Samples​

Powered by VitePress OpenAPI