Tasks

Tasks are the core unit of work in Pulse GTD. Each task can be categorized by urgency, importance, and state, assigned to projects and life buckets, and optionally shared with family members.

GET /api/v1/tasks

Retrieve a list of tasks for the authenticated user. Supports filtering by date range, completion status, and shared visibility.

Query Parameters

ParameterTypeDescription
datestringFilter tasks for a specific date (ISO 8601 format, e.g. 2026-03-22)
date_fromstringStart of date range filter (inclusive)
date_tostringEnd of date range filter (inclusive)
completedbooleanFilter by completion status
sharedbooleanInclude tasks shared via family projects

Response

[
  {
    "id": "clx1a2b3c...",
    "title": "Review quarterly goals",
    "date": "2026-03-22",
    "time_label": "Morning",
    "minutes": 30,
    "urgency": "Urgent",
    "importance": "Important",
    "state": "Flow",
    "completed": false,
    "project_id": "clx4d5e6f...",
    "bucket_ids": ["clx7g8h9i..."],
    "is_review": false,
    "review_type": null,
    "sort_order": 0,
    "assignee_id": null,
    "createdAt": "2026-03-20T10:00:00.000Z",
    "updatedAt": "2026-03-20T10:00:00.000Z"
  }
]

POST /api/v1/tasks

Create a new task.

Request Body

{
  "title": "Review quarterly goals",
  "date": "2026-03-22",
  "time_label": "Morning",
  "minutes": 30,
  "urgency": "Urgent",
  "importance": "Important",
  "state": "Flow",
  "completed": false,
  "project_id": "clx4d5e6f...",
  "bucket_ids": ["clx7g8h9i..."],
  "is_review": false,
  "review_type": null,
  "sort_order": 0,
  "assignee_id": null
}

Fields

FieldTypeRequiredDescription
titlestringYesThe task title
datestringNoScheduled date (ISO 8601)
time_labelstringNoTime of day label (e.g. Morning, Afternoon)
minutesnumberNoEstimated duration in minutes
urgencystringNoOne of: Urgent, Not Urgent, Habit
importancestringNoOne of: Important, Not Important, Moved the Needle
statestringNoOne of: Flow, Quick, Easy, Personal
completedbooleanNoWhether the task is completed
project_idstringNoAssociated project ID
bucket_idsstring[]NoAssociated life bucket IDs
is_reviewbooleanNoWhether this task is a review task
review_typestringNoReview type if is_review is true
sort_ordernumberNoSort position within the task list
assignee_idstringNoFamily member ID to assign the task to

Response

{
  "id": "clx1a2b3c...",
  "title": "Review quarterly goals",
  "date": "2026-03-22",
  "time_label": "Morning",
  "minutes": 30,
  "urgency": "Urgent",
  "importance": "Important",
  "state": "Flow",
  "completed": false,
  "project_id": "clx4d5e6f...",
  "bucket_ids": ["clx7g8h9i..."],
  "is_review": false,
  "review_type": null,
  "sort_order": 0,
  "assignee_id": null,
  "createdAt": "2026-03-22T10:00:00.000Z",
  "updatedAt": "2026-03-22T10:00:00.000Z"
}

GET /api/v1/tasks/:id

Retrieve a single task by ID.

Response

{
  "id": "clx1a2b3c...",
  "title": "Review quarterly goals",
  "date": "2026-03-22",
  "time_label": "Morning",
  "minutes": 30,
  "urgency": "Urgent",
  "importance": "Important",
  "state": "Flow",
  "completed": false,
  "project_id": "clx4d5e6f...",
  "bucket_ids": ["clx7g8h9i..."],
  "is_review": false,
  "review_type": null,
  "sort_order": 0,
  "assignee_id": null,
  "createdAt": "2026-03-20T10:00:00.000Z",
  "updatedAt": "2026-03-20T10:00:00.000Z"
}

PATCH /api/v1/tasks/:id

Update an existing task. Only include the fields you want to change.

Request Body

{
  "title": "Review quarterly goals (updated)",
  "completed": true
}

All fields from the create endpoint are accepted. Only provided fields will be updated.

Response

Returns the updated task object.

DELETE /api/v1/tasks/:id

Permanently delete a task.

Response

{
  "success": true
}