GetItDoneGetItDone Docs
API ReferenceTask occurrences

Complete or skip one day

PATCH
/v1/tasks/{task_id}/occurrences/{occurrence_date}

Marks ONE day of a repeating task completed or skipped — the SAME shared operation the MCP complete_task_occurrence tool executes. The day may be in the PAST ("I brushed my teeth yesterday") or a scheduled FUTURE day finished early; neither breaks the chain, and neither touches any other day or the task's own status. Re-sending the state a day is already in is a no-op success, so retries are safe. A day the schedule does not produce (or a task that does not repeat) answers 404 resource_not_found.

Authorization

bearerAuth
headerAuthorizationBearer <token>

A gid_ API key (Profile → API Keys) or an OAuth 2.1 access token.

Path Parameters

task_id*string

Task short id, e.g. T-123 (a bare 123 is also accepted on input).

Match^(?:T-)?[0-9]{1,12}$
occurrence_date*string

The calendar day the occurrence is for, as YYYY-MM-DD in the recurrence timezone.

Match^\d{4}-\d{2}-\d{2}$

Request Body

application/json
  1. body

The new state for this one day of the series.

status*string

COMPLETED = the work for that day is done (records the completion instant and actor). SKIPPED = it will not be done and the day is closed rather than rolled over.

Value in"COMPLETED""SKIPPED"

Response Body

The updated occurrence.

application/json
  1. response

One DAY of a repeating task, with its own completion state.

task_id*string

The repeating task's short id.

occurrence_date*string

The calendar day the occurrence is for, as YYYY-MM-DD in the recurrence timezone.

Match^\d{4}-\d{2}-\d{2}$
sequence*integer

1-based ordinal of this day within the series — what an RRULE COUNT limit and streak math count.

Range-9007199254740991 <= value <= 9007199254740991
status*TaskOccurrenceStatus

Per-day state of one occurrence of a repeating task. PENDING is written by materialization and MISSED by the rollover sweep — only COMPLETED and SKIPPED are user-written.

Value in"PENDING""COMPLETED""SKIPPED""MISSED"
completed_at*|

The INSTANT the user completed this day, ISO-8601 UTC, or null. Deliberately distinct from occurrence_date: completing Tuesday on Monday records both truths.

Example Request
curl -X PATCH 'https://app.nowgetitdone.com/v1/tasks/T-123/occurrences/2026-08-06' \  -H 'Content-Type: application/json' \  -d '{  "status": "COMPLETED"}'
Example Response
{  "task_id": "T-123",  "occurrence_date": "2026-08-06",  "sequence": 12,  "status": "PENDING",  "completed_at": "2019-08-24T14:15:22Z"}