Skip to content

Log progress on a tracked task​

POST
/api/tasks/{id}/progress

Records progress on a task with progress_target > 1 (REDESIGN-V03 §5).

A sub-target increment is NOT a completion: it dispatches
task.progressed, never task.completed, and the task stays open until
its period boundary. Returns 400 if the task is not tracked.

If the quota's period has ended but the rollover job has not run yet
(it runs every few minutes), the period is closed first, so a +1 just
after midnight counts for the new day. Progress logged today is also
recorded in the quota's quota_day_state (it clears a weekly/monthly
quota prompt for the day); undo restores both.

Authorizations​

bearerAuth

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

Type
HTTP (bearer)

Request Body​

application/json
JSON
{
"delta": 1
}

Responses​

Updated 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,
"met": true,
"description": "3/2"
}
}

Samples​

Powered by VitePress OpenAPI